Sun, 17 Sep 2017 17:56:02 +0200
adds option to dav get for downloading only the directory structure
this is an undocumented feature and may be replaced in the future
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
185
cd42cccee550
updated copyright notice
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
145
diff
changeset
|
4 | * Copyright 2016 Olaf Wintermann. All rights reserved. |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #ifndef SYNC_H |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #define SYNC_H |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
32 | #include <curl/curl.h> |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | #include <libidav/webdav.h> |
47
fbbbeed4ba8f
added push command for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
46
diff
changeset
|
34 | #include <ucx/list.h> |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
36 | #include "sopt.h" |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
37 | |
190
a76e43d89f55
dav-sync can create and delete empty directories now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
185
diff
changeset
|
38 | #include "version.h" |
a76e43d89f55
dav-sync can create and delete empty directories now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
185
diff
changeset
|
39 | |
302
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
40 | #ifdef _WIN32 |
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
41 | // TODO: thread includes |
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
42 | #else |
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
43 | #include <pthread.h> |
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
44 | #endif /* _WIN32 */ |
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
45 | |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
46 | #ifdef __cplusplus |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
47 | extern "C" { |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
48 | #endif |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | |
53
ddc4efc9b0f8
added usage info and some options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
52
diff
changeset
|
50 | #define STDIN_BUF_SIZE 2048 |
302
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
51 | |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
52 | void print_usage(char *cmd); |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
53 | |
302
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
54 | pthread_t start_sighandler(pthread_mutex_t *mutex) ; |
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
55 | void stop_sighandler(pthread_mutex_t *mutex, pthread_t tid); |
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
56 | |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
57 | int cmd_pull(CmdArgs *args); |
299
c517502d3e38
adds dav-sync archive command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
296
diff
changeset
|
58 | int cmd_push(CmdArgs *args, DavBool archive); |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
59 | |
192
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
60 | int sync_get_resource( |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
61 | CmdArgs *a, |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
62 | SyncDirectory *dir, |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
63 | DavResource *res, |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
64 | SyncDatabase *db, |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
65 | int *counter); |
190
a76e43d89f55
dav-sync can create and delete empty directories now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
185
diff
changeset
|
66 | int sync_remove_local_resource(SyncDirectory *dir, LocalResource *res); |
a76e43d89f55
dav-sync can create and delete empty directories now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
185
diff
changeset
|
67 | void sync_remove_local_directory(SyncDirectory *dir, LocalResource *res); |
216
16d6b97fbf33
dav-sync push ignores conflict files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
204
diff
changeset
|
68 | void rename_conflict_file(SyncDirectory *dir, SyncDatabase *db, char *path); |
145
82475dc12dd4
improved dav-sync data-loss prevention
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
69 | char* create_tmp_download_path(char *path); |
65
d4077e8175f3
added optional trash for deleted files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
64
diff
changeset
|
70 | void move_to_trash(SyncDirectory *dir, char *path); |
49
c5759ac76c1b
dav-sync detects locally removed files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
47
diff
changeset
|
71 | UcxList* local_scan(SyncDirectory *dir, SyncDatabase *db); |
53
ddc4efc9b0f8
added usage info and some options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
52
diff
changeset
|
72 | UcxList* read_changes(SyncDirectory *dir, SyncDatabase *db); |
64
112dbf7ba8b0
changed sync behavior
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
53
diff
changeset
|
73 | LocalResource* local_resource_new(SyncDirectory *dir, SyncDatabase *db, char *path, int *isdir); |
302
395763c0ee69
adds SIGINT handler to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
299
diff
changeset
|
74 | LocalResource* local_resource_copy(LocalResource *res); |
64
112dbf7ba8b0
changed sync behavior
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
53
diff
changeset
|
75 | int local_resource_is_changed(SyncDirectory *dir, SyncDatabase *db, LocalResource *res); |
220
f1b3873a6525
added conflict detection to dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
218
diff
changeset
|
76 | int remote_resource_is_changed( |
f1b3873a6525
added conflict detection to dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
218
diff
changeset
|
77 | DavSession *sn, |
f1b3873a6525
added conflict detection to dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
218
diff
changeset
|
78 | SyncDirectory *dir, |
f1b3873a6525
added conflict detection to dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
218
diff
changeset
|
79 | SyncDatabase *db, |
f1b3873a6525
added conflict detection to dav-sync push
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
218
diff
changeset
|
80 | LocalResource *res); |
47
fbbbeed4ba8f
added push command for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
46
diff
changeset
|
81 | |
144
c2c02c9b3be4
dav-sync detects broken uploads
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
75
diff
changeset
|
82 | int sync_set_status(DavResource *res, char *status); |
c2c02c9b3be4
dav-sync detects broken uploads
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
75
diff
changeset
|
83 | int sync_remove_status(DavResource *res); |
192
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
84 | int sync_put_resource( |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
85 | SyncDirectory *dir, |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
86 | DavResource *res, |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
87 | LocalResource *local, |
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
88 | int *counter); |
190
a76e43d89f55
dav-sync can create and delete empty directories now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
185
diff
changeset
|
89 | int sync_mkdir(SyncDirectory *dir, DavResource *res, LocalResource *local); |
192
d10194a51304
dav-sync prints a small report after successful sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
190
diff
changeset
|
90 | int sync_delete_remote_resource(DavSession *sn, LocalResource *res, int *counter); |
47
fbbbeed4ba8f
added push command for dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
46
diff
changeset
|
91 | |
218
5f1f7602cf77
automatically remove deleted conflict files from the db
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
217
diff
changeset
|
92 | void remove_deleted_conflicts(SyncDirectory *dir, SyncDatabase *db); |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
93 | |
217
12bad63cf5a8
added resolve-conflicts and delete-conflicts commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
216
diff
changeset
|
94 | int cmd_resolve_conflicts(CmdArgs *args); |
12bad63cf5a8
added resolve-conflicts and delete-conflicts commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
216
diff
changeset
|
95 | int cmd_delete_conflicts(CmdArgs *args); |
12bad63cf5a8
added resolve-conflicts and delete-conflicts commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
216
diff
changeset
|
96 | |
204
4f0207044837
added trash-info and empty-trash commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
200
diff
changeset
|
97 | int cmd_trash_info(CmdArgs *args); |
4f0207044837
added trash-info and empty-trash commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
200
diff
changeset
|
98 | int cmd_empty_trash(CmdArgs *args); |
200
cc474cf2c2f5
added add-directory command to dav-sync
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
192
diff
changeset
|
99 | int cmd_add_directory(CmdArgs *args); |
256
54433cb371df
implements check-repositories command for dav-sync
Mike Becker <universe@uap-core.de>
parents:
252
diff
changeset
|
100 | int cmd_list_dirs(); |
252
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
220
diff
changeset
|
101 | int cmd_check_repositories(); |
6b8e287269fc
improves config error reporting and adds check (check-config) command + dav-sync no longer aborts on missing sync.xml
Mike Becker <universe@uap-core.de>
parents:
220
diff
changeset
|
102 | |
296
bb49953b1cf8
dav-sync writes the locktoken to a file now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
256
diff
changeset
|
103 | char* create_locktoken_file(const char *syncdirname, const char *locktoken); |
bb49953b1cf8
dav-sync writes the locktoken to a file now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
256
diff
changeset
|
104 | |
46
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
105 | #ifdef __cplusplus |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
106 | } |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
107 | #endif |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
108 | |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
109 | #endif /* SYNC_H */ |
0542668d0f26
added new sync tool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
110 |