usage.c: move format processing out of die_errno()

fmt_with_err() will be shared with the coming error_errno() and warning_errno(). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed May 8, 2016 at 16:47 UTC 58e4e5118ae3707b417a19e8dc9224ac25c3f32f
1 file changed +16 -11
usage.c
+16 -11
@@ -109,19 +109,11 @@ void NORETURN die(const char *err, ...)
109 va_end(params);
110 }
111
112 -void NORETURN die_errno(const char *fmt, ...)
112 +static const char *fmt_with_err(char *buf, int n, const char *fmt)
113 {
114 - va_list params;
115 - char fmt_with_err[1024];
114 char str_error[256], *err;
115 int i, j;
116
119 - if (die_is_recursing()) {
120 - fputs("fatal: recursion detected in die_errno handler\n",
121 - stderr);
122 - exit(128);
123 - }
124 -
117 err = strerror(errno);
118 for (i = j = 0; err[i] && j < sizeof(str_error) - 1; ) {
119 if ((str_error[j++] = err[i++]) != '%')
@@ -136,10 +128,23 @@ void NORETURN die_errno(const char *fmt, ...)
128 }
129 }
130 str_error[j] = 0;
139 - snprintf(fmt_with_err, sizeof(fmt_with_err), "%s: %s", fmt, str_error);
131 + snprintf(buf, n, "%s: %s", fmt, str_error);
132 + return buf;
133 +}
134 +
135 +void NORETURN die_errno(const char *fmt, ...)
136 +{
137 + char buf[1024];
138 + va_list params;
139 +
140 + if (die_is_recursing()) {
141 + fputs("fatal: recursion detected in die_errno handler\n",
142 + stderr);
143 + exit(128);
144 + }
145
146 va_start(params, fmt);
142 - die_routine(fmt_with_err, params);
147 + die_routine(fmt_with_err(buf, sizeof(buf), fmt), params);
148 va_end(params);
149 }
150