diff --git a/network/csync2/csync2-2.0-rc1-upstream-fixes-b7490b4.patch b/network/csync2/csync2-2.0-rc1-upstream-fixes-b7490b4.patch new file mode 100644 index 000000000..a0a47b3ac --- /dev/null +++ b/network/csync2/csync2-2.0-rc1-upstream-fixes-b7490b4.patch @@ -0,0 +1,738 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../csync2/csync2-2.0-rc1-upstream-fixes-b7490b4.patch +# Copyright (C) 2011 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From e5190e7660a7aff9f435c224b5852d825c1148fe Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 11:15:38 +0100 +Subject: [PATCH 1/9] fix inetd protocol breakage + +Don't csync_debug(0,...) to often, it breaks protocol on inetd, +because with inetd, stderr and stdout point to the same socket. + +Any "status" or "progress" or "debug" message printed to stderr +ends up on the socket, and is interpreted as protocol error +by the client. + +So don't do that. +--- + daemon.c | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/daemon.c b/daemon.c +index 57dfe49..4fadb73 100644 +--- a/daemon.c ++++ b/daemon.c +@@ -119,11 +119,11 @@ int csync_file_backup(const char *filename) + int fd_in, fd_out, i; + int lastSlash; + mode_t mode; +- csync_debug(0, "backup\n"); ++ csync_debug(1, "backup\n"); + // Skip generation of directories + rc = stat(filename, &buf); + if (S_ISDIR(buf.st_mode)) { +- csync_debug(0, "directory. Skip generation \n"); ++ csync_debug(1, "directory. Skip generation \n"); + return 0; + } + +@@ -149,7 +149,7 @@ int csync_file_backup(const char *filename) + + backup_filename[bak_dir_len+i] = 0; + +- csync_debug(0, "mkdir %s \n", backup_filename); ++ csync_debug(1, "mkdir %s \n", backup_filename); + + mkdir(backup_filename, mode); + // Dont check the empty string. +@@ -175,7 +175,7 @@ int csync_file_backup(const char *filename) + snprintf(backup_otherfilename+bak_dir_len+filename_len, 10, ".%d", i); + + rc = rename(backup_filename, backup_otherfilename); +- csync_debug(0, "renaming backup files '%s' to '%s'. rc = %d\n", backup_filename, backup_otherfilename, rc); ++ csync_debug(1, "renaming backup files '%s' to '%s'. rc = %d\n", backup_filename, backup_otherfilename, rc); + + } + +@@ -192,11 +192,11 @@ int csync_file_backup(const char *filename) + return 1; + } + +- csync_debug(0,"Copying data from %s to backup file %s \n", filename, backup_filename); ++ csync_debug(1,"Copying data from %s to backup file %s \n", filename, backup_filename); + +- int rc = csync_copy_file(fd_in, fd_out); ++ rc = csync_copy_file(fd_in, fd_out); + if (rc != 0) { +- csync_debug(0, "csync_backup error 2\n"); ++ csync_debug(1, "csync_backup error 2\n"); + + snprintf(error_buffer, 1024, + "Write error while backing up '%s': %s\n", +@@ -208,10 +208,10 @@ int csync_file_backup(const char *filename) + // return 1; + } + csync_setBackupFileStatus(backup_filename, bak_dir_len); +- csync_debug(0, "csync_backup loop end\n"); ++ csync_debug(1, "csync_backup loop end\n"); + } + } +- csync_debug(0, "csync_backup end\n"); ++ csync_debug(1, "csync_backup end\n"); + return 0; + } + +-- +1.7.2.3 + +From 2d459f6cab22b9c4f682b02b6b21e12cf27c23df Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 11:43:02 +0100 +Subject: [PATCH 2/9] fix recursive check for deleted files + +Fix breakage by 448e725a61cdb869b825cacce08f0974e2a4a408: +just dropping "or 1" (for "give me all you have") +because of "ERROR: argument of OR must be type boolean, not type integer" +is wrong: it results in "give me just the exact match" ;-( + +Correct fix: "OR TRUE". +--- + check.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/check.c b/check.c +index fc3a05b..6d64c3a 100644 +--- a/check.c ++++ b/check.c +@@ -215,7 +215,7 @@ void csync_check_del(const char *file, int recursive, int init_run) + + if ( recursive ) { + if ( !strcmp(file, "/") ) +- ASPRINTF(&where_rec, "") ++ ASPRINTF(&where_rec, "OR TRUE") + else + ASPRINTF(&where_rec, "UNION ALL SELECT filename from file where filename > '%s/' " + "and filename < '%s0'", +-- +1.7.2.3 + +From aec0438822f65d902b79446196112e0a7dae9efe Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 12:50:02 +0000 +Subject: [PATCH 3/9] fix compiler warnings about statement without effect (ASPRINTF macro) + +ASPRINTF and VASPRINTF macros are used +used everywhere as "void", so make it void. + +do { ... } while (0) makes it accept a ; at the end, +which is better practice, I think. +--- + check.c | 4 ++-- + csync2.c | 12 ++++++------ + csync2.h | 20 +++++++++----------- + db.c | 20 ++++++++++---------- + db_mysql.c | 2 +- + db_postgres.c | 6 +++--- + getrealfn.c | 4 ++-- + prefixsubst.c | 4 ++-- + 8 files changed, 35 insertions(+), 37 deletions(-) + +diff --git a/check.c b/check.c +index 6d64c3a..1de56f8 100644 +--- a/check.c ++++ b/check.c +@@ -215,11 +215,11 @@ void csync_check_del(const char *file, int recursive, int init_run) + + if ( recursive ) { + if ( !strcmp(file, "/") ) +- ASPRINTF(&where_rec, "OR TRUE") ++ ASPRINTF(&where_rec, "OR TRUE"); + else + ASPRINTF(&where_rec, "UNION ALL SELECT filename from file where filename > '%s/' " + "and filename < '%s0'", +- url_encode(file), url_encode(file)) ++ url_encode(file), url_encode(file)); + } + + SQL_BEGIN("Checking for removed files", +diff --git a/csync2.c b/csync2.c +index e683c61..d079c85 100644 +--- a/csync2.c ++++ b/csync2.c +@@ -588,7 +588,7 @@ int main(int argc, char ** argv) + cfgname = strdup(url_decode(para)); + } + if ( !*cfgname ) { +- ASPRINTF(&file_config, ETCDIR "/csync2.cfg") ++ ASPRINTF(&file_config, ETCDIR "/csync2.cfg"); + } else { + int i; + +@@ -600,7 +600,7 @@ int main(int argc, char ** argv) + return mode != MODE_INETD; + } + +- ASPRINTF(&file_config, ETCDIR "/csync2_%s.cfg", cfgname) ++ ASPRINTF(&file_config, ETCDIR "/csync2_%s.cfg", cfgname); + } + + csync_debug(2, "Config-File: %s\n", file_config); +@@ -735,11 +735,11 @@ found_a_group:; + char *where_rec = ""; + + if ( !strcmp(realname, "/") ) +- ASPRINTF(&where_rec, "or 1") ++ ASPRINTF(&where_rec, "or 1"); + else + ASPRINTF(&where_rec, "UNION ALL SELECT filename from file where filename > '%s/' " + "and filename < '%s0'", +- url_encode(pfname), url_encode(pfname)) ++ url_encode(pfname), url_encode(pfname)); + + SQL_BEGIN("Adding dirty entries recursively", + "SELECT filename FROM file WHERE filename = '%s' %s", +@@ -761,11 +761,11 @@ found_a_group:; + + if ( recursive ) { + if ( !strcmp(realname, "/") ) +- ASPRINTF(&where_rec, "or 1") ++ ASPRINTF(&where_rec, "or 1"); + else + ASPRINTF(&where_rec, "or (filename > '%s/' " + "and filename < '%s0')", +- url_encode(realname), url_encode(realname)) ++ url_encode(realname), url_encode(realname)); + } + + SQL("Mark file as to be forced", +diff --git a/csync2.h b/csync2.h +index 57431c1..1310582 100644 +--- a/csync2.h ++++ b/csync2.h +@@ -37,22 +37,20 @@ + + #define DB_SCHEMA_VERSION 0 + +-/* asprintf with test for no memory. Use these macros without trailing ';' */ ++/* asprintf with test for no memory */ + +-#define ASPRINTF(s, fmt, ...) {\ +- int __ret;\ +- if ((__ret = asprintf(s, fmt, ##__VA_ARGS__)) < 0) \ ++#define ASPRINTF(s, fmt, ...) do {\ ++ int __ret = asprintf(s, fmt, ##__VA_ARGS__);\ ++ if (__ret < 0) \ + csync_fatal("Out of memory in asprintf at %s:%d\n", __FILE__, __LINE__);\ +- __ret;\ +-} ++} while (0) + + +-#define VASPRINTF(s, fmt, args) {\ +- int __ret;\ +- if ((__ret = vasprintf(s, fmt, args)) < 0) \ ++#define VASPRINTF(s, fmt, args) do {\ ++ int __ret = vasprintf(s, fmt, args);\ ++ if (__ret < 0) \ + csync_fatal("Out of memory in vasprintf at %s:%d\n", __FILE__, __LINE__);\ +- __ret;\ +-} ++} while (0) + + + /* action.c */ +diff --git a/db.c b/db.c +index d6a58c6..68848b3 100644 +--- a/db.c ++++ b/db.c +@@ -172,7 +172,7 @@ void csync_db_sql(const char *err, const char *fmt, ...) + int rc, busyc = 0; + + va_start(ap, fmt); +- VASPRINTF(&sql, fmt, ap) ++ VASPRINTF(&sql, fmt, ap); + va_end(ap); + + in_sql_query++; +@@ -204,7 +204,7 @@ void* csync_db_begin(const char *err, const char *fmt, ...) + int rc, busyc = 0; + char *ppTail; + va_start(ap, fmt); +- VASPRINTF(&sql, fmt, ap) ++ VASPRINTF(&sql, fmt, ap); + va_end(ap); + + in_sql_query++; +@@ -309,25 +309,25 @@ char *db_default_database(char *dbdir, char *myhostname, char *cfg_name) + + #if defined(HAVE_SQLITE3) + if (cfg_name[0] != '\0') +- ASPRINTF(&db, "sqlite3://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname) ++ ASPRINTF(&db, "sqlite3://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname); + else +- ASPRINTF(&db, "sqlite3://%s/%s" DBEXTENSION, dbdir, myhostname) ++ ASPRINTF(&db, "sqlite3://%s/%s" DBEXTENSION, dbdir, myhostname); + #elif defined(HAVE_SQLITE) + if (cfg_name[0] != '\0') +- ASPRINTF(&db, "sqlite2://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname) ++ ASPRINTF(&db, "sqlite2://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname); + else +- ASPRINTF(&db, "sqlite2://%s/%s" DBEXTENSION, dbdir, myhostname) ++ ASPRINTF(&db, "sqlite2://%s/%s" DBEXTENSION, dbdir, myhostname); + #elif defined(HAVE_MYSQL) + if (cfg_name[0] != '\0') +- ASPRINTF(&db, "mysql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname) ++ ASPRINTF(&db, "mysql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname); + else +- ASPRINTF(&db, "mysql://root@localhost/csync2_%s" DBEXTENSION, myhostname) ++ ASPRINTF(&db, "mysql://root@localhost/csync2_%s" DBEXTENSION, myhostname); + + #elif defined(HAVE_POSTGRES) + if (cfg_name[0] != '\0') +- ASPRINTF(&db, "pgsql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname) ++ ASPRINTF(&db, "pgsql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname); + else +- ASPRINTF(&db, "pgsql://root@localhost/csync2_%s" DBEXTENSION, myhostname) ++ ASPRINTF(&db, "pgsql://root@localhost/csync2_%s" DBEXTENSION, myhostname); + + #else + #error "No database backend available. Please install either libpg, libmysqlclient or libsqlite, reconfigure and recompile" +diff --git a/db_mysql.c b/db_mysql.c +index c15a219..1b6d09e 100644 +--- a/db_mysql.c ++++ b/db_mysql.c +@@ -140,7 +140,7 @@ int db_mysql_open(const char *file, db_conn_p *conn_p) + if (f.mysql_real_connect_fn(db, host, user, pass, database, port, unix_socket, 0) == NULL) { + if (f.mysql_errno_fn(db) == ER_BAD_DB_ERROR) { + if (f.mysql_real_connect_fn(db, host, user, pass, NULL, port, unix_socket, 0) != NULL) { +- ASPRINTF(&create_database_statement, "create database %s", database) ++ ASPRINTF(&create_database_statement, "create database %s", database); + + csync_debug(2, "creating database %s\n", database); + if (f.mysql_query_fn(db, create_database_statement) != 0) +diff --git a/db_postgres.c b/db_postgres.c +index 13a7a41..b40bdfb 100644 +--- a/db_postgres.c ++++ b/db_postgres.c +@@ -140,7 +140,7 @@ int db_postgres_open(const char *file, db_conn_p *conn_p) + return rc; + + ASPRINTF(&pg_conn_info, "host='%s' user='%s' password='%s' dbname='%s' port=%d", +- host, user, pass, database, port) ++ host, user, pass, database, port); + + pg_conn = f.PQconnectdb_fn(pg_conn_info); + if (pg_conn == NULL) +@@ -151,7 +151,7 @@ int db_postgres_open(const char *file, db_conn_p *conn_p) + free(pg_conn_info); + + ASPRINTF(&pg_conn_info, "host='%s' user='%s' password='%s' dbname='postgres' port=%d", +- host, user, pass, port) ++ host, user, pass, port); + + pg_conn = f.PQconnectdb_fn(pg_conn_info); + if (pg_conn == NULL) +@@ -186,7 +186,7 @@ int db_postgres_open(const char *file, db_conn_p *conn_p) + free(pg_conn_info); + + ASPRINTF(&pg_conn_info, "host='%s' user='%s' password='%s' dbname='%s' port=%d", +- host, user, pass, database, port) ++ host, user, pass, database, port); + + pg_conn = f.PQconnectdb_fn(pg_conn_info); + if (pg_conn == NULL) +diff --git a/getrealfn.c b/getrealfn.c +index 1f6840c..b2bc0b7 100644 +--- a/getrealfn.c ++++ b/getrealfn.c +@@ -54,7 +54,7 @@ char *getrealfn(const char *filename) + if ( *tempfn != '/' ) { + char *t2, *t1 = my_get_current_dir_name(); + +- ASPRINTF(&t2, "%s/%s", t1, tempfn) ++ ASPRINTF(&t2, "%s/%s", t1, tempfn); + free(t1); + free(tempfn); + tempfn = t2; +@@ -111,7 +111,7 @@ char *getrealfn(const char *filename) + if ( !chdir(tempfn) ) { + char *t2, *t1 = my_get_current_dir_name(); + if ( st_mark ) { +- ASPRINTF(&t2, "%s/%s", t1, st_mark+1) ++ ASPRINTF(&t2, "%s/%s", t1, st_mark+1); + free(tempfn); free(t1); tempfn = t2; + } else { + free(tempfn); tempfn = t1; +diff --git a/prefixsubst.c b/prefixsubst.c +index 9fc1067..d003bb5 100644 +--- a/prefixsubst.c ++++ b/prefixsubst.c +@@ -46,7 +46,7 @@ const char *prefixsubst(const char *in) + ringbuff_counter = (ringbuff_counter+1) % RINGBUFF_LEN; + if (ringbuff[ringbuff_counter]) + free(ringbuff[ringbuff_counter]); +- ASPRINTF(&ringbuff[ringbuff_counter], "%s%s", p->path, path) ++ ASPRINTF(&ringbuff[ringbuff_counter], "%s%s", p->path, path); + return ringbuff[ringbuff_counter]; + } + } +@@ -79,7 +79,7 @@ const char *prefixencode(const char *filename) { + ringbuff_counter = (ringbuff_counter+1) % RINGBUFF_LEN; + if (ringbuff[ringbuff_counter]) + free(ringbuff[ringbuff_counter]); +- ASPRINTF(&ringbuff[ringbuff_counter], "%%%s%%%s", p->name, filename+p_len) ++ ASPRINTF(&ringbuff[ringbuff_counter], "%%%s%%%s", p->name, filename+p_len); + return ringbuff[ringbuff_counter]; + } + } +-- +1.7.2.3 + +From 2cb983a1ccf36b0d5b6d117e8e1e8770d8e3e013 Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 13:14:11 +0000 +Subject: [PATCH 4/9] suppress compiler warning about unused yyinput/yyunput + +--- + cfgfile_scanner.l | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/cfgfile_scanner.l b/cfgfile_scanner.l +index 345a45b..5e93f7c 100644 +--- a/cfgfile_scanner.l ++++ b/cfgfile_scanner.l +@@ -25,9 +25,13 @@ + #define MAX_INCLUDE_DEPTH 10 + YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; + int include_stack_ptr = 0; ++ ++#define YY_NO_INPUT 1 ++#define YY_NO_UNPUT 1 + %} + + %option noyywrap yylineno ++%option nounput + %x STRING INCL + + %% +-- +1.7.2.3 + +From d9b8e2fbfc8cf99e3a9a920e06a4e349c9ebebeb Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 13:20:29 +0000 +Subject: [PATCH 5/9] fix compiler warnings about unused or uninitialized variables + +--- + conn.c | 2 +- + daemon.c | 3 +-- + rsync.c | 2 -- + update.c | 1 - + 4 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/conn.c b/conn.c +index 113d5d9..3f06005 100644 +--- a/conn.c ++++ b/conn.c +@@ -52,7 +52,7 @@ int conn_connect(const char *peername) + { + struct addrinfo hints; + struct addrinfo *result, *rp; +- int sfd, s, on = 1; ++ int sfd, s; + + /* Obtain address(es) matching host/port */ + memset(&hints, 0, sizeof(struct addrinfo)); +diff --git a/daemon.c b/daemon.c +index 4fadb73..98a5b47 100644 +--- a/daemon.c ++++ b/daemon.c +@@ -117,7 +117,7 @@ int csync_file_backup(const char *filename) + char backup_filename[bak_dir_len + filename_len + 10]; + char backup_otherfilename[bak_dir_len + filename_len + 10]; + int fd_in, fd_out, i; +- int lastSlash; ++ int lastSlash = 0; + mode_t mode; + csync_debug(1, "backup\n"); + // Skip generation of directories +@@ -343,7 +343,6 @@ int verify_peername(const char *name, address_t *peeraddr) + sa_family_t af = peeraddr->sa.sa_family; + struct addrinfo hints; + struct addrinfo *result, *rp; +- size_t len; + int try_mapped_ipv4; + int s; + +diff --git a/rsync.c b/rsync.c +index eed2d85..86482ee 100644 +--- a/rsync.c ++++ b/rsync.c +@@ -506,9 +506,7 @@ int csync_rs_patch(const char *filename) + int backup_errno; + rs_stats_t stats; + rs_result result; +- char buffer[512]; + char *errstr = "?"; +- int rc; + char tmpfname[MAXPATHLEN], newfname[MAXPATHLEN]; + + csync_debug(3, "Csync2 / Librsync: csync_rs_patch('%s')\n", filename); +diff --git a/update.c b/update.c +index f747dd9..b2c2b85 100644 +--- a/update.c ++++ b/update.c +@@ -544,7 +544,6 @@ void csync_update_host(const char *peername, + struct textlist *tl_mod = 0, **last_tn=&tl; + char *current_name = 0; + struct stat st; +- char *myname ; + SQL_BEGIN("Get files for host from dirty table", + "SELECT filename, myname, forced FROM dirty WHERE peername = '%s' " + "ORDER by filename ASC", url_encode(peername)) +-- +1.7.2.3 + +From ec538733e9ccf2688b16592ce9579fa4e859f4fc Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 13:22:22 +0000 +Subject: [PATCH 6/9] fix compiler warnings about signedness or other type mismatch + +--- + conn.c | 6 +++--- + csync2.c | 4 ++-- + csync2.h | 2 +- + db_sqlite.c | 4 ++-- + 4 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/conn.c b/conn.c +index 3f06005..8dda10d 100644 +--- a/conn.c ++++ b/conn.c +@@ -395,7 +395,7 @@ int conn_raw_read(void *buf, size_t count) + return 0; + } + +-void conn_debug(const char *name, const unsigned char*buf, size_t count) ++void conn_debug(const char *name, const char*buf, size_t count) + { + int i; + +@@ -458,9 +458,9 @@ void conn_printf(const char *fmt, ...) + conn_write(buffer, size); + } + +-int conn_gets(char *s, int size) ++size_t conn_gets(char *s, size_t size) + { +- int i=0; ++ size_t i=0; + + while (iprivate; +- const char *result = f.sqlite3_column_text_fn(sqlite_stmt, column); ++ const unsigned char *result = f.sqlite3_column_text_fn(sqlite_stmt, column); + /* error handling */ +- return result; ++ return (const char*)result; + } + + #if defined(HAVE_SQLITE3) +-- +1.7.2.3 + +From 763561c6313e02c2ac90a8f043e84d25547f7c21 Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 13:23:06 +0000 +Subject: [PATCH 7/9] fix compiler warnings about implicit function declarations + +--- + csync2.h | 4 ++-- + db_api.c | 5 +++++ + db_api.h | 5 +++++ + db_sqlite2.h | 4 ++-- + 4 files changed, 14 insertions(+), 4 deletions(-) + +diff --git a/csync2.h b/csync2.h +index 6032240..5240d15 100644 +--- a/csync2.h ++++ b/csync2.h +@@ -113,9 +113,8 @@ extern void* csync_db_begin(const char *err, const char *fmt, ...); + extern int csync_db_next(void *vmx, const char *err, + int *pN, const char ***pazValue, const char ***pazColName); + extern void csync_db_fin(void *vmx, const char *err); +-#if defined(HAVE_LIBSQLITE3) + extern const void * csync_db_colblob(void *stmtx,int col); +-#endif ++extern char *db_default_database(char *dbdir, char *myhostname, char *cfg_name); + + + #define SQL(e, s, ...) csync_db_sql(e, s, ##__VA_ARGS__) +@@ -203,6 +202,7 @@ extern void csync_remove_old(); + /* daemon.c */ + + extern void csync_daemon_session(); ++extern int csync_copy_file(int fd_in, int fd_out); + + + /* getrealfn.c */ +diff --git a/db_api.c b/db_api.c +index f35abee..af5591c 100644 +--- a/db_api.c ++++ b/db_api.c +@@ -12,6 +12,11 @@ + #include + #include "db_api.h" + ++#include "db_mysql.h" ++#include "db_postgres.h" ++#include "db_sqlite.h" ++#include "db_sqlite2.h" ++ + #define DEADLOCK_MESSAGE \ + "Database backend is exceedingly busy => Terminating (requesting retry).\n" + +diff --git a/db_api.h b/db_api.h +index ed5d6d1..eab627b 100644 +--- a/db_api.h ++++ b/db_api.h +@@ -54,4 +54,9 @@ int db_stmt_get_column_int(db_stmt_p stmt, int column); + int db_stmt_next (db_stmt_p stmt); + int db_stmt_close(db_stmt_p stmt); + ++void db_set_logger(db_conn_p conn, void (*logger)(int lv, const char *fmt, ...)); ++int db_schema_version(db_conn_p db); ++int db_upgrade_to_schema(db_conn_p db, int version); ++const char *db_errmsg(db_conn_p conn); ++ + #endif +diff --git a/db_sqlite2.h b/db_sqlite2.h +index 24b2c32..79336a4 100644 +--- a/db_sqlite2.h ++++ b/db_sqlite2.h +@@ -1,6 +1,6 @@ + +-#ifndef DB_SQLITE_H +-#define DB_SQLITE_H ++#ifndef DB_SQLITE2_H ++#define DB_SQLITE2_H + + /* public */ + int db_sqlite2_open(const char *file, db_conn_p *conn_p); +-- +1.7.2.3 + +From 6d534181223d3fa06f2875373c5884c3c7ed5556 Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 13:23:44 +0000 +Subject: [PATCH 8/9] fix compiler warning about assignment discards qualifier from pointer target type + +--- + daemon.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/daemon.c b/daemon.c +index 98a5b47..0e35ff9 100644 +--- a/daemon.c ++++ b/daemon.c +@@ -321,13 +321,11 @@ typedef union address { + const char *csync_inet_ntop(address_t *addr) + { + char buf[INET6_ADDRSTRLEN]; +- char *pretty_print = NULL; + sa_family_t af = addr->sa.sa_family; +- pretty_print = inet_ntop(af, ++ return inet_ntop(af, + af == AF_INET ? (void*)&addr->sa_in.sin_addr : + af == AF_INET6 ? (void*)&addr->sa_in6.sin6_addr : NULL, +- &buf, sizeof(buf)); +- return pretty_print; ++ buf, sizeof(buf)); + } + + /* +-- +1.7.2.3 + +From b7490b4d2f9069e4e364c9f4824956ade4bad691 Mon Sep 17 00:00:00 2001 +From: Lars Ellenberg +Date: Wed, 9 Feb 2011 13:24:51 +0000 +Subject: [PATCH 9/9] fix compiler warning about empty snprintf format + +--- + daemon.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +diff --git a/daemon.c b/daemon.c +index 0e35ff9..2c054ed 100644 +--- a/daemon.c ++++ b/daemon.c +@@ -170,8 +170,7 @@ int csync_file_backup(const char *filename) + + if (i != 1) + snprintf(backup_filename+bak_dir_len+filename_len, 10, ".%d", i-1); +- else +- snprintf(backup_filename+bak_dir_len+filename_len, 10, ""); ++ backup_filename[bak_dir_len+filename_len] = '\0'; + snprintf(backup_otherfilename+bak_dir_len+filename_len, 10, ".%d", i); + + rc = rename(backup_filename, backup_otherfilename); +-- +1.7.2.3 + diff --git a/network/csync2/csync2.desc b/network/csync2/csync2.desc index 49850b434..5c2b3648e 100644 --- a/network/csync2/csync2.desc +++ b/network/csync2/csync2.desc @@ -2,7 +2,7 @@ [COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch. [COPY] [COPY] Filename: package/.../csync2/csync2.desc -[COPY] Copyright (C) 2006 - 2010 The OpenSDE Project +[COPY] Copyright (C) 2006 - 2011 The OpenSDE Project [COPY] Copyright (C) 2004 - 2006 The T2 SDE Project [COPY] Copyright (C) 1998 - 2003 Clifford Wolf [COPY] @@ -29,7 +29,8 @@ [L] GPL [S] Stable -[V] 1.34 +[V] 2.0-rc1 [P] O -----5---9 209.200 -[D] 728292303 csync2-1.34.tar.gz http://oss.linbit.com/csync2/ +[D] 1173385350 csync2-2.0-rc1.tar.gz !http://git.linbit.com/csync2.git/?p=csync2.git;a=snapshot;h=2e380f649784cd04436606a45e965e73638140bf;sf=tgz +#[D] 728292303 csync2-1.34.tar.gz http://oss.linbit.com/csync2/