lib.c, lib.h: Introduce `vmoan_syserr' and `moan_syserr'.
[dvdrip] / lib.c
diff --git a/lib.c b/lib.c
index 08616a7..69532e8 100644 (file)
--- a/lib.c
+++ b/lib.c
@@ -6,32 +6,30 @@ void set_prog(const char *p)
   { const char *q = strrchr(p, '/'); prog = q ? q + 1 : p; }
 
 void vmoan(const char *fmt, va_list ap)
-  { fprintf(stderr, "%s: ", prog); vfprintf(stderr, fmt, ap); }
+  { vmoan_syserr(0, fmt, ap); }
 
-void moan(const char *fmt, ...)
+void vmoan_syserr(int err, const char *fmt, va_list ap)
 {
-  va_list ap;
-
-  va_start(ap, fmt); vmoan(fmt, ap); va_end(ap);
+  fprintf(stderr, "%s: ", prog);
+  vfprintf(stderr, fmt, ap);
+  if (err) fprintf(stderr, ": %s", strerror(errno));
   fputc('\n', stderr);
 }
 
-void bail(const char *fmt, ...)
-{
-  va_list ap;
+void moan(const char *fmt, ...)
+  { va_list ap; va_start(ap, fmt); vmoan(fmt, ap); va_end(ap); }
 
-  va_start(ap, fmt); vmoan(fmt, ap); va_end(ap);
-  fputc('\n', stderr);
-  exit(2);
-}
+void moan_syserr(int err, const char *fmt, ...)
+  { va_list ap; va_start(ap, fmt); vmoan_syserr(err, fmt, ap); va_end(ap); }
+
+void bail(const char *fmt, ...)
+  { va_list ap; va_start(ap, fmt); vmoan(fmt, ap); va_end(ap); exit(2); }
 
 void bail_syserr(int err, const char *fmt, ...)
 {
   va_list ap;
 
-  va_start(ap, fmt); vmoan(fmt, ap); va_end(ap);
-  if (err) fprintf(stderr, ": %s", strerror(errno));
-  fputc('\n', stderr);
+  va_start(ap, fmt); vmoan_syserr(err, fmt, ap); va_end(ap);
   exit(2);
 }