Commit graph

101 commits

Author SHA1 Message Date
Olivier Goffart
835813a86f Fix the tests after merge 2013-08-18 20:13:27 +02:00
Olivier Goffart
56d5359f5b Fix compilation after merge
Still untetested
2013-08-18 18:55:32 +02:00
Olivier Goffart
2afdc9d095 Adapt to new multybyte api after merge
(Search and replace)
2013-08-18 16:43:46 +02:00
Olivier Goffart
b5ed352aa3 Merge remote-tracking branch 'origin/master' into ocsync
Only confluct resolution, do not compile or works

Conflicts:
	CMakeLists.txt
	CPackConfig.cmake
	ConfigureChecks.cmake
	client/csync_client.c
	cmake/Modules/DefineCompilerFlags.cmake
	cmake/Modules/DefineInstallationPaths.cmake
	cmake/Modules/FindIconv.cmake
	cmake/Modules/FindIniparser.cmake
	cmake/Modules/FindNeon.cmake
	config.h.cmake
	config/CMakeLists.txt
	config/ocsync.conf
	doc/CMakeLists.txt
	modules/csync_owncloud.c
	modules/csync_sftp2.c
	src/CMakeLists.txt
	src/csync.c
	src/csync.h
	src/csync_config.c
	src/csync_exclude.c
	src/csync_lock.c
	src/csync_macros.h
	src/csync_misc.c
	src/csync_misc.h
	src/csync_private.h
	src/csync_propagate.c
	src/csync_statedb.c
	src/csync_statedb.h
	src/csync_update.c
	src/csync_util.c
	src/csync_util.h
	src/std/c_dir.c
	src/std/c_file.c
	src/std/c_private.h
	src/std/c_string.c
	src/std/c_string.h
	src/std/c_time.c
	src/vio/csync_vio.c
	src/vio/csync_vio.h
	src/vio/csync_vio_file_stat.h
	src/vio/csync_vio_local.c
	src/vio/csync_vio_method.h
	tests/CMakeLists.txt
	tests/csync_tests/check_csync_statedb_load.c
	tests/csync_tests/check_csync_statedb_query.c
	tests/csync_tests/check_csync_treewalk.c
	tests/csync_tests/check_csync_update.c
	tests/ownCloud/HTTP/DAV.pm
	tests/ownCloud/ownCloud/Test.pm
	tests/std_tests/check_std_c_str.c
	tests/vio_tests/check_vio.c
2013-08-18 16:21:18 +02:00
Olivier Goffart
868f8029a2 Close the database file in all cases.
If the database was empty, we forgot to close the file descriptor,
making it impssible to remove the database and replace it with the real
one
2013-08-16 12:23:26 +02:00
Olivier Goffart
14219a1ea5 Log error of sqlite3_close 2013-08-15 18:39:26 +02:00
Olivier Goffart
38a5ff42e0 show the errno in the debug when renaming the db fails 2013-08-15 13:51:57 +02:00
Klaas Freitag
2d3272182b Add correct cast to 64 bit type. 2013-08-07 16:58:46 +02:00
Olivier Goffart
6ad2920809 Load the statedb in csync_update rather than in csync_init.
This also allow to reduce duplicate code in csync_commit, and ease the
error reporting of csync_commit

csync_commit is supposed to be done after the previous sync, it is
better to open the statedb before the sync
2013-08-06 12:12:52 +02:00
Daniel Molkentin
8d99364d63 Eliminate all warnings
- use proper casts
- use aproproate types
- offer to build with -Werror
- make printf attribute hinting gnu format style
- remove unused helper methods
- begin to use inttyes.h macros where suitable
- move var declarations to the beginning of the method
- properly use _FILE_OFFSET_BITS
- silence variables unused depending on the define
2013-07-31 13:12:10 +02:00
Andreas Schneider
d80da2a088 LICENSE: Change license of libcsync from GPL to LGPL.
All contributors have agreed to change the license of libcsync to LGPL.
2013-07-29 14:04:37 +02:00
Klaas Freitag
45cdcb7502 Add a progress callback for overall and individual file up and download
progress.
2013-07-19 12:26:48 +02:00
Klaas Freitag
32559175c9 Use correct stat struct on all platforms. 2013-07-16 12:22:52 +02:00
Klaas Freitag
207ee9955f Dealloc the query cache in statedb_close 2013-07-12 16:37:33 +02:00
Klaas Freitag
365fb2a5fe Optimize the get_stat_by_hash function. 2013-07-12 16:22:58 +02:00
Klaas Freitag
4489eb6cc0 Allow newly created database in test. 2013-07-09 17:31:06 +02:00
Klaas Freitag
b7d549e5a0 Check for zero size database file. 2013-07-09 17:30:40 +02:00
Olivier Goffart
a25fbb6160 Save the right filename in the DB when there are new files on a renamed folder 2013-07-09 16:30:09 +02:00
Klaas Freitag
3a51c9ce8b Added rename function to csync library. 2013-07-09 11:11:49 +02:00
Andreas Schneider
8f7900ee8f statedb: Make sure we call sqlite3_close on a valid pointer. 2013-07-04 12:26:22 +02:00
Andreas Schneider
bfdd73a0bc statedb: Fix a build error. 2013-07-04 12:16:47 +02:00
Klaas Freitag
cb65273ef9 statedb: Check db integrity and only overwrite the old on success. 2013-07-04 11:40:23 +02:00
Andreas Schneider
8953ed544c statedb: Remove context where it isn't needed. 2013-07-04 10:29:48 +02:00
Andreas Schneider
d05b077851 statedb: Always pass down the db pointer. 2013-07-04 10:29:19 +02:00
Andreas Schneider
22477b23a6 statedb: Never overwrite data set by the user!
Only a user of csync is allowed to call csync_set_userdata(). Never call
this inside of csync cause you will overwrite the data pointer and
information is lost!
2013-06-23 14:50:49 +02:00
Stefan Agner
33eaf7e7b0 statedb: use ctx when opening database for integrity check
Signed-off-by: Stefan Agner <stefan@agner.ch>
2013-06-23 14:03:27 +02:00
Klaas Freitag
4a04b3e184 Use a proper cast in inode query. 2013-06-11 08:47:32 +02:00
Andreas Schneider
85a858b7ed src: Fix creating the inode system on 32bit system. 2013-06-10 16:08:14 +02:00
Klaas Freitag
bf8188e9e8 Create metadata table if not existing. 2013-06-10 11:48:38 +02:00
Klaas Freitag
5852a2dd06 Create an empty metadata table if non exists. 2013-06-07 16:09:07 +02:00
Klaas Freitag
fbfba8bfbb Add another database integrity check on startup to avoid corrupt dbs. 2013-06-07 16:08:45 +02:00
Klaas Freitag
e4e30e2cdd Use multibyte version of open in database version check. 2013-06-05 17:59:34 +02:00
Klaas Freitag
126559b2be For new databases, skip the is-empty check. 2013-05-22 16:10:43 +02:00
Klaas Freitag
4a58cae0b0 Finialize insert statement. 2013-05-22 12:33:09 +02:00
Klaas Freitag
bcdd8b95bf Allow empty MD5 sum on save, happens with directoires. 2013-05-22 12:33:09 +02:00
Klaas Freitag
69d251630f Code cleanups, move closedb out of if statements. 2013-05-22 12:33:09 +02:00
Klaas Freitag
673ca36db8 More efficient database writing, do integrity check on db. 2013-05-22 12:33:09 +02:00
Klaas Freitag
68e0dbb18f Use wide character unlink. 2013-05-22 12:32:25 +02:00
Klaas Freitag
23912a7214 Reworked database writing code. Speed improvement > 50%. 2013-05-20 12:24:55 +02:00
Klaas Freitag
4ad01b35ce Switch on full synchronous mode for sqlite. 2013-05-20 11:10:27 +02:00
Klaas Freitag
1a648a612e Merge remote-tracking branch 'ogoffart/rename_folders_merged' into dav 2013-05-13 16:28:31 +02:00
Klaas Freitag
885eaad729 Removed goto from code. 2013-05-13 15:29:29 +02:00
Olivier Goffart
28942e3051 Recreates the statedb if it was corrupted
Fixes: https://github.com/owncloud/mirall/issues/595

Some corruptions do not happen when the database is opened, but only on
some querries.
In that case, recreates the database if querries such as DROP or
CREATE fails.
2013-05-13 11:57:25 +02:00
Olivier Goffart
3c87cd71d7 Merge branch 'rename_folders' into dav
Conflicts:
	modules/csync_owncloud.c
	src/csync.c
	src/csync.h
	src/csync_propagate.c
	src/csync_propagate.h
	src/csync_statedb.c
	src/csync_statedb.h
	src/csync_util.c
	src/std/c_path.h
2013-05-07 15:24:12 +02:00
Klaas Freitag
4ce67e38d1 Fix printf operator to interpret phash correctly for sqlite3. 2013-05-06 16:27:11 +02:00
Olivier Goffart
b1fc9b2a64 Don't reset the md5 if the mtime change locally.
Consider this case when one creates a file with an invalid filename (for
the server) in a directory in the local side.
say: foo/bar/%invalid%.txt

The following would happen:
- in the update for the local parent folder  foo/bar/, the md5 is 0
  because the mtime has changed
- During the reconcile, we try to send %invalid%, but there will be an
  error and nothing will be changed on the server, the etags stay the
  same
- We do not do any PROPFIND at the end so we do not fetch the etag
  anymore.  The md5 is still 0 and will be saved like that in the DB
- Next run, since the etags have  not changed on the server, we read
  from the DB.  But a md5 of 0 in the DB means the folder was removed on
  the server.  That would remove the local folder (BAD!)

So we load the md5 from the db even if the local mtime change.
That means we need to compare the mtime in the local case rather than
the md5 to see if something has changed.
2013-05-03 19:21:21 +02:00
Klaas Freitag
ab17e2aa8b Revert "Don't include csync_version.h from csync.h"
This reverts commit 5cda5d523c.
2013-04-26 10:45:14 +02:00
Klaas Freitag
5cda5d523c Don't include csync_version.h from csync.h 2013-04-26 10:37:45 +02:00
Olivier Goffart
eb38f5beb1 Don't reset the md5 if the mtime change locally.
Consider this case when one creates a file with an invalid filename (for
the server) in a directory in the local side.
say: foo/bar/%invalid%.txt

The following would happen:
- in the update for the local parent folder  foo/bar/, the md5 is 0
  because the mtime has changed
- During the reconcile, we try to send %invalid%, but there will be an
  error and nothing will be changed on the server, the etags stay the
  same
- We do not do any PROPFIND at the end so we do not fetch the etag
  anymore.  The md5 is still 0 and will be saved like that in the DB
- Next run, since the etags have  not changed on the server, we read
  from the DB.  But a md5 of 0 in the DB means the folder was removed on
  the server.  That would remove the local folder (BAD!)

So we load the md5 from the db even if the local mtime change.
That means we need to compare the mtime in the local case rather than
the md5 to see if something has changed.
2013-04-24 14:09:20 +02:00
Klaas Freitag
847c223408 More meaningful logging of read db fails. 2013-04-15 17:47:50 +02:00