split_cmdline: Allow caller to access error string
This allows the caller to add its own error message to that returned by split_cmdline. Thus error output following a failed split_cmdline can be of the form fatal: Bad alias.test string: cmdline ends with \ rather than error: cmdline ends with \ fatal: Bad alias.test string Signed-off-by: Greg Brockman <gdb@mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
64fdc08dac
commit
ad9ac6db5d
14
alias.c
14
alias.c
@ -22,6 +22,13 @@ char *alias_lookup(const char *alias)
|
||||
return alias_val;
|
||||
}
|
||||
|
||||
#define SPLIT_CMDLINE_BAD_ENDING 1
|
||||
#define SPLIT_CMDLINE_UNCLOSED_QUOTE 2
|
||||
static const char *split_cmdline_errors[] = {
|
||||
"cmdline ends with \\",
|
||||
"unclosed quote"
|
||||
};
|
||||
|
||||
int split_cmdline(char *cmdline, const char ***argv)
|
||||
{
|
||||
int src, dst, count = 0, size = 16;
|
||||
@ -53,7 +60,7 @@ int split_cmdline(char *cmdline, const char ***argv)
|
||||
if (!c) {
|
||||
free(*argv);
|
||||
*argv = NULL;
|
||||
return error("cmdline ends with \\");
|
||||
return -SPLIT_CMDLINE_BAD_ENDING;
|
||||
}
|
||||
}
|
||||
cmdline[dst++] = c;
|
||||
@ -66,7 +73,7 @@ int split_cmdline(char *cmdline, const char ***argv)
|
||||
if (quoted) {
|
||||
free(*argv);
|
||||
*argv = NULL;
|
||||
return error("unclosed quote");
|
||||
return -SPLIT_CMDLINE_UNCLOSED_QUOTE;
|
||||
}
|
||||
|
||||
ALLOC_GROW(*argv, count+1, size);
|
||||
@ -75,3 +82,6 @@ int split_cmdline(char *cmdline, const char ***argv)
|
||||
return count;
|
||||
}
|
||||
|
||||
const char *split_cmdline_strerror(int split_cmdline_errno) {
|
||||
return split_cmdline_errors[-split_cmdline_errno-1];
|
||||
}
|
||||
|
Reference in New Issue
Block a user