added a --force option.
[rsync/rsync.git] / main.c
diff --git a/main.c b/main.c
index ec40818..d476e21 100644 (file)
--- a/main.c
+++ b/main.c
@@ -54,6 +54,7 @@ int am_root=0;
 int orig_umask=0;
 int relative_paths=0;
 int numeric_ids = 0;
+int force_delete = 0;
 
 extern int csum_length;
 
@@ -175,6 +176,9 @@ static void server_options(char **args,int *argc)
   if (delete_mode)
     args[ac++] = "--delete";
 
+  if (force_delete)
+    args[ac++] = "--force";
+
   if (numeric_ids)
     args[ac++] = "--numeric-ids";
 
@@ -439,6 +443,7 @@ static void usage(FILE *f)
   fprintf(f,"    --rsync-path PATH    specify path to rsync on the remote machine\n");
   fprintf(f,"-C, --cvs-exclude        auto ignore files in the same way CVS does\n");
   fprintf(f,"    --delete             delete files that don't exist on the sending side\n");
+  fprintf(f,"    --force              force deletion of directories even if not empty\n");
   fprintf(f,"    --numeric-ids        don't map uid/gid values by user/group name\n");
   fprintf(f,"-I, --ignore-times       don't exclude files that match length and time\n");
   fprintf(f,"-T  --temp-dir DIR       create temporary files in directory DIR\n");
@@ -454,7 +459,7 @@ static void usage(FILE *f)
 }
 
 enum {OPT_VERSION,OPT_SUFFIX,OPT_SENDER,OPT_SERVER,OPT_EXCLUDE,
-      OPT_EXCLUDE_FROM,OPT_DELETE,OPT_NUMERIC_IDS,OPT_RSYNC_PATH};
+      OPT_EXCLUDE_FROM,OPT_DELETE,OPT_NUMERIC_IDS,OPT_RSYNC_PATH,OPT_FORCE};
 
 static char *short_options = "oblLWHpguDCtcahvrRIxnSe:B:T:z";
 
@@ -463,6 +468,7 @@ static struct option long_options[] = {
   {"server",      0,     0,    OPT_SERVER},
   {"sender",      0,     0,    OPT_SENDER},
   {"delete",      0,     0,    OPT_DELETE},
+  {"force",       0,     0,    OPT_FORCE},
   {"numeric-ids", 0,     0,    OPT_NUMERIC_IDS},
   {"exclude",     1,     0,    OPT_EXCLUDE},
   {"exclude-from",1,     0,    OPT_EXCLUDE_FROM},
@@ -553,6 +559,10 @@ int main(int argc,char *argv[])
          delete_mode = 1;
          break;
 
+       case OPT_FORCE:
+         force_delete = 1;
+         break;
+
        case OPT_NUMERIC_IDS:
          numeric_ids = 1;
          break;