[PATCH 2 of 3] chg: add util function abortmsge to print error with errno

Jun Wu quark at fb.com
Tue Apr 5 10:21:17 EDT 2016


# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1459865259 -3600
#      Tue Apr 05 15:07:39 2016 +0100
# Node ID 6b037b1f423c08785c7c1abe3751f3be1fe550ed
# Parent  704d3febf4b7ea1063c2c3a58788de13fea31e79
chg: add util function abortmsge to print error with errno

It's common to abort with the errno information. Let's make it a utility
function.

diff --git a/contrib/chg/util.c b/contrib/chg/util.c
--- a/contrib/chg/util.c
+++ b/contrib/chg/util.c
@@ -7,6 +7,7 @@
  * GNU General Public License version 2 or any later version.
  */
 
+#include <errno.h>
 #include <signal.h>
 #include <stdarg.h>
 #include <stdio.h>
@@ -27,13 +28,15 @@
 	fprintf(fp, "\033[%sm", code);
 }
 
-void abortmsg(const char *fmt, ...)
+void abortmsge(const char *fmt, ...)
 {
 	va_list args;
 	va_start(args, fmt);
 	fsetcolor(stderr, "1;31");
 	fputs("chg: abort: ", stderr);
 	vfprintf(stderr, fmt, args);
+	if (errno != 0)
+		fprintf(stderr, " (errno = %d, %s)", errno, strerror(errno));
 	fsetcolor(stderr, "");
 	fputc('\n', stderr);
 	va_end(args);
diff --git a/contrib/chg/util.h b/contrib/chg/util.h
--- a/contrib/chg/util.h
+++ b/contrib/chg/util.h
@@ -16,7 +16,8 @@
 #define PRINTF_FORMAT_
 #endif
 
-void abortmsg(const char *fmt, ...) PRINTF_FORMAT_;
+void abortmsge(const char *fmt, ...) PRINTF_FORMAT_;
+#define abortmsg(...) { errno = 0; abortmsge(__VA_ARGS__); }
 
 void enablecolor(void);
 void enabledebugmsg(void);


More information about the Mercurial-devel mailing list