add a --ignore-errors option

This commit is contained in:
Andrew Tridgell
2000-03-21 04:06:04 +00:00
parent 5f7ce2041c
commit ef55c686bc
4 changed files with 17 additions and 3 deletions

View File

@@ -862,7 +862,8 @@ struct file_list *recv_file_list(int f)
/* if protocol version is >= 17 then recv the io_error flag */ /* if protocol version is >= 17 then recv the io_error flag */
if (f != -1 && remote_version >= 17) { if (f != -1 && remote_version >= 17) {
extern int module_id; extern int module_id;
if (lp_ignore_errors(module_id)) { extern int ignore_errors;
if (lp_ignore_errors(module_id) || ignore_errors) {
read_int(f); read_int(f);
} else { } else {
io_error |= read_int(f); io_error |= read_int(f);

View File

@@ -65,6 +65,7 @@ int size_only=0;
int delete_after=0; int delete_after=0;
int only_existing=0; int only_existing=0;
int max_delete=0; int max_delete=0;
int ignore_errors=0;
char *backup_suffix = BACKUP_SUFFIX; char *backup_suffix = BACKUP_SUFFIX;
char *tmpdir = NULL; char *tmpdir = NULL;
@@ -133,6 +134,7 @@ void usage(enum logcode F)
rprintf(F," --delete delete files that don't exist on the sending side\n"); rprintf(F," --delete delete files that don't exist on the sending side\n");
rprintf(F," --delete-excluded also delete excluded files on the receiving side\n"); rprintf(F," --delete-excluded also delete excluded files on the receiving side\n");
rprintf(F," --delete-after delete after transferring, not before\n"); rprintf(F," --delete-after delete after transferring, not before\n");
rprintf(F," --ignore-errors delete even if there are IO errors\n");
rprintf(F," --max-delete=NUM don't delete more than NUM files\n"); rprintf(F," --max-delete=NUM don't delete more than NUM files\n");
rprintf(F," --partial keep partially transferred files\n"); rprintf(F," --partial keep partially transferred files\n");
rprintf(F," --force force deletion of directories even if not empty\n"); rprintf(F," --force force deletion of directories even if not empty\n");
@@ -171,7 +173,8 @@ enum {OPT_VERSION, OPT_SUFFIX, OPT_SENDER, OPT_SERVER, OPT_EXCLUDE,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_STATS, OPT_PARTIAL, OPT_PROGRESS, OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_STATS, OPT_PARTIAL, OPT_PROGRESS,
OPT_COPY_UNSAFE_LINKS, OPT_SAFE_LINKS, OPT_COMPARE_DEST, OPT_COPY_UNSAFE_LINKS, OPT_SAFE_LINKS, OPT_COMPARE_DEST,
OPT_LOG_FORMAT, OPT_PASSWORD_FILE, OPT_SIZE_ONLY, OPT_ADDRESS, OPT_LOG_FORMAT, OPT_PASSWORD_FILE, OPT_SIZE_ONLY, OPT_ADDRESS,
OPT_DELETE_AFTER, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR}; OPT_DELETE_AFTER, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR,
OPT_IGNORE_ERRORS};
static char *short_options = "oblLWHpguDCtcahvqrRIxnSe:B:T:zP"; static char *short_options = "oblLWHpguDCtcahvqrRIxnSe:B:T:zP";
@@ -228,6 +231,7 @@ static struct option long_options[] = {
{"progress", 0, 0, OPT_PROGRESS}, {"progress", 0, 0, OPT_PROGRESS},
{"partial", 0, 0, OPT_PARTIAL}, {"partial", 0, 0, OPT_PARTIAL},
{"delete-after",0, 0, OPT_DELETE_AFTER}, {"delete-after",0, 0, OPT_DELETE_AFTER},
{"ignore-errors",0, 0, OPT_IGNORE_ERRORS},
{"config", 1, 0, OPT_CONFIG}, {"config", 1, 0, OPT_CONFIG},
{"port", 1, 0, OPT_PORT}, {"port", 1, 0, OPT_PORT},
{"log-format", 1, 0, OPT_LOG_FORMAT}, {"log-format", 1, 0, OPT_LOG_FORMAT},
@@ -528,6 +532,10 @@ int parse_arguments(int argc, char *argv[], int frommain)
keep_partial = 1; keep_partial = 1;
break; break;
case OPT_IGNORE_ERRORS:
ignore_errors = 1;
break;
case 'P': case 'P':
do_progress = 1; do_progress = 1;
keep_partial = 1; keep_partial = 1;
@@ -670,6 +678,9 @@ void server_options(char **args,int *argc)
if (delete_after) if (delete_after)
args[ac++] = "--delete-after"; args[ac++] = "--delete-after";
if (ignore_errors)
args[ac++] = "--ignore-errors";
if (copy_unsafe_links) if (copy_unsafe_links)
args[ac++] = "--copy-unsafe-links"; args[ac++] = "--copy-unsafe-links";

View File

@@ -108,13 +108,14 @@ void delete_files(struct file_list *flist)
int i, j; int i, j;
char *name; char *name;
extern int module_id; extern int module_id;
extern int ignore_errors;
extern int max_delete; extern int max_delete;
static int deletion_count; static int deletion_count;
if (cvs_exclude) if (cvs_exclude)
add_cvs_excludes(); add_cvs_excludes();
if (io_error && !lp_ignore_errors(module_id)) { if (io_error && !(lp_ignore_errors(module_id) || ignore_errors)) {
rprintf(FINFO,"IO error encountered - skipping file deletion\n"); rprintf(FINFO,"IO error encountered - skipping file deletion\n");
return; return;
} }

View File

@@ -248,6 +248,7 @@ verb(
--delete delete files that don't exist on the sending side --delete delete files that don't exist on the sending side
--delete-excluded also delete excluded files on the receiving side --delete-excluded also delete excluded files on the receiving side
--delete-after delete after transferring, not before --delete-after delete after transferring, not before
--ignore-errors delete even if there are IO errors
--max-delete=NUM don't delete more than NUM files --max-delete=NUM don't delete more than NUM files
--partial keep partially transferred files --partial keep partially transferred files
--force force deletion of directories even if not empty --force force deletion of directories even if not empty