changeset:   2199:41450fc70ffc
tag:         tip
user:        Kris Maglione <jg_AT_suckless.org>
date:        Mon Jul 16 22:16:58 2007 -0400
summary:     Make fatal() a bit nicer.
diff -r 2c12bfc17f89 -r 41450fc70ffc cmd/util.c
--- a/cmd/util.c	Mon Jul 16 21:44:25 2007 -0400
+++ b/cmd/util.c	Mon Jul 16 22:16:58 2007 -0400
@@ -9,30 +9,37 @@
 #include <util.h>
 #include <fmt.h>
 
+typedef struct VFmt VFmt;
+struct VFmt {
+	const char *fmt;
+	va_list args;
+};
+
+#ifdef VARARGCK
+# pragma varargck type "V" VFmt*
+#endif
+
 static int
 Vfmt(Fmt *f) {
-	char *fmt;
-	va_list ap;
+	VFmt *vf;
         int i;
 
-	fmt = va_arg(f->args, char*);
-	va_copy(ap, va_arg(f->args, va_list));
-
-	i = fmtvprint(f, fmt, ap);
-	va_end(ap);
+	vf = va_arg(f->args, VFmt*);
+	i = fmtvprint(f, vf->fmt, vf->args);
         return i;
 }
 
 void
 fatal(const char *fmt, ...) {
-	va_list ap;
+	VFmt fp;
 
         fmtinstall('V', Vfmt);
         fmtinstall('\001', Vfmt);
 
-	va_start(ap, fmt);
-	fprint(2, "%s: fatal: %V\n", argv0, fmt, ap);
-	va_end(ap);
+	fp.fmt = fmt;
+	va_start(fp.args, fmt);
+	fprint(2, "%s: fatal: %V\n", argv0, &fp);
+	va_end(fp.args);
 
         exit(1);
 }
Received on Tue Jul 17 2007 - 04:19:45 UTC
This archive was generated by hypermail 2.2.0 : Sun Jul 13 2008 - 15:57:38 UTC