dav/sync.h

Tue, 12 Dec 2017 23:58:54 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 12 Dec 2017 23:58:54 +0100
branch
v1.1
changeset 343
b9c6e0be5774
parent 327
a66e0a1f01fc
permissions
-rw-r--r--

fixes infinite loop when trying to overwrite a collection with a regular file

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 2016 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 SYNC_H
#define	SYNC_H

#include <curl/curl.h>
#include <libidav/webdav.h>
#include <ucx/list.h>

#include <pthread.h>

#include "sopt.h"

#include "version.h"

#ifdef _WIN32
// TODO: thread includes



#else
#include <pthread.h>
#endif /* _WIN32 */

#ifdef	__cplusplus
extern "C" {
#endif

#define STDIN_BUF_SIZE 2048

void print_usage(char *cmd);

pthread_t start_sighandler(pthread_mutex_t *mutex) ;
void stop_sighandler(pthread_mutex_t *mutex, pthread_t tid);

int cmd_pull(CmdArgs *args);
int cmd_push(CmdArgs *args, DavBool archive);

int sync_get_resource(
        CmdArgs *a,
        SyncDirectory *dir,
        DavResource *res,
        SyncDatabase *db,
        int *counter);
int sync_remove_local_resource(SyncDirectory *dir, LocalResource *res);
void sync_remove_local_directory(SyncDirectory *dir, LocalResource *res);
void rename_conflict_file(SyncDirectory *dir, SyncDatabase *db, char *path);
char* create_tmp_download_path(char *path);
void move_to_trash(SyncDirectory *dir, char *path);
UcxList* local_scan(SyncDirectory *dir, SyncDatabase *db);
UcxList* read_changes(SyncDirectory *dir, SyncDatabase *db);
LocalResource* local_resource_new(SyncDirectory *dir, SyncDatabase *db, char *path, int *isdir);
LocalResource* local_resource_copy(LocalResource *res);
int local_resource_is_changed(SyncDirectory *dir, SyncDatabase *db, LocalResource *res);
int remote_resource_is_changed(
        DavSession *sn,
        SyncDirectory *dir,
        SyncDatabase *db,
        LocalResource *res);

int sync_set_status(DavResource *res, char *status);
int sync_remove_status(DavResource *res);
int sync_put_resource(
        SyncDirectory *dir,
        DavResource *res,
        LocalResource *local,
        int *counter);
int sync_mkdir(SyncDirectory *dir, DavResource *res, LocalResource *local);
int sync_delete_remote_resource(DavSession *sn, LocalResource *res, int *counter);

void remove_deleted_conflicts(SyncDirectory *dir, SyncDatabase *db);

int cmd_resolve_conflicts(CmdArgs *args);
int cmd_delete_conflicts(CmdArgs *args);

int cmd_trash_info(CmdArgs *args);
int cmd_empty_trash(CmdArgs *args);
int cmd_add_directory(CmdArgs *args);
int cmd_list_dirs();
int cmd_check_repositories();

char* create_locktoken_file(const char *syncdirname, const char *locktoken);

#ifdef	__cplusplus
}
#endif

#endif	/* SYNC_H */

mercurial