static NORETURN void die_nicely(const char *err, va_list params)
{
static int zombie;
- char message[2 * PATH_MAX];
- vsnprintf(message, sizeof(message), err, params);
- fputs("fatal: ", stderr);
- fputs(message, stderr);
- fputc('\n', stderr);
+ vreportf("fatal: ", err, params);
if (!zombie) {
+ char message[2 * PATH_MAX];
+
zombie = 1;
write_crash_report(message);
end_packfile();
#include "compat/bswap.h"
/* General helper functions */
+extern void vreportf(const char *prefix, const char *err, va_list params);
extern NORETURN void usage(const char *err);
extern NORETURN void usagef(const char *err, ...) __attribute__((format (printf, 1, 2)));
extern NORETURN void die(const char *err, ...) __attribute__((format (printf, 1, 2)));
static NORETURN void die_webcgi(const char *err, va_list params)
{
- char buffer[1000];
-
http_status(500, "Internal Server Error");
hdr_nocache();
end_headers();
- vsnprintf(buffer, sizeof(buffer), err, params);
- fprintf(stderr, "fatal: %s\n", buffer);
+ vreportf("fatal: ", err, params);
exit(0);
}
*/
#include "git-compat-util.h"
-static void report(const char *prefix, const char *err, va_list params)
+void vreportf(const char *prefix, const char *err, va_list params)
{
char msg[4096];
vsnprintf(msg, sizeof(msg), err, params);
static NORETURN void usage_builtin(const char *err, va_list params)
{
- report("usage: ", err, params);
+ vreportf("usage: ", err, params);
exit(129);
}
static NORETURN void die_builtin(const char *err, va_list params)
{
- report("fatal: ", err, params);
+ vreportf("fatal: ", err, params);
exit(128);
}
static void error_builtin(const char *err, va_list params)
{
- report("error: ", err, params);
+ vreportf("error: ", err, params);
}
static void warn_builtin(const char *warn, va_list params)
{
- report("warning: ", warn, params);
+ vreportf("warning: ", warn, params);
}
/* If we are in a dlopen()ed .so write to a global variable would segfault