Applied patch from Matt Kraai to add v*error functions for handling vararg
lists in a safe 'n sane fashion.
diff --git a/utility.c b/utility.c
index 7c41ab8..eb33383 100644
--- a/utility.c
+++ b/utility.c
@@ -84,16 +84,21 @@
exit(EXIT_FAILURE);
}
+static void verrorMsg(const char *s, va_list p)
+{
+ fflush(stdout);
+ fprintf(stderr, "%s: ", applet_name);
+ vfprintf(stderr, s, p);
+ fflush(stderr);
+}
+
extern void errorMsg(const char *s, ...)
{
va_list p;
va_start(p, s);
- fflush(stdout);
- fprintf(stderr, "%s: ", applet_name);
- vfprintf(stderr, s, p);
+ verrorMsg(s, p);
va_end(p);
- fflush(stderr);
}
extern void fatalError(const char *s, ...)
@@ -101,12 +106,21 @@
va_list p;
va_start(p, s);
+ verrorMsg(s, p);
+ va_end(p);
+ exit(EXIT_FAILURE);
+}
+
+static void vperrorMsg(const char *s, va_list p)
+{
fflush(stdout);
fprintf(stderr, "%s: ", applet_name);
- vfprintf(stderr, s, p);
- va_end(p);
+ if (s && *s) {
+ vfprintf(stderr, s, p);
+ fputs(": ", stderr);
+ }
+ fprintf(stderr, "%s\n", strerror(errno));
fflush(stderr);
- exit(EXIT_FAILURE);
}
extern void perrorMsg(const char *s, ...)
@@ -114,15 +128,8 @@
va_list p;
va_start(p, s);
- fflush(stdout);
- fprintf(stderr, "%s: ", applet_name);
- if (s && *s) {
- vfprintf(stderr, s, p);
- fputs(": ", stderr);
- }
- fprintf(stderr, "%s\n", strerror(errno));
+ vperrorMsg(s, p);
va_end(p);
- fflush(stderr);
}
extern void fatalPerror(const char *s, ...)
@@ -130,15 +137,8 @@
va_list p;
va_start(p, s);
- fflush(stdout);
- fprintf(stderr, "%s: ", applet_name);
- if (s && *s) {
- vfprintf(stderr, s, p);
- fputs(": ", stderr);
- }
- fprintf(stderr, "%s\n", strerror(errno));
+ vperrorMsg(s, p);
va_end(p);
- fflush(stderr);
exit(EXIT_FAILURE);
}