OpenSDE Packages Database (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

738 lines
23 KiB

  1. # --- SDE-COPYRIGHT-NOTE-BEGIN ---
  2. # This copyright note is auto-generated by ./scripts/Create-CopyPatch.
  3. #
  4. # Filename: package/.../csync2/csync2-2.0-rc1-upstream-fixes-b7490b4.patch
  5. # Copyright (C) 2011 The OpenSDE Project
  6. #
  7. # More information can be found in the files COPYING and README.
  8. #
  9. # This patch file is dual-licensed. It is available under the license the
  10. # patched project is licensed under, as long as it is an OpenSource license
  11. # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
  12. # of the GNU General Public License as published by the Free Software
  13. # Foundation; either version 2 of the License, or (at your option) any later
  14. # version.
  15. # --- SDE-COPYRIGHT-NOTE-END ---
  16. From e5190e7660a7aff9f435c224b5852d825c1148fe Mon Sep 17 00:00:00 2001
  17. From: Lars Ellenberg <lars@linbit.com>
  18. Date: Wed, 9 Feb 2011 11:15:38 +0100
  19. Subject: [PATCH 1/9] fix inetd protocol breakage
  20. Don't csync_debug(0,...) to often, it breaks protocol on inetd,
  21. because with inetd, stderr and stdout point to the same socket.
  22. Any "status" or "progress" or "debug" message printed to stderr
  23. ends up on the socket, and is interpreted as protocol error
  24. by the client.
  25. So don't do that.
  26. ---
  27. daemon.c | 18 +++++++++---------
  28. 1 files changed, 9 insertions(+), 9 deletions(-)
  29. diff --git a/daemon.c b/daemon.c
  30. index 57dfe49..4fadb73 100644
  31. --- a/daemon.c
  32. +++ b/daemon.c
  33. @@ -119,11 +119,11 @@ int csync_file_backup(const char *filename)
  34. int fd_in, fd_out, i;
  35. int lastSlash;
  36. mode_t mode;
  37. - csync_debug(0, "backup\n");
  38. + csync_debug(1, "backup\n");
  39. // Skip generation of directories
  40. rc = stat(filename, &buf);
  41. if (S_ISDIR(buf.st_mode)) {
  42. - csync_debug(0, "directory. Skip generation \n");
  43. + csync_debug(1, "directory. Skip generation \n");
  44. return 0;
  45. }
  46. @@ -149,7 +149,7 @@ int csync_file_backup(const char *filename)
  47. backup_filename[bak_dir_len+i] = 0;
  48. - csync_debug(0, "mkdir %s \n", backup_filename);
  49. + csync_debug(1, "mkdir %s \n", backup_filename);
  50. mkdir(backup_filename, mode);
  51. // Dont check the empty string.
  52. @@ -175,7 +175,7 @@ int csync_file_backup(const char *filename)
  53. snprintf(backup_otherfilename+bak_dir_len+filename_len, 10, ".%d", i);
  54. rc = rename(backup_filename, backup_otherfilename);
  55. - csync_debug(0, "renaming backup files '%s' to '%s'. rc = %d\n", backup_filename, backup_otherfilename, rc);
  56. + csync_debug(1, "renaming backup files '%s' to '%s'. rc = %d\n", backup_filename, backup_otherfilename, rc);
  57. }
  58. @@ -192,11 +192,11 @@ int csync_file_backup(const char *filename)
  59. return 1;
  60. }
  61. - csync_debug(0,"Copying data from %s to backup file %s \n", filename, backup_filename);
  62. + csync_debug(1,"Copying data from %s to backup file %s \n", filename, backup_filename);
  63. - int rc = csync_copy_file(fd_in, fd_out);
  64. + rc = csync_copy_file(fd_in, fd_out);
  65. if (rc != 0) {
  66. - csync_debug(0, "csync_backup error 2\n");
  67. + csync_debug(1, "csync_backup error 2\n");
  68. snprintf(error_buffer, 1024,
  69. "Write error while backing up '%s': %s\n",
  70. @@ -208,10 +208,10 @@ int csync_file_backup(const char *filename)
  71. // return 1;
  72. }
  73. csync_setBackupFileStatus(backup_filename, bak_dir_len);
  74. - csync_debug(0, "csync_backup loop end\n");
  75. + csync_debug(1, "csync_backup loop end\n");
  76. }
  77. }
  78. - csync_debug(0, "csync_backup end\n");
  79. + csync_debug(1, "csync_backup end\n");
  80. return 0;
  81. }
  82. --
  83. 1.7.2.3
  84. From 2d459f6cab22b9c4f682b02b6b21e12cf27c23df Mon Sep 17 00:00:00 2001
  85. From: Lars Ellenberg <lars@linbit.com>
  86. Date: Wed, 9 Feb 2011 11:43:02 +0100
  87. Subject: [PATCH 2/9] fix recursive check for deleted files
  88. Fix breakage by 448e725a61cdb869b825cacce08f0974e2a4a408:
  89. just dropping "or 1" (for "give me all you have")
  90. because of "ERROR: argument of OR must be type boolean, not type integer"
  91. is wrong: it results in "give me just the exact match" ;-(
  92. Correct fix: "OR TRUE".
  93. ---
  94. check.c | 2 +-
  95. 1 files changed, 1 insertions(+), 1 deletions(-)
  96. diff --git a/check.c b/check.c
  97. index fc3a05b..6d64c3a 100644
  98. --- a/check.c
  99. +++ b/check.c
  100. @@ -215,7 +215,7 @@ void csync_check_del(const char *file, int recursive, int init_run)
  101. if ( recursive ) {
  102. if ( !strcmp(file, "/") )
  103. - ASPRINTF(&where_rec, "")
  104. + ASPRINTF(&where_rec, "OR TRUE")
  105. else
  106. ASPRINTF(&where_rec, "UNION ALL SELECT filename from file where filename > '%s/' "
  107. "and filename < '%s0'",
  108. --
  109. 1.7.2.3
  110. From aec0438822f65d902b79446196112e0a7dae9efe Mon Sep 17 00:00:00 2001
  111. From: Lars Ellenberg <lars@linbit.com>
  112. Date: Wed, 9 Feb 2011 12:50:02 +0000
  113. Subject: [PATCH 3/9] fix compiler warnings about statement without effect (ASPRINTF macro)
  114. ASPRINTF and VASPRINTF macros are used
  115. used everywhere as "void", so make it void.
  116. do { ... } while (0) makes it accept a ; at the end,
  117. which is better practice, I think.
  118. ---
  119. check.c | 4 ++--
  120. csync2.c | 12 ++++++------
  121. csync2.h | 20 +++++++++-----------
  122. db.c | 20 ++++++++++----------
  123. db_mysql.c | 2 +-
  124. db_postgres.c | 6 +++---
  125. getrealfn.c | 4 ++--
  126. prefixsubst.c | 4 ++--
  127. 8 files changed, 35 insertions(+), 37 deletions(-)
  128. diff --git a/check.c b/check.c
  129. index 6d64c3a..1de56f8 100644
  130. --- a/check.c
  131. +++ b/check.c
  132. @@ -215,11 +215,11 @@ void csync_check_del(const char *file, int recursive, int init_run)
  133. if ( recursive ) {
  134. if ( !strcmp(file, "/") )
  135. - ASPRINTF(&where_rec, "OR TRUE")
  136. + ASPRINTF(&where_rec, "OR TRUE");
  137. else
  138. ASPRINTF(&where_rec, "UNION ALL SELECT filename from file where filename > '%s/' "
  139. "and filename < '%s0'",
  140. - url_encode(file), url_encode(file))
  141. + url_encode(file), url_encode(file));
  142. }
  143. SQL_BEGIN("Checking for removed files",
  144. diff --git a/csync2.c b/csync2.c
  145. index e683c61..d079c85 100644
  146. --- a/csync2.c
  147. +++ b/csync2.c
  148. @@ -588,7 +588,7 @@ int main(int argc, char ** argv)
  149. cfgname = strdup(url_decode(para));
  150. }
  151. if ( !*cfgname ) {
  152. - ASPRINTF(&file_config, ETCDIR "/csync2.cfg")
  153. + ASPRINTF(&file_config, ETCDIR "/csync2.cfg");
  154. } else {
  155. int i;
  156. @@ -600,7 +600,7 @@ int main(int argc, char ** argv)
  157. return mode != MODE_INETD;
  158. }
  159. - ASPRINTF(&file_config, ETCDIR "/csync2_%s.cfg", cfgname)
  160. + ASPRINTF(&file_config, ETCDIR "/csync2_%s.cfg", cfgname);
  161. }
  162. csync_debug(2, "Config-File: %s\n", file_config);
  163. @@ -735,11 +735,11 @@ found_a_group:;
  164. char *where_rec = "";
  165. if ( !strcmp(realname, "/") )
  166. - ASPRINTF(&where_rec, "or 1")
  167. + ASPRINTF(&where_rec, "or 1");
  168. else
  169. ASPRINTF(&where_rec, "UNION ALL SELECT filename from file where filename > '%s/' "
  170. "and filename < '%s0'",
  171. - url_encode(pfname), url_encode(pfname))
  172. + url_encode(pfname), url_encode(pfname));
  173. SQL_BEGIN("Adding dirty entries recursively",
  174. "SELECT filename FROM file WHERE filename = '%s' %s",
  175. @@ -761,11 +761,11 @@ found_a_group:;
  176. if ( recursive ) {
  177. if ( !strcmp(realname, "/") )
  178. - ASPRINTF(&where_rec, "or 1")
  179. + ASPRINTF(&where_rec, "or 1");
  180. else
  181. ASPRINTF(&where_rec, "or (filename > '%s/' "
  182. "and filename < '%s0')",
  183. - url_encode(realname), url_encode(realname))
  184. + url_encode(realname), url_encode(realname));
  185. }
  186. SQL("Mark file as to be forced",
  187. diff --git a/csync2.h b/csync2.h
  188. index 57431c1..1310582 100644
  189. --- a/csync2.h
  190. +++ b/csync2.h
  191. @@ -37,22 +37,20 @@
  192. #define DB_SCHEMA_VERSION 0
  193. -/* asprintf with test for no memory. Use these macros without trailing ';' */
  194. +/* asprintf with test for no memory */
  195. -#define ASPRINTF(s, fmt, ...) {\
  196. - int __ret;\
  197. - if ((__ret = asprintf(s, fmt, ##__VA_ARGS__)) < 0) \
  198. +#define ASPRINTF(s, fmt, ...) do {\
  199. + int __ret = asprintf(s, fmt, ##__VA_ARGS__);\
  200. + if (__ret < 0) \
  201. csync_fatal("Out of memory in asprintf at %s:%d\n", __FILE__, __LINE__);\
  202. - __ret;\
  203. -}
  204. +} while (0)
  205. -#define VASPRINTF(s, fmt, args) {\
  206. - int __ret;\
  207. - if ((__ret = vasprintf(s, fmt, args)) < 0) \
  208. +#define VASPRINTF(s, fmt, args) do {\
  209. + int __ret = vasprintf(s, fmt, args);\
  210. + if (__ret < 0) \
  211. csync_fatal("Out of memory in vasprintf at %s:%d\n", __FILE__, __LINE__);\
  212. - __ret;\
  213. -}
  214. +} while (0)
  215. /* action.c */
  216. diff --git a/db.c b/db.c
  217. index d6a58c6..68848b3 100644
  218. --- a/db.c
  219. +++ b/db.c
  220. @@ -172,7 +172,7 @@ void csync_db_sql(const char *err, const char *fmt, ...)
  221. int rc, busyc = 0;
  222. va_start(ap, fmt);
  223. - VASPRINTF(&sql, fmt, ap)
  224. + VASPRINTF(&sql, fmt, ap);
  225. va_end(ap);
  226. in_sql_query++;
  227. @@ -204,7 +204,7 @@ void* csync_db_begin(const char *err, const char *fmt, ...)
  228. int rc, busyc = 0;
  229. char *ppTail;
  230. va_start(ap, fmt);
  231. - VASPRINTF(&sql, fmt, ap)
  232. + VASPRINTF(&sql, fmt, ap);
  233. va_end(ap);
  234. in_sql_query++;
  235. @@ -309,25 +309,25 @@ char *db_default_database(char *dbdir, char *myhostname, char *cfg_name)
  236. #if defined(HAVE_SQLITE3)
  237. if (cfg_name[0] != '\0')
  238. - ASPRINTF(&db, "sqlite3://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname)
  239. + ASPRINTF(&db, "sqlite3://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname);
  240. else
  241. - ASPRINTF(&db, "sqlite3://%s/%s" DBEXTENSION, dbdir, myhostname)
  242. + ASPRINTF(&db, "sqlite3://%s/%s" DBEXTENSION, dbdir, myhostname);
  243. #elif defined(HAVE_SQLITE)
  244. if (cfg_name[0] != '\0')
  245. - ASPRINTF(&db, "sqlite2://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname)
  246. + ASPRINTF(&db, "sqlite2://%s/%s_%s" DBEXTENSION, dbdir, myhostname, cfgname);
  247. else
  248. - ASPRINTF(&db, "sqlite2://%s/%s" DBEXTENSION, dbdir, myhostname)
  249. + ASPRINTF(&db, "sqlite2://%s/%s" DBEXTENSION, dbdir, myhostname);
  250. #elif defined(HAVE_MYSQL)
  251. if (cfg_name[0] != '\0')
  252. - ASPRINTF(&db, "mysql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname)
  253. + ASPRINTF(&db, "mysql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname);
  254. else
  255. - ASPRINTF(&db, "mysql://root@localhost/csync2_%s" DBEXTENSION, myhostname)
  256. + ASPRINTF(&db, "mysql://root@localhost/csync2_%s" DBEXTENSION, myhostname);
  257. #elif defined(HAVE_POSTGRES)
  258. if (cfg_name[0] != '\0')
  259. - ASPRINTF(&db, "pgsql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname)
  260. + ASPRINTF(&db, "pgsql://root@localhost/csync2_%s_%s" DBEXTENSION, myhostname, cfgname);
  261. else
  262. - ASPRINTF(&db, "pgsql://root@localhost/csync2_%s" DBEXTENSION, myhostname)
  263. + ASPRINTF(&db, "pgsql://root@localhost/csync2_%s" DBEXTENSION, myhostname);
  264. #else
  265. #error "No database backend available. Please install either libpg, libmysqlclient or libsqlite, reconfigure and recompile"
  266. diff --git a/db_mysql.c b/db_mysql.c
  267. index c15a219..1b6d09e 100644
  268. --- a/db_mysql.c
  269. +++ b/db_mysql.c
  270. @@ -140,7 +140,7 @@ int db_mysql_open(const char *file, db_conn_p *conn_p)
  271. if (f.mysql_real_connect_fn(db, host, user, pass, database, port, unix_socket, 0) == NULL) {
  272. if (f.mysql_errno_fn(db) == ER_BAD_DB_ERROR) {
  273. if (f.mysql_real_connect_fn(db, host, user, pass, NULL, port, unix_socket, 0) != NULL) {
  274. - ASPRINTF(&create_database_statement, "create database %s", database)
  275. + ASPRINTF(&create_database_statement, "create database %s", database);
  276. csync_debug(2, "creating database %s\n", database);
  277. if (f.mysql_query_fn(db, create_database_statement) != 0)
  278. diff --git a/db_postgres.c b/db_postgres.c
  279. index 13a7a41..b40bdfb 100644
  280. --- a/db_postgres.c
  281. +++ b/db_postgres.c
  282. @@ -140,7 +140,7 @@ int db_postgres_open(const char *file, db_conn_p *conn_p)
  283. return rc;
  284. ASPRINTF(&pg_conn_info, "host='%s' user='%s' password='%s' dbname='%s' port=%d",
  285. - host, user, pass, database, port)
  286. + host, user, pass, database, port);
  287. pg_conn = f.PQconnectdb_fn(pg_conn_info);
  288. if (pg_conn == NULL)
  289. @@ -151,7 +151,7 @@ int db_postgres_open(const char *file, db_conn_p *conn_p)
  290. free(pg_conn_info);
  291. ASPRINTF(&pg_conn_info, "host='%s' user='%s' password='%s' dbname='postgres' port=%d",
  292. - host, user, pass, port)
  293. + host, user, pass, port);
  294. pg_conn = f.PQconnectdb_fn(pg_conn_info);
  295. if (pg_conn == NULL)
  296. @@ -186,7 +186,7 @@ int db_postgres_open(const char *file, db_conn_p *conn_p)
  297. free(pg_conn_info);
  298. ASPRINTF(&pg_conn_info, "host='%s' user='%s' password='%s' dbname='%s' port=%d",
  299. - host, user, pass, database, port)
  300. + host, user, pass, database, port);
  301. pg_conn = f.PQconnectdb_fn(pg_conn_info);
  302. if (pg_conn == NULL)
  303. diff --git a/getrealfn.c b/getrealfn.c
  304. index 1f6840c..b2bc0b7 100644
  305. --- a/getrealfn.c
  306. +++ b/getrealfn.c
  307. @@ -54,7 +54,7 @@ char *getrealfn(const char *filename)
  308. if ( *tempfn != '/' ) {
  309. char *t2, *t1 = my_get_current_dir_name();
  310. - ASPRINTF(&t2, "%s/%s", t1, tempfn)
  311. + ASPRINTF(&t2, "%s/%s", t1, tempfn);
  312. free(t1);
  313. free(tempfn);
  314. tempfn = t2;
  315. @@ -111,7 +111,7 @@ char *getrealfn(const char *filename)
  316. if ( !chdir(tempfn) ) {
  317. char *t2, *t1 = my_get_current_dir_name();
  318. if ( st_mark ) {
  319. - ASPRINTF(&t2, "%s/%s", t1, st_mark+1)
  320. + ASPRINTF(&t2, "%s/%s", t1, st_mark+1);
  321. free(tempfn); free(t1); tempfn = t2;
  322. } else {
  323. free(tempfn); tempfn = t1;
  324. diff --git a/prefixsubst.c b/prefixsubst.c
  325. index 9fc1067..d003bb5 100644
  326. --- a/prefixsubst.c
  327. +++ b/prefixsubst.c
  328. @@ -46,7 +46,7 @@ const char *prefixsubst(const char *in)
  329. ringbuff_counter = (ringbuff_counter+1) % RINGBUFF_LEN;
  330. if (ringbuff[ringbuff_counter])
  331. free(ringbuff[ringbuff_counter]);
  332. - ASPRINTF(&ringbuff[ringbuff_counter], "%s%s", p->path, path)
  333. + ASPRINTF(&ringbuff[ringbuff_counter], "%s%s", p->path, path);
  334. return ringbuff[ringbuff_counter];
  335. }
  336. }
  337. @@ -79,7 +79,7 @@ const char *prefixencode(const char *filename) {
  338. ringbuff_counter = (ringbuff_counter+1) % RINGBUFF_LEN;
  339. if (ringbuff[ringbuff_counter])
  340. free(ringbuff[ringbuff_counter]);
  341. - ASPRINTF(&ringbuff[ringbuff_counter], "%%%s%%%s", p->name, filename+p_len)
  342. + ASPRINTF(&ringbuff[ringbuff_counter], "%%%s%%%s", p->name, filename+p_len);
  343. return ringbuff[ringbuff_counter];
  344. }
  345. }
  346. --
  347. 1.7.2.3
  348. From 2cb983a1ccf36b0d5b6d117e8e1e8770d8e3e013 Mon Sep 17 00:00:00 2001
  349. From: Lars Ellenberg <lars@linbit.com>
  350. Date: Wed, 9 Feb 2011 13:14:11 +0000
  351. Subject: [PATCH 4/9] suppress compiler warning about unused yyinput/yyunput
  352. ---
  353. cfgfile_scanner.l | 4 ++++
  354. 1 files changed, 4 insertions(+), 0 deletions(-)
  355. diff --git a/cfgfile_scanner.l b/cfgfile_scanner.l
  356. index 345a45b..5e93f7c 100644
  357. --- a/cfgfile_scanner.l
  358. +++ b/cfgfile_scanner.l
  359. @@ -25,9 +25,13 @@
  360. #define MAX_INCLUDE_DEPTH 10
  361. YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
  362. int include_stack_ptr = 0;
  363. +
  364. +#define YY_NO_INPUT 1
  365. +#define YY_NO_UNPUT 1
  366. %}
  367. %option noyywrap yylineno
  368. +%option nounput
  369. %x STRING INCL
  370. %%
  371. --
  372. 1.7.2.3
  373. From d9b8e2fbfc8cf99e3a9a920e06a4e349c9ebebeb Mon Sep 17 00:00:00 2001
  374. From: Lars Ellenberg <lars@linbit.com>
  375. Date: Wed, 9 Feb 2011 13:20:29 +0000
  376. Subject: [PATCH 5/9] fix compiler warnings about unused or uninitialized variables
  377. ---
  378. conn.c | 2 +-
  379. daemon.c | 3 +--
  380. rsync.c | 2 --
  381. update.c | 1 -
  382. 4 files changed, 2 insertions(+), 6 deletions(-)
  383. diff --git a/conn.c b/conn.c
  384. index 113d5d9..3f06005 100644
  385. --- a/conn.c
  386. +++ b/conn.c
  387. @@ -52,7 +52,7 @@ int conn_connect(const char *peername)
  388. {
  389. struct addrinfo hints;
  390. struct addrinfo *result, *rp;
  391. - int sfd, s, on = 1;
  392. + int sfd, s;
  393. /* Obtain address(es) matching host/port */
  394. memset(&hints, 0, sizeof(struct addrinfo));
  395. diff --git a/daemon.c b/daemon.c
  396. index 4fadb73..98a5b47 100644
  397. --- a/daemon.c
  398. +++ b/daemon.c
  399. @@ -117,7 +117,7 @@ int csync_file_backup(const char *filename)
  400. char backup_filename[bak_dir_len + filename_len + 10];
  401. char backup_otherfilename[bak_dir_len + filename_len + 10];
  402. int fd_in, fd_out, i;
  403. - int lastSlash;
  404. + int lastSlash = 0;
  405. mode_t mode;
  406. csync_debug(1, "backup\n");
  407. // Skip generation of directories
  408. @@ -343,7 +343,6 @@ int verify_peername(const char *name, address_t *peeraddr)
  409. sa_family_t af = peeraddr->sa.sa_family;
  410. struct addrinfo hints;
  411. struct addrinfo *result, *rp;
  412. - size_t len;
  413. int try_mapped_ipv4;
  414. int s;
  415. diff --git a/rsync.c b/rsync.c
  416. index eed2d85..86482ee 100644
  417. --- a/rsync.c
  418. +++ b/rsync.c
  419. @@ -506,9 +506,7 @@ int csync_rs_patch(const char *filename)
  420. int backup_errno;
  421. rs_stats_t stats;
  422. rs_result result;
  423. - char buffer[512];
  424. char *errstr = "?";
  425. - int rc;
  426. char tmpfname[MAXPATHLEN], newfname[MAXPATHLEN];
  427. csync_debug(3, "Csync2 / Librsync: csync_rs_patch('%s')\n", filename);
  428. diff --git a/update.c b/update.c
  429. index f747dd9..b2c2b85 100644
  430. --- a/update.c
  431. +++ b/update.c
  432. @@ -544,7 +544,6 @@ void csync_update_host(const char *peername,
  433. struct textlist *tl_mod = 0, **last_tn=&tl;
  434. char *current_name = 0;
  435. struct stat st;
  436. - char *myname ;
  437. SQL_BEGIN("Get files for host from dirty table",
  438. "SELECT filename, myname, forced FROM dirty WHERE peername = '%s' "
  439. "ORDER by filename ASC", url_encode(peername))
  440. --
  441. 1.7.2.3
  442. From ec538733e9ccf2688b16592ce9579fa4e859f4fc Mon Sep 17 00:00:00 2001
  443. From: Lars Ellenberg <lars@linbit.com>
  444. Date: Wed, 9 Feb 2011 13:22:22 +0000
  445. Subject: [PATCH 6/9] fix compiler warnings about signedness or other type mismatch
  446. ---
  447. conn.c | 6 +++---
  448. csync2.c | 4 ++--
  449. csync2.h | 2 +-
  450. db_sqlite.c | 4 ++--
  451. 4 files changed, 8 insertions(+), 8 deletions(-)
  452. diff --git a/conn.c b/conn.c
  453. index 3f06005..8dda10d 100644
  454. --- a/conn.c
  455. +++ b/conn.c
  456. @@ -395,7 +395,7 @@ int conn_raw_read(void *buf, size_t count)
  457. return 0;
  458. }
  459. -void conn_debug(const char *name, const unsigned char*buf, size_t count)
  460. +void conn_debug(const char *name, const char*buf, size_t count)
  461. {
  462. int i;
  463. @@ -458,9 +458,9 @@ void conn_printf(const char *fmt, ...)
  464. conn_write(buffer, size);
  465. }
  466. -int conn_gets(char *s, int size)
  467. +size_t conn_gets(char *s, size_t size)
  468. {
  469. - int i=0;
  470. + size_t i=0;
  471. while (i<size-1) {
  472. int rc = conn_raw_read(s+i, 1);
  473. diff --git a/csync2.c b/csync2.c
  474. index d079c85..3b1cb6a 100644
  475. --- a/csync2.c
  476. +++ b/csync2.c
  477. @@ -310,7 +310,7 @@ static int csync_server_loop(int single_connect)
  478. printf("Csync2 daemon running. Waiting for connections.\n");
  479. while (1) {
  480. - int addrlen = sizeof(addr);
  481. + unsigned addrlen = sizeof(addr);
  482. int conn = accept(listenfd, &addr.sa, &addrlen);
  483. if (conn < 0) goto error;
  484. @@ -782,7 +782,7 @@ found_a_group:;
  485. SQL_BEGIN("DB Dump - Hint",
  486. "SELECT recursive, filename FROM hint ORDER BY filename")
  487. {
  488. - printf("%s\t%s\n", SQL_V(0), url_decode(SQL_V(1)));
  489. + printf("%s\t%s\n", (char*)SQL_V(0), url_decode(SQL_V(1)));
  490. retval = -1;
  491. } SQL_END;
  492. break;
  493. diff --git a/csync2.h b/csync2.h
  494. index 1310582..6032240 100644
  495. --- a/csync2.h
  496. +++ b/csync2.h
  497. @@ -100,7 +100,7 @@ extern int conn_write(const void *buf, size_t count);
  498. extern void conn_printf(const char *fmt, ...);
  499. extern int conn_fgets(char *s, int size);
  500. -extern int conn_gets(char *s, int size);
  501. +extern size_t conn_gets(char *s, size_t size);
  502. /* db.c */
  503. diff --git a/db_sqlite.c b/db_sqlite.c
  504. index 8018a01..81c5c75 100644
  505. --- a/db_sqlite.c
  506. +++ b/db_sqlite.c
  507. @@ -180,9 +180,9 @@ const char *db_sqlite_stmt_get_column_text(db_stmt_p stmt, int column) {
  508. return 0;
  509. }
  510. sqlite3_stmt *sqlite_stmt = stmt->private;
  511. - const char *result = f.sqlite3_column_text_fn(sqlite_stmt, column);
  512. + const unsigned char *result = f.sqlite3_column_text_fn(sqlite_stmt, column);
  513. /* error handling */
  514. - return result;
  515. + return (const char*)result;
  516. }
  517. #if defined(HAVE_SQLITE3)
  518. --
  519. 1.7.2.3
  520. From 763561c6313e02c2ac90a8f043e84d25547f7c21 Mon Sep 17 00:00:00 2001
  521. From: Lars Ellenberg <lars@linbit.com>
  522. Date: Wed, 9 Feb 2011 13:23:06 +0000
  523. Subject: [PATCH 7/9] fix compiler warnings about implicit function declarations
  524. ---
  525. csync2.h | 4 ++--
  526. db_api.c | 5 +++++
  527. db_api.h | 5 +++++
  528. db_sqlite2.h | 4 ++--
  529. 4 files changed, 14 insertions(+), 4 deletions(-)
  530. diff --git a/csync2.h b/csync2.h
  531. index 6032240..5240d15 100644
  532. --- a/csync2.h
  533. +++ b/csync2.h
  534. @@ -113,9 +113,8 @@ extern void* csync_db_begin(const char *err, const char *fmt, ...);
  535. extern int csync_db_next(void *vmx, const char *err,
  536. int *pN, const char ***pazValue, const char ***pazColName);
  537. extern void csync_db_fin(void *vmx, const char *err);
  538. -#if defined(HAVE_LIBSQLITE3)
  539. extern const void * csync_db_colblob(void *stmtx,int col);
  540. -#endif
  541. +extern char *db_default_database(char *dbdir, char *myhostname, char *cfg_name);
  542. #define SQL(e, s, ...) csync_db_sql(e, s, ##__VA_ARGS__)
  543. @@ -203,6 +202,7 @@ extern void csync_remove_old();
  544. /* daemon.c */
  545. extern void csync_daemon_session();
  546. +extern int csync_copy_file(int fd_in, int fd_out);
  547. /* getrealfn.c */
  548. diff --git a/db_api.c b/db_api.c
  549. index f35abee..af5591c 100644
  550. --- a/db_api.c
  551. +++ b/db_api.c
  552. @@ -12,6 +12,11 @@
  553. #include <time.h>
  554. #include "db_api.h"
  555. +#include "db_mysql.h"
  556. +#include "db_postgres.h"
  557. +#include "db_sqlite.h"
  558. +#include "db_sqlite2.h"
  559. +
  560. #define DEADLOCK_MESSAGE \
  561. "Database backend is exceedingly busy => Terminating (requesting retry).\n"
  562. diff --git a/db_api.h b/db_api.h
  563. index ed5d6d1..eab627b 100644
  564. --- a/db_api.h
  565. +++ b/db_api.h
  566. @@ -54,4 +54,9 @@ int db_stmt_get_column_int(db_stmt_p stmt, int column);
  567. int db_stmt_next (db_stmt_p stmt);
  568. int db_stmt_close(db_stmt_p stmt);
  569. +void db_set_logger(db_conn_p conn, void (*logger)(int lv, const char *fmt, ...));
  570. +int db_schema_version(db_conn_p db);
  571. +int db_upgrade_to_schema(db_conn_p db, int version);
  572. +const char *db_errmsg(db_conn_p conn);
  573. +
  574. #endif
  575. diff --git a/db_sqlite2.h b/db_sqlite2.h
  576. index 24b2c32..79336a4 100644
  577. --- a/db_sqlite2.h
  578. +++ b/db_sqlite2.h
  579. @@ -1,6 +1,6 @@
  580. -#ifndef DB_SQLITE_H
  581. -#define DB_SQLITE_H
  582. +#ifndef DB_SQLITE2_H
  583. +#define DB_SQLITE2_H
  584. /* public */
  585. int db_sqlite2_open(const char *file, db_conn_p *conn_p);
  586. --
  587. 1.7.2.3
  588. From 6d534181223d3fa06f2875373c5884c3c7ed5556 Mon Sep 17 00:00:00 2001
  589. From: Lars Ellenberg <lars@linbit.com>
  590. Date: Wed, 9 Feb 2011 13:23:44 +0000
  591. Subject: [PATCH 8/9] fix compiler warning about assignment discards qualifier from pointer target type
  592. ---
  593. daemon.c | 6 ++----
  594. 1 files changed, 2 insertions(+), 4 deletions(-)
  595. diff --git a/daemon.c b/daemon.c
  596. index 98a5b47..0e35ff9 100644
  597. --- a/daemon.c
  598. +++ b/daemon.c
  599. @@ -321,13 +321,11 @@ typedef union address {
  600. const char *csync_inet_ntop(address_t *addr)
  601. {
  602. char buf[INET6_ADDRSTRLEN];
  603. - char *pretty_print = NULL;
  604. sa_family_t af = addr->sa.sa_family;
  605. - pretty_print = inet_ntop(af,
  606. + return inet_ntop(af,
  607. af == AF_INET ? (void*)&addr->sa_in.sin_addr :
  608. af == AF_INET6 ? (void*)&addr->sa_in6.sin6_addr : NULL,
  609. - &buf, sizeof(buf));
  610. - return pretty_print;
  611. + buf, sizeof(buf));
  612. }
  613. /*
  614. --
  615. 1.7.2.3
  616. From b7490b4d2f9069e4e364c9f4824956ade4bad691 Mon Sep 17 00:00:00 2001
  617. From: Lars Ellenberg <lars@linbit.com>
  618. Date: Wed, 9 Feb 2011 13:24:51 +0000
  619. Subject: [PATCH 9/9] fix compiler warning about empty snprintf format
  620. ---
  621. daemon.c | 3 +--
  622. 1 files changed, 1 insertions(+), 2 deletions(-)
  623. diff --git a/daemon.c b/daemon.c
  624. index 0e35ff9..2c054ed 100644
  625. --- a/daemon.c
  626. +++ b/daemon.c
  627. @@ -170,8 +170,7 @@ int csync_file_backup(const char *filename)
  628. if (i != 1)
  629. snprintf(backup_filename+bak_dir_len+filename_len, 10, ".%d", i-1);
  630. - else
  631. - snprintf(backup_filename+bak_dir_len+filename_len, 10, "");
  632. + backup_filename[bak_dir_len+filename_len] = '\0';
  633. snprintf(backup_otherfilename+bak_dir_len+filename_len, 10, ".%d", i);
  634. rc = rename(backup_filename, backup_otherfilename);
  635. --
  636. 1.7.2.3