Tue, 08 Jan 2019 16:37:13 +0100
fixes DavSession creation in dav-sync when using root collection
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2018 Olaf Wintermann. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef SCFG_H #define SCFG_H #include <ucx/string.h> #include <stdbool.h> #include <libidav/webdav.h> #include <regex.h> #include "db.h" #include "tags.h" #ifdef __cplusplus extern "C" { #endif #define SYNC_CMD_PULL 1 #define SYNC_CMD_PUSH 2 #define SYNC_CMD_ARCHIVE 4 #define SYNC_CMD_RESTORE 8 #define DEFAULT_TAG_XATTR "tags" #define MACOS_TAG_XATTR "com.apple.metadata:_kMDItemUserTags" typedef struct TagConfig TagConfig; typedef struct Versioning Versioning; typedef struct SyncDirectory { char *name; char *path; char *trash; char *collection; char *repository; char *database; TagConfig *tagconfig; Versioning *versioning; UcxList *include; UcxList *exclude; UcxList *tagfilter; int max_retry; int allow_cmd; time_t lock_timeout; bool backuppull; bool lockpull; bool lockpush; } SyncDirectory; enum TagFormat { TAG_FORMAT_TEXT = 0, TAG_FORMAT_CSV, TAG_FORMAT_XML, TAG_FORMAT_MACOS, TAG_FORMAT_UNKNOWN }; typedef enum TagFormat TagFormat; enum TagStore { TAG_STORE_XATTR = 0, TAG_STORE_UNKNOWN }; typedef enum TagStore TagStore; enum TagConflict { TAG_NO_CONFLICT = 0, TAG_KEEP_LOCAL, TAG_KEEP_REMOTE, TAG_MERGE }; typedef enum TagConflict TagConflict; struct TagConfig { TagStore store; TagFormat local_format; TagFormat server_format; char *xattr_name; TagConflict conflict; bool detect_changes; }; enum VersioningType { VERSIONING_SIMPLE = 0, VERSIONING_DELTAV }; typedef enum VersioningType VersioningType; struct Versioning { VersioningType type; char *collection; bool always; }; int load_sync_config(); UcxMapIterator scfg_directory_iterator(); SyncDirectory* scfg_get_dir(char *name); int scfg_check_dir(SyncDirectory *dir); char* scfg_create_path(char *cfg); int add_directory(SyncDirectory *dir); char* generate_db_name(char *basename); void free_sync_config(); #ifdef __cplusplus } #endif #endif /* SCFG_H */