diff -r d53fd1006485 -r 26a1d5b9d9d2 dav/sync.h --- a/dav/sync.h Fri Mar 15 20:30:09 2019 +0100 +++ b/dav/sync.h Sun Mar 17 15:00:48 2019 +0100 @@ -60,6 +60,12 @@ char *path; } SyncFile; +typedef struct MetadataHashes { + char *tags; + char *tags_remote; + char *xattr; +} MetadataHashes; + enum RemoteChangeType { REMOTE_NO_CHANGE = 0, REMOTE_CHANGE_MODIFIED, @@ -119,6 +125,7 @@ DavSession *sn, SyncDirectory *dir, SyncDatabase *db, + DavResource *remote, LocalResource *res); int resource_pathlen_cmp(LocalResource *res1, LocalResource *res2, void *n); @@ -126,8 +133,7 @@ int sync_set_status(DavResource *res, char *status); int sync_remove_status(DavResource *res); UcxBuffer* sync_get_file_tag_data(SyncDirectory *dir, LocalResource *res); -UcxList* sync_get_file_tags(SyncDirectory *dir, LocalResource *res, DavBool *changed); -UcxList* sync_merge_tags(UcxList *tags1, UcxList *tags2); +UcxList* sync_get_file_tags(SyncDirectory *dir, LocalResource *res, DavBool *changed, char **newhash); int sync_tags_equal(UcxList *tags1, UcxList *tags2); int sync_store_tags(SyncDirectory *dir, const char *path, LocalResource *local, DavResource *res); int sync_store_tags_local(SyncDirectory *dir, LocalResource *local, const char *path, UcxList *tags); @@ -138,7 +144,16 @@ int *counter); int sync_mkdir(SyncDirectory *dir, DavResource *res, LocalResource *local); int sync_delete_remote_resource(SyncDirectory *dir, DavSession *sn, LocalResource *res, int *counter, UcxList **cols); -int sync_update_metadata(SyncDirectory *dir, DavSession *sn, DavResource *res, LocalResource *local); +MetadataHashes sync_set_metadata_properties( + SyncDirectory *dir, + DavSession *sn, + DavResource *res, + LocalResource *local); +int sync_update_metadata( + SyncDirectory *dir, + DavSession *sn, + DavResource *res, + LocalResource *local); void remove_deleted_conflicts(SyncDirectory *dir, SyncDatabase *db); @@ -152,7 +167,7 @@ int cmd_remove_tag(CmdArgs *args); int cmd_set_tags(CmdArgs *args); int cmd_list_tags(CmdArgs *args); -int cmd_tagopt(CmdArgs *args, int cmd); +int cmd_tagop(CmdArgs *args, int cmd); /* * gets the syncdir and resource path for a given file path