static int output_revs = 0;
static int flags_only = 0;
static int no_flags = 0;
+static int output_sq = 0;
#define NORMAL 0
#define REVERSED 1
}
}
+static void show(const char *arg)
+{
+ if (output_sq) {
+ int sq = '\'', ch;
+
+ putchar(sq);
+ while ((ch = *arg++)) {
+ if (ch == sq)
+ fputs("'\\'", stdout);
+ putchar(ch);
+ }
+ putchar(sq);
+ putchar(' ');
+ }
+ else
+ puts(arg);
+}
+
static void show_rev(int type, const unsigned char *sha1)
{
if (no_revs)
return;
output_revs++;
- printf("%s%s\n", type == show_type ? "" : "^", sha1_to_hex(sha1));
+
+ /* Hexadecimal string plus possibly a carret;
+ * this does not have to be quoted even under output_sq.
+ */
+ printf("%s%s%c", type == show_type ? "" : "^", sha1_to_hex(sha1),
+ output_sq ? ' ' : '\n');
}
static void show_rev_arg(char *rev)
{
if (no_revs)
return;
- puts(rev);
+ show(rev);
}
static void show_norev(char *norev)
return;
if (revs_only)
return;
- puts(norev);
+ show(norev);
}
static void show_arg(char *arg)
single_rev = 1;
continue;
}
+ if (!strcmp(arg, "--sq")) {
+ output_sq = 1;
+ continue;
+ }
if (!strcmp(arg, "--not")) {
show_type ^= REVERSED;
continue;