quote: simplify internals of dequoting

Our sq_dequote_to_argv_internal() helper was wrapped by the to_argv()
and to_strvec() forms. Now that we have only the latter, we can stop
wrapping it and drop the argv-only bits.

Note that in theory sq_dequote_to_strvec() could take a const input
string, which would be friendlier to its callers. We couldn't do that
with the to_argv() form because it reused the input string to hold the
output elements. But since we're built on sq_dequote_step(), which
munges the input, we'd have to rework the parser. Since no callers care
about it currently, we'll leave that for another day.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
Jeff King 2026-05-18 21:20:59 -04:00 committed by Junio C Hamano
parent c5f52d03e2
commit b56ab270aa
1 changed files with 2 additions and 14 deletions

16
quote.c
View File

@ -171,9 +171,7 @@ char *sq_dequote(char *arg)
return sq_dequote_step(arg, NULL);
}

static int sq_dequote_to_argv_internal(char *arg,
const char ***argv, int *nr, int *alloc,
struct strvec *array)
int sq_dequote_to_strvec(char *arg, struct strvec *array)
{
char *next = arg;

@ -191,22 +189,12 @@ static int sq_dequote_to_argv_internal(char *arg,
c = *++next;
} while (isspace(c));
}
if (argv) {
ALLOC_GROW(*argv, *nr + 1, *alloc);
(*argv)[(*nr)++] = dequoted;
}
if (array)
strvec_push(array, dequoted);
strvec_push(array, dequoted);
} while (next);

return 0;
}

int sq_dequote_to_strvec(char *arg, struct strvec *array)
{
return sq_dequote_to_argv_internal(arg, NULL, NULL, NULL, array);
}

/* 1 means: quote as octal
* 0 means: quote as octal if (quote_path_fully)
* -1 means: never quote