Jocelyn Turcotte
35318ea9b5
Fix the Windows build
...
Use an iterator variable declared outside of the loop condition
expression.
MinGW doesn't support C99 very easily and it's easier to keep
our C code C89 compliant.
2015-08-31 17:23:25 +02:00
Christian Kamm
07ca0be3c5
csync_excluded: Another speedup #3638
...
Build a list of path components outside of the exclude pattern loop.
2015-08-24 15:08:06 +02:00
Christian Kamm
e71cca128d
csync_update: Use excluded_traversal() to improve performance #3638
2015-08-24 15:08:06 +02:00
Christian Kamm
fe49255bff
csync_excluded: Add fast _traversal() function #3638
...
This function only checks the full path and the basename and is thus
around 7x faster. It is very useful in a csync_update context where
we know that the leading dirs have already been checked for exclusion.
2015-08-24 15:08:06 +02:00
Christian Kamm
20f4ec6b67
csync_exclude: Speed up siginificantly #3638
...
The performance test indicates a speedup of around 3x for paths
with around 12 components.
2015-08-24 15:08:06 +02:00
Olivier Goffart
9dcce01e54
csync: ignore files/folder for which stat fails
...
instead of pretending it suicceed and not recursing in it.
This fixes a bug in which a folder with a too long name would be properly
created, then removed on the server in the next sync.
(cherry picked from commit 4bbf7669091cde7ec726b1708d8c54427b68f016)
Conflicts:
csync/src/csync.h
csync/src/csync_exclude.h
csync/src/csync_update.c
2015-08-11 11:17:20 +02:00
Olivier Goffart
2a4396fbdb
Fixup ce5be89a18
2015-08-07 11:05:04 +02:00
Olivier Goffart
ce5be89a18
Fix warning
...
csync_vio_local_unix.c:109:7: warning: ignoring return value of function declared with
warn_unused_result attribute [-Wunused-result]
asprintf(&file_stat->original_name, "%s/%s", handle->path, dirent->d_name);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2015-08-06 13:58:04 +02:00
Olivier Goffart
499e13377d
check_vio_ext.c: assert_string_equal is a macro and we cannot have #ifdef in it
2015-08-06 10:02:12 +02:00
Olivier Goffart
157f59d44a
Csync tests: fix on linux
...
Linux do not iconv to decode filenames
2015-08-05 11:09:27 +02:00
Markus Goetz
f6cd2c79d5
CSync: Proper error for invalid filenames #2777 #3128 #2240
2015-08-04 22:13:38 +02:00
Markus Goetz
a7b0f7b42e
check_vio_ext: Fix on OS X
2015-08-04 17:25:48 +02:00
Markus Goetz
cdb556e404
Reconcile: Improve debug output
2015-07-31 16:43:47 +02:00
Klaas Freitag
0c5528806d
csync cmake: Removed not needed define of DATADIR.
2015-07-30 16:38:30 +02:00
Klaas Freitag
3b510969a2
Fix test, make it independent on the sort order of readdir.
2015-07-27 13:28:21 +02:00
Olivier Goffart
0ccaae9a22
Confirm feature: Confirm for any folder, not only shared ones
...
issue #3148
2015-07-27 09:54:20 +02:00
Klaas Freitag
c72b6fb8e6
csync_update: Reorg the code a bit to make it easier to read and understand
2015-07-15 15:54:41 +02:00
Klaas Freitag
ddf7419aca
csync: Initialize the hidden files flag properly.
2015-07-15 15:54:41 +02:00
Klaas Freitag
27e0f9d132
csync: Updated and added some documentation.
2015-07-15 15:54:41 +02:00
Klaas Freitag
a4336092f6
Hidden Files: Add a setting to ignore hidden files or not.
...
This setting goes to the folder definition. By default, no hidden
files are synced.
2015-07-15 15:54:41 +02:00
Klaas Freitag
e11f59af32
csync_update: store the remote ignore information into tree (from tmp)
...
This way the propagator is able to skip a remove if ingored files are
exiting.
2015-07-15 15:49:27 +02:00
Klaas Freitag
b0aedef4b0
Sync: Store information about ignored files on the server in database.
...
That allows better handling of remove requests that should not be done
because the directory is not empty on the remote side (as it contains
ignored files).
2015-07-15 15:49:27 +02:00
Klaas Freitag
c940762b7c
csync_update: set has_ignored_files in case of hidden files.
...
Re-arragned the code a bit for better overview on whats happening.
2015-07-15 15:20:46 +02:00
Klaas Freitag
7aa2b50828
csync_update: Handling hidden files as excluded files, as intended.
2015-07-15 15:20:46 +02:00
Klaas Freitag
e0abbc0b83
vio_local: Properly detect if files are hidden.
...
On Linux and Mac, check for the leading dot. On Windows,
there is an flag set in the result struct of fetFileInformationByHandle.
2015-07-15 15:20:46 +02:00
Markus Goetz
cd64d3ae2c
CSync: Split csync_vio_local.c
...
This is to make room for further improvements #880
2015-07-13 15:54:09 +02:00
Olivier Goffart
45180a024d
Rename should_update_etag to should_update_metadata
...
This should avoid some confusion
2015-07-09 15:05:37 +02:00
Klaas Freitag
7f628e6f7e
c_path: Fix function description.
2015-07-08 18:13:41 +02:00
Klaas Freitag
a076a170ee
vio_local: strncat only needs two chars as limit.
2015-07-08 18:13:41 +02:00
Klaas Freitag
ccc91a52a8
vio_local: Give strncpy and strncat enough space to copy closing zero.
2015-07-08 18:13:41 +02:00
Klaas Freitag
4cb78999d2
vio_local: Simplify and fix the error out behaviour of win32 impl.
...
This avoids leaking of a stat struct in error case.
2015-07-08 18:13:41 +02:00
Klaas Freitag
1a69e2ae8d
vio_local: Remove commented code.
2015-07-08 18:13:41 +02:00
Klaas Freitag
c7ba7c8e9f
Fix comment for c_path_to_UNC, plus cleanup of superflous debug.
2015-07-08 18:13:41 +02:00
Klaas Freitag
8bb1a49aaf
Use strncat and strncpy rather than the strcpy and friends.
2015-07-08 18:13:40 +02:00
Klaas Freitag
d303df7fa0
do not use the path function here.
2015-07-08 18:13:40 +02:00
Klaas Freitag
a280007dc2
Added another test case with content in the deep path (also win32).
2015-07-08 18:13:40 +02:00
Klaas Freitag
d9b44b3a69
Created two functions c_utf8_string_to_locale and c_utf8_path_to_locale.
...
Before we only had c_utf8_to_locale, but now functionality is needed to
convert a path to UNC before converting it. That does c_utf8_path_to_locale
now, while c_utf8_string_to_locale only converts the plain string, ie.
to generate wide char strings for output.
2015-07-08 18:13:39 +02:00
Klaas Freitag
5214189eb2
Moved the makeWinLongPath function to c_path and rename to c_path_to_UNC
...
Other cleanups like streamlined allocation and more.
2015-07-08 18:13:39 +02:00
Klaas Freitag
3aed7fc0be
Removed dead code from csync_utils. Functionality moved to Qt based code.
2015-07-08 18:13:39 +02:00
Klaas Freitag
2e04eba74b
Long Win Pathes: Added test to test dir traversal with long pathes.
2015-07-08 18:13:39 +02:00
Klaas Freitag
2cce8065ab
CMocka Testing: Install the cmocka library
2015-07-08 18:13:39 +02:00
Klaas Freitag
8183c37dfe
long win pathes: Some minor refinements and documentations
2015-07-08 18:13:39 +02:00
Klaas Freitag
f98af43d31
Add cross platform definition for chdir and getcwd.
2015-07-08 18:13:39 +02:00
Klaas Freitag
b9b5e1cf33
Long win pathes: Make makeLongWinPath function return the num of alloc bytes.
...
This enables the calling function to free these accordingly. That is needed
because the makeLongWinPath for efficiency reasons does not always realloc
the original string.
2015-07-08 18:13:39 +02:00
Klaas Freitag
2b391396c6
vio local: Use win32 native functions to traverse the file tree.
...
Native functions to replace the not native readdir and opendir functions.
This works with long filenames now.
2015-07-08 18:13:39 +02:00
Klaas Freitag
5caff8cc93
Add a FIXME comment.
2015-07-08 18:13:39 +02:00
Klaas Freitag
599ee90500
Remove definition of TDIR, its not longer in use.
...
The directory traverse handle struct is platform dependant now.
2015-07-08 18:13:39 +02:00
Klaas Freitag
2f0a404116
Unit test for the long filename conversion on win32
2015-07-08 18:13:38 +02:00
Klaas Freitag
472eed7f20
Added function to change the filename to be longer than MAX_PATH
2015-07-08 18:13:38 +02:00
Klaas Freitag
7d2bb261dc
Removed the setFileHidden function for now
2015-07-08 18:13:38 +02:00
Christian Kamm
e88ce41f4f
test: Fix compile of check_csync_update.
2015-07-02 10:04:20 +02:00
Olivier Goffart
575ca50aac
csync: Do not ignore hard links anymore
...
There is no reason to ignore them. Downloading a file that is hardlinked
will break the link.
Will solve syncing NTFS directories #3241
2015-07-01 13:05:08 +02:00
Olivier Goffart
84fdc8c6c0
Merge remote-tracking branch 'origin/1.8'
2015-06-26 17:54:35 +02:00
Olivier Goffart
516509b4ed
csync_statedb: fix leak
...
Spotted by coverity (CID 98061)
2015-06-26 17:01:43 +02:00
Olivier Goffart
29fecb029e
Merge remote-tracking branch 'origin/1.8'
...
Conflicts:
VERSION.cmake
src/gui/accountsettings.cpp
src/gui/accountsettings.h
2015-06-25 12:30:52 +02:00
Christian Kamm
f130a2716e
Update: Check exclusion when reading from db. #3172
2015-06-19 14:58:47 +02:00
Christian Kamm
5f44218727
Reconcile: Update db entry for new dirs. #2761
...
Previously a EVAL_RENAME that was changed to NEW could end up
being propagated but not added to the database.
2015-06-17 11:53:38 +02:00
Klaas Freitag
758a820b0c
csync: only define S_ defines if they are undefined.
2015-06-15 14:55:02 +02:00
Olivier Goffart
16786eed54
Merge pull request #3281 from owncloud/confirm
...
Confirm feature (sync engine part only)
2015-06-10 13:39:52 +02:00
Olivier Goffart
e135d4cccf
Merge remote-tracking branch 'origin/1.8'
2015-06-10 13:42:02 +02:00
Olivier Goffart
5dcb276376
csync: fix a few possible leak in error cases
2015-06-08 15:31:14 +02:00
Christian Kamm
e04882cc7c
Discovery: Ignore folders with any 503. #3113
2015-06-04 09:24:53 +02:00
Olivier Goffart
7bb2834d8b
Confirm feature (The sync engine part)
2015-05-26 12:34:07 +02:00
Olivier Goffart
289800c1ba
Recall: make it work even if it is not in the root directory
2015-05-21 16:06:53 +02:00
Olivier Goffart
49fb37fefc
t_recall.pl: add a test for the recall feature
2015-05-21 16:06:53 +02:00
Olivier Goffart
6a7f2089e8
tests: Make them more verbose in case of failures
2015-05-20 14:34:11 +02:00
Markus Goetz
6b16e18eb8
tx.pl: Use HTTP Keep-Alive
2015-05-12 17:11:21 +02:00
Olivier Goffart
505dba5b23
csync walk tree: Try to find the 'other_node' in the source directory in case of renames
...
This fixes t2.pl
2015-05-12 16:32:00 +02:00
Markus Goetz
625e61516f
Propagator: Limit length of temporary file name #2789 (fixup)
...
Fix 22c35c4d15
2015-05-11 15:42:35 +02:00
Hefee
23b6426dfa
Compile with GCC 5
...
this fixes the error and makes complete oCC compile with GCC 5.
error: ISO C does not support '__FUNCTION__' predefined identifier
[-Wpedantic]
According to the porting guide:
The fix is either to use the standard predefined identifier __func__
(since C99), or to use the __extension__ keyword.
2015-05-07 01:15:55 +02:00
Daniel Molkentin
d8275cd4e1
Use identical User Agents for csync and the Qt parts
...
Also, use the mirall version for ocsync.
Currently, the csync engine part and the Qt part have different UAs,
and this makes debugging (i.e. reading access logs) difficult. On
top, we haven't increased the ocsync version number in ages. So
as a consequence, I think it would be the best to have ocsync
and the rest share the same version number, and make them identify
with the same user agent.
To ease debugging for our side, we'll still append "(csyncoC)"
for calls made by csync.
2015-04-16 20:58:51 +02:00
Markus Goetz
fa80a006b8
CSync: Log if file_id is too long
2015-04-13 14:58:25 +02:00
Olivier Goffart
c917251e9e
Reconcile: Fix clang warning
...
csync_reconcile.c:159:26: warning: address of array 'tmp->path' will always evaluate to 'true' [-Wpointer-bool-conversion]
if( tmp->path ) {
~~ ~~~~~^~~~
csync_file_stat_s::path is an array so it is never null
What was meant here is to check if the string was not empty
2015-04-09 15:06:48 +02:00
Christian Kamm
adcf40afc3
Discovery: Speed up initial run. #2796
2015-04-08 15:43:49 +02:00
Jocelyn Turcotte
d475628c70
SyncEngine: Fix a crash in csync_vio_file_stat_copy #3051
...
In some cryptic cases where the getetag property wasn't returned by
the server, we might be trying to c_strdup a null pointer in
csync_vio_file_stat_copy.
At least avoid crashing in this case by looking for
CSYNC_VIO_FILE_STAT_FIELDS_ETAG, like csync_vio_file_stat_destroy
does.
2015-04-08 09:35:43 +02:00
Daniel Molkentin
14e0e4a072
Win32: More reserved file names to ignore, including Recycle Bin
...
Addresses #2955
2015-03-12 16:25:32 +01:00
Markus Goetz
fe574dbbf9
Discovery: Free some memory before propagate ( #2902 )
2015-03-02 15:08:21 +01:00
Christian Kamm
b03209ccef
Inform user about ignored long files. #2882
2015-02-27 12:12:39 +01:00
Klaas Freitag
4f7c062f3f
csync_exclude: Ignore files where the filename length is > 254 chars.
...
This is for example HFS+ and others. It fixes #2882
2015-02-26 17:09:49 +01:00
Christian Kamm
76ac628153
Discovery: Distinguish 503 Storage not available. #2884
2015-02-25 12:02:10 +01:00
Klaas Freitag
3af936c8a1
Some minor cleanups.
2015-02-24 22:02:29 +01:00
Klaas Freitag
d297580d26
Tests: Fix compile if NEON is absent.
2015-02-13 10:04:28 +01:00
Olivier Goffart
2a88f5083c
t6.pl: Add a test that re-upload a chunked file with lot of chunks
2015-02-06 10:23:20 +01:00
Olivier Goffart
5ec793e045
propagateupload: Save the mtime given by the server in the reply to GET
...
There could be a race condition if the file was updated on the server
between the discovery and the propagate phase. By taking the mtime from
the server, we make sure that we do not have a race.
This is tested by t6.pl with BIG3.file because the script was modifying
the file between the two phases
2015-02-06 10:23:20 +01:00
Daniel Molkentin
59bdda6226
Require OpenSSL > 1.0.0, remove obsolete dep from csync
2015-02-05 13:08:28 +01:00
Jocelyn Turcotte
1ac523ec01
Output libocsync and libowncloudsync in the bin directory
...
Windows finds DLLs using PATH or the directory of the process'
executable. By outputing those dependend DLLs together with
owncloud.exe, the developer only need to have OpenSSL's bin
and the qtkeychain build directory in his PATH to let the
dynamic linker find them.
As the documentation of RUNTIME_OUTPUT_DIRECTORY points out,
this only affects windows as other platforms don't consider
libraries as runtime targets.
2015-02-04 15:00:22 +01:00
Jocelyn Turcotte
43a51c1bef
Fix the MinGW build
...
- qtkeychain isn't necessarily in a qt5keychain subdirectory.
- Explicitly add OpenSSL to the include directories
- Make sure that the USE_OUR_OWN_SQLITE3 code is initialized
for csync by calling find_package.
2015-02-04 14:50:38 +01:00
Olivier Goffart
52d330d8e5
csync: add neon include directories
2015-02-03 16:00:55 +01:00
Christian Kamm
43d6dbb0f2
SQL: Add debugging options. #2693
...
OWNCLOUD_SQLITE_JOURNAL_MODE: To use something else than WAL
OWNCLOUD_SQLITE_TEMP_STORE: To test with storing temporaries in memory.
2015-01-29 11:02:01 +01:00
Olivier Goffart
22d3a4a48f
csync_owncloud: don't deref null pointer
2015-01-28 14:16:33 +01:00
Olivier Goffart
d70e146c1f
Merge remote-tracking branch 'origin/ssl_client_cert'
...
Conflicts:
CMakeLists.txt
csync/src/CMakeLists.txt
csync/src/csync_owncloud.c
2015-01-28 14:13:40 +01:00
Daniel Molkentin
989005d616
Clientcert support: Explictly link libsync against openssl
2015-01-28 13:31:17 +01:00
Joachim Schiele
9abc3e1333
fixes required by upstream
2015-01-23 19:22:56 +00:00
Olivier Goffart
502e7081cf
Make it compile with neon
2015-01-23 17:59:07 +01:00
Olivier Goffart
dcba129a98
Make it compile without neon
2015-01-23 17:56:46 +01:00
Olivier Goffart
b856266e91
Remove neon link flag when not required
2015-01-23 17:35:17 +01:00
Markus Goetz
7f1f62e14a
CSync: Clean some more
2015-01-23 17:26:30 +01:00
Olivier Goffart
fe51ada1e8
Don't require NEON with Qt 5.4
2015-01-23 17:11:34 +01:00
Markus Goetz
6708c959d9
CSync: Remove c_list
2015-01-23 17:09:13 +01:00
Markus Goetz
af9daaeff7
CSync: Remove memory checks
...
We will get OOMed before this fails.
2015-01-23 16:59:51 +01:00