Mentioned that --delete-after and --delete-excluded imply --delete.
[rsync/rsync.git] / options.c
index 32ab9ec..dd70623 100644 (file)
--- a/options.c
+++ b/options.c
@@ -1,22 +1,22 @@
 /*  -*- c-file-style: "linux" -*-
-    
   Copyright (C) 1998-2001 by Andrew Tridgell <tridge@samba.org>
   Copyright (C) 2000, 2001, 2002 by Martin Pool <mbp@samba.org>
-   
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
-   
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
-   
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ * 
* Copyright (C) 1998-2001 by Andrew Tridgell <tridge@samba.org>
* Copyright (C) 2000, 2001, 2002 by Martin Pool <mbp@samba.org>
+ * 
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
+ * 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
+ * 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
 
 #include "rsync.h"
 #include "popt.h"
 int make_backups = 0;
 
 /**
- * Should we send the whole file as literal data rather than trying to
- * create an incremental diff?  This is on by default when both source
- * and destination are local and we're not doing a batch delta,
- * because there it's no cheaper to read the whole basis file than to
- * just rewrite it.
+ * If True, send the whole file as literal data rather than trying to
+ * create an incremental diff.
  *
  * If both are 0, then look at whether we're local or remote and go by
  * that.
+ *
+ * @sa disable_deltas_p()
  **/
 int whole_file = 0;
 int no_whole_file = 0;
@@ -88,6 +87,7 @@ int modify_window=0;
 #endif
 int blocking_io=-1;
 
+
 /** Network address family. **/
 #ifdef INET6
 int default_af_hint = 0;       /* Any protocol */
@@ -170,6 +170,10 @@ static void print_rsync_version(enum logcode f)
                ipv6, 
                (int) (sizeof(dumstat->st_ino) * 8),
                (int) (sizeof(INO64_T) * 8));
+#ifdef MAINTAINER_MODE
+       rprintf(f, "              panic action: \"%s\"\n",
+               get_panic_action());
+#endif
 
 #ifdef NO_INT64
         rprintf(f, "WARNING: no 64-bit integers on this platform!\n");
@@ -286,7 +290,7 @@ enum {OPT_VERSION = 1000, OPT_SUFFIX, OPT_SENDER, OPT_SERVER, OPT_EXCLUDE,
       OPT_LOG_FORMAT, OPT_PASSWORD_FILE, OPT_SIZE_ONLY, OPT_ADDRESS,
       OPT_DELETE_AFTER, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR, 
       OPT_IGNORE_ERRORS, OPT_BWLIMIT, OPT_BLOCKING_IO,
-      OPT_NO_BLOCKING_IO, OPT_NO_WHOLE_FILE,
+      OPT_NO_BLOCKING_IO, OPT_WHOLE_FILE, OPT_NO_WHOLE_FILE,
       OPT_MODIFY_WINDOW, OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_IGNORE_EXISTING};
 
 static struct poptOption long_options[] = {
@@ -319,8 +323,8 @@ static struct poptOption long_options[] = {
   {"update",          'u', POPT_ARG_NONE,   &update_only , 0, 0, 0 },
   {"links",           'l', POPT_ARG_NONE,   &preserve_links , 0, 0, 0 },
   {"copy-links",      'L', POPT_ARG_NONE,   &copy_links , 0, 0, 0 },
-  {"whole-file",      'W', POPT_ARG_NONE,   &whole_file , 0, 0, 0 },
-  {"no-whole-file",    0,  POPT_ARG_NONE,   &no_whole_file , 0, 0, 0 },
+  {"whole-file",      'W', POPT_ARG_NONE,   0,              OPT_WHOLE_FILE, 0, 0 },
+  {"no-whole-file",    0,  POPT_ARG_NONE,   0,              OPT_NO_WHOLE_FILE, 0, 0 },
   {"copy-unsafe-links", 0, POPT_ARG_NONE,   &copy_unsafe_links , 0, 0, 0 },
   {"perms",           'p', POPT_ARG_NONE,   &preserve_perms , 0, 0, 0 },
   {"owner",           'o', POPT_ARG_NONE,   &preserve_uid , 0, 0, 0 },
@@ -372,9 +376,11 @@ static struct poptOption long_options[] = {
 static char err_buf[100];
 
 
-/* We store the option error message, if any, so that we can log the
-   connection attempt (which requires parsing the options), and then
-   show the error later on. */
+/**
+ * Store the option error message, if any, so that we can log the
+ * connection attempt (which requires parsing the options), and then
+ * show the error later on.
+ **/
 void option_error(void)
 {
        if (err_buf[0]) {
@@ -388,7 +394,10 @@ void option_error(void)
        }
 }
 
-/* check to see if we should refuse this option */
+
+/**
+ * Check to see if we should refuse this option
+ **/
 static int check_refuse_options(char *ref, int opt)
 {
        int i, len;
@@ -428,9 +437,14 @@ static int count_args(char const **argv)
 }
 
 
-/* Process command line arguments.  Called on both local and remote.
- * Returns if all options are OK, otherwise fills in err_buf and
- * returns 0. */
+/**
+ * Process command line arguments.  Called on both local and remote.
+ *
+ * @retval 1 if all options are OK; with globals set to appropriate
+ * values
+ *
+ * @retval 0 on error, with err_buf containing an explanation
+ **/
 int parse_arguments(int *argc, const char ***argv, int frommain)
 {
        int opt;
@@ -484,6 +498,16 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        add_exclude_file(poptGetOptArg(pc), 1, 1);
                        break;
 
+               case OPT_WHOLE_FILE:
+                       whole_file = 1;
+                       no_whole_file = 0;
+                       break;
+
+               case OPT_NO_WHOLE_FILE:
+                       no_whole_file = 1;
+                       whole_file = 0;
+                       break;
+
                case OPT_NO_BLOCKING_IO:
                        blocking_io = 0;
                        break;
@@ -591,8 +615,14 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
 }
 
 
-/* Construct a filtered list of options to pass through from the
- * client to the server */
+/**
+ * Construct a filtered list of options to pass through from the
+ * client to the server.
+ *
+ * This involves setting options that will tell the server how to
+ * behave, and also filtering out options that are processed only
+ * locally.
+ **/
 void server_options(char **args,int *argc)
 {
        int ac = *argc;