treat any file with NUL as binary
[gitweb.git] / builtin-for-each-ref.c
index bfde2e2bbeffaed68b369b25cfe1b5ef4b108e12..f36a43c26459bd386618e551e2e93743cd8030aa 100644 (file)
@@ -13,8 +13,8 @@
 #define QUOTE_NONE 0
 #define QUOTE_SHELL 1
 #define QUOTE_PERL 2
-#define QUOTE_PYTHON 3
-#define QUOTE_TCL 4
+#define QUOTE_PYTHON 4
+#define QUOTE_TCL 8
 
 typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } cmp_type;
 
@@ -833,16 +833,19 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
        int i, num_refs;
        const char *format = "%(objectname) %(objecttype)\t%(refname)";
        struct ref_sort *sort = NULL, **sort_tail = &sort;
-       int maxcount = 0, quote_style;
-       int quote_shell = 0, quote_perl = 0, quote_python = 0, quote_tcl = 0;
+       int maxcount = 0, quote_style = 0;
        struct refinfo **refs;
        struct grab_ref_cbdata cbdata;
 
        struct option opts[] = {
-               OPT_BOOLEAN('s', "shell", &quote_shell, "quote placeholders suitably for shells"),
-               OPT_BOOLEAN('p', "perl",  &quote_perl, "quote placeholders suitably for perl"),
-               OPT_BOOLEAN( 0 , "python", &quote_python, "quote placeholders suitably for python"),
-               OPT_BOOLEAN( 0 , "tcl",  &quote_tcl, "quote placeholders suitably for tcl"),
+               OPT_BIT('s', "shell", &quote_style,
+                       "quote placeholders suitably for shells", QUOTE_SHELL),
+               OPT_BIT('p', "perl",  &quote_style,
+                       "quote placeholders suitably for perl", QUOTE_PERL),
+               OPT_BIT(0 , "python", &quote_style,
+                       "quote placeholders suitably for python", QUOTE_PYTHON),
+               OPT_BIT(0 , "tcl",  &quote_style,
+                       "quote placeholders suitably for tcl", QUOTE_TCL),
 
                OPT_GROUP(""),
                OPT_INTEGER( 0 , "count", &maxcount, "show only <n> matched refs"),
@@ -857,15 +860,13 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
                error("invalid --count argument: `%d'", maxcount);
                usage_with_options(for_each_ref_usage, opts);
        }
-       if (quote_shell + quote_perl + quote_python + quote_tcl > 1) {
-               error("more than one quoting style ?");
+       if (HAS_MULTI_BITS(quote_style)) {
+               error("more than one quoting style?");
                usage_with_options(for_each_ref_usage, opts);
        }
        if (verify_format(format))
                usage_with_options(for_each_ref_usage, opts);
 
-       quote_style = QUOTE_SHELL * quote_shell + QUOTE_PERL * quote_perl +
-               QUOTE_PYTHON * quote_python + QUOTE_TCL * quote_tcl;
        if (!sort)
                sort = default_sort();
        sort_atom_limit = used_atom_cnt;