Fixed a bunch of "warn_unused_result" compiler warnings.
[rsync/rsync.git] / options.c
index 62214da..c561f47 100644 (file)
--- a/options.c
+++ b/options.c
@@ -20,7 +20,7 @@
  */
 
 #include "rsync.h"
-#include "ifuncs.h"
+#include "itypes.h"
 #include <popt.h>
 #include "zlib/zlib.h"
 
@@ -93,7 +93,7 @@ int filesfrom_fd = -1;
 char *filesfrom_host = NULL;
 int eol_nulls = 0;
 int protect_args = 0;
-int human_readable = 0;
+int human_readable = 1;
 int recurse = 0;
 int allow_inc_recurse = 1;
 int xfer_dirs = -1;
@@ -121,6 +121,7 @@ int checksum_seed = 0;
 int inplace = 0;
 int delay_updates = 0;
 long block_size = 0; /* "long" because popt can't set an int32. */
+char number_separator;
 char *skip_compress = NULL;
 item_list dparam_list = EMPTY_ITEM_LIST;
 
@@ -200,10 +201,10 @@ struct chmod_mode_struct *chmod_modes = NULL;
 static const char *debug_verbosity[] = {
        /*0*/ NULL,
        /*1*/ NULL,
-       /*2*/ "bind,cmd,deltasum,connect,del,dup,filter,flist",
+       /*2*/ "bind,cmd,connect,del,deltasum,dup,filter,flist,iconv",
        /*3*/ "acl,backup,deltasum2,del2,exit,filter2,flist2,fuzzy,genr,own,recv,send,time",
-       /*4*/ "cmd2,deltasum3,del3,exit2,flist3,iconv,own2,proto,time2",
-       /*5*/ "chdir,deltasum4,flist4,fuzzy2,hlink",
+       /*4*/ "cmd2,deltasum3,del3,exit2,flist3,iconv2,own2,proto,time2",
+       /*5*/ "chdir,deltasum4,flist4,fuzzy2,hash,hlink",
 };
 
 #define MAX_VERBOSITY ((int)(sizeof debug_verbosity / sizeof debug_verbosity[0]) - 1)
@@ -211,7 +212,7 @@ static const char *debug_verbosity[] = {
 static const char *info_verbosity[1+MAX_VERBOSITY] = {
        /*0*/ NULL,
        /*1*/ "copy,del,flist,misc,name,stats,symsafe",
-       /*2*/ "backup,misc2,mount,name2,remove,skip",
+       /*2*/ "backup,mount,name2,remove,skip",
 };
 
 #define MAX_OUT_LEVEL 4 /* The largest N allowed for any flagN word. */
@@ -244,7 +245,7 @@ static struct output_struct info_words[COUNT_INFO+1] = {
        INFO_WORD(COPY, W_REC, "Mention files copied locally on the receiving side"),
        INFO_WORD(DEL, W_REC, "Mention deletions on the receiving side"),
        INFO_WORD(FLIST, W_CLI, "Mention file-list receiving/sending (levels 1-2)"),
-       INFO_WORD(MISC, W_SND|W_REC, "Mention miscellaneous information (levels 1-2)"),
+       INFO_WORD(MISC, W_SND|W_REC, "Mention miscellaneous information"),
        INFO_WORD(MOUNT, W_SND|W_REC, "Mention mounts that were found or skipped"),
        INFO_WORD(NAME, W_SND|W_REC, "Mention 1) updated file/dir names, 2) unchanged names"),
        INFO_WORD(PROGRESS, W_CLI, "Mention 1) per-file progress or 2) total transfer progress"),
@@ -272,8 +273,9 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
        DEBUG_WORD(FLIST, W_SND|W_REC, "Debug file-list operations (levels 1-4)"),
        DEBUG_WORD(FUZZY, W_REC, "Debug fuzzy scoring (levels 1-2)"),
        DEBUG_WORD(GENR, W_REC, "Debug generator functions"),
+       DEBUG_WORD(HASH, W_SND|W_REC, "Debug hashtable code"),
        DEBUG_WORD(HLINK, W_SND|W_REC, "Debug hard-link actions"),
-       DEBUG_WORD(ICONV, W_CLI|W_SRV, "Debug iconv (character conversion)"),
+       DEBUG_WORD(ICONV, W_CLI|W_SRV, "Debug iconv character conversions (levels 1-2)"),
        DEBUG_WORD(OWN, W_REC, "Debug ownership changes in users & groups (levels 1-2)"),
        DEBUG_WORD(PROTO, W_CLI|W_SRV, "Debug protocol information"),
        DEBUG_WORD(RECV, W_REC, "Debug receiver functions"),
@@ -563,7 +565,8 @@ static void print_rsync_version(enum logcode f)
        STRUCT_STAT *dumstat;
 
 #if SUBPROTOCOL_VERSION != 0
-       asprintf(&subprotocol, ".PR%d", SUBPROTOCOL_VERSION);
+       if (asprintf(&subprotocol, ".PR%d", SUBPROTOCOL_VERSION) < 0)
+               out_of_memory("print_rsync_version");
 #endif
 #ifdef HAVE_SOCKETPAIR
        got_socketpair = "";
@@ -1669,7 +1672,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                }
        }
 
-       if (human_readable && argc == 2 && !am_server) {
+       if (human_readable > 1 && argc == 2 && !am_server) {
                /* Allow the old meaning of 'h' (--help) on its own. */
                usage(FINFO);
                exit_cleanup(0);
@@ -1682,6 +1685,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        verbose > 1 ? "stats3" : "stats2", DEFAULT_PRIORITY);
        }
 
+       if (human_readable) {
+               char buf[32];
+               snprintf(buf, sizeof buf, "%f", 3.14);
+               if (strchr(buf, '.') != NULL)
+                       number_separator = ',';
+               else
+                       number_separator = '.';
+       }
+
 #ifdef ICONV_OPTION
        if (iconv_opt && protect_args != 2) {
                if (!am_server && strcmp(iconv_opt, "-") == 0)
@@ -2244,6 +2256,9 @@ void server_options(char **args, int *argc_p)
                        argstr[x++] = 'i';
 #if defined HAVE_LUTIMES && defined HAVE_UTIMES
                argstr[x++] = 'L';
+#endif
+#ifdef ICONV_OPTION
+               argstr[x++] = 's';
 #endif
        }
 
@@ -2254,7 +2269,8 @@ void server_options(char **args, int *argc_p)
 
        argstr[x] = '\0';
 
-       args[ac++] = argstr;
+       if (x > 1)
+               args[ac++] = argstr;
 
 #ifdef ICONV_OPTION
        if (iconv_opt) {