static int _csync_conflict_file(CSYNC *ctx, csync_file_stat_t *st) { int rc = -1; char *conflict_file_name; char *uri = NULL; rc = _csync_backup_file(ctx, st, &conflict_file_name); if(rc>=0) { rc = _csync_push_file(ctx, st); } if( rc >= 0 ) { /* if its the local repository, check if both files are equal. */ if( ctx->current == REMOTE_REPLICA ) { if (asprintf(&uri, "%s/%s", ctx->local.uri, st->path) < 0) { return -1; } if( c_compare_file(uri, conflict_file_name) == 1 ) { /* the files are byte wise equal. The conflict can be erased. */ if (csync_vio_local_unlink(conflict_file_name) < 0) { CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "REMOVE of csync conflict file %s failed.", conflict_file_name ); } else { CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "REMOVED csync conflict file %s as files are equal.", conflict_file_name ); } } } } return rc; }
static int _csync_conflict_file(CSYNC *ctx, csync_file_stat_t *st) { int rc = -1; rc = _csync_backup_file(ctx, st); if(rc>=0) { rc = _csync_push_file(ctx, st); } return rc; }