aboutsummaryrefslogtreecommitdiff
path: root/lib/errors/usage.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/errors/usage.c')
-rw-r--r--lib/errors/usage.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/errors/usage.c b/lib/errors/usage.c
new file mode 100644
index 0000000..50ca04f
--- /dev/null
+++ b/lib/errors/usage.c
@@ -0,0 +1,26 @@
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "errors.h"
+#include "macros.h"
+
+void
+(usage)(const char *s, ...)
+{
+ ASSUME(s != nullptr);
+ ASSUME(mlib_progname() != nullptr);
+
+ va_list ap;
+ va_start(ap, s);
+
+ fprintf(stderr, "Usage: %s %s\n", mlib_progname(), s);
+
+ while ((s = va_arg(ap, char *)) != nullptr) {
+ for (size_t i = 0; i < lengthof("Usage: ") - 1; i++)
+ fputc(' ', stderr);
+ fprintf(stderr, "%s %s\n", mlib_progname(), s);
+ }
+
+ va_end(ap);
+}