chiark / gitweb /
watershed, common: Break out m_[v]asprintf into common.c (nfc0
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 21 Mar 2016 21:23:19 +0000 (21:23 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 21 Mar 2016 21:23:26 +0000 (21:23 +0000)
cprogs/Makefile
cprogs/common.c [new file with mode: 0644]
cprogs/common.h [new file with mode: 0644]
cprogs/watershed.c

index 77e14e2..c07dbdc 100644 (file)
@@ -74,7 +74,7 @@ summer:               LDLIBS += -lnettle -lgmp
 rcopy-repeatedly: rcopy-repeatedly.o myopt.o
 rcopy-repeatedly: LDLIBS += -lm -lrt
 
-watershed:     watershed.o
+watershed:     watershed.o common.o
 watershed:     LDLIBS += -lnettle -lgmp
 
 watershed.txt: watershed.c
diff --git a/cprogs/common.c b/cprogs/common.c
new file mode 100644 (file)
index 0000000..26dc476
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * common.[ch] - C helpers common to the whole of chiark-utils
+ *
+ * Copyright 2007 Canonical Ltd
+ * Copyright 2016 Canonical Ltd
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this file; if not, consult the Free Software
+ * Foundation's website at www.fsf.org, or the GNU Project website at
+ * www.gnu.org.
+ *
+ */
+
+#include "common.h"
+
+char *m_vasprintf(const char *fmt, va_list al) {
+  char *s;  int r;
+  r= vasprintf(&s,fmt,al);
+  if (r==-1) common_diee("vasprintf");
+  return s;
+}
+char *m_asprintf(const char *fmt, ...) {
+  char *s;  va_list al;
+  va_start(al,fmt); s= m_vasprintf(fmt,al); va_end(al);
+  return s;
+}
diff --git a/cprogs/common.h b/cprogs/common.h
new file mode 100644 (file)
index 0000000..ca0609b
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * common.[ch] - C helpers common to the whole of chiark-utils
+ *
+ * Copyright 2007 Canonical Ltd
+ * Copyright 2016 Canonical Ltd
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this file; if not, consult the Free Software
+ * Foundation's website at www.fsf.org, or the GNU Project website at
+ * www.gnu.org.
+ *
+ * Should be included early so that _GNU_SOURCE takes effect.
+ */
+
+#ifndef COMMON_H
+#define COMMON_H
+
+#define _GNU_SOURCE
+
+#include <stdarg.h>
+#include <stdio.h>
+
+char *m_vasprintf(const char *fmt, va_list al);
+char *m_asprintf(const char *fmt, ...);
+
+/* to be provided by program: */
+void common_die(const char *what);
+void common_diee(const char *what); /* prints errno */
+
+#endif /*COMMON_H*/
index 580d220..f8fbc89 100644 (file)
 /*
  */
 
-#define _GNU_SOURCE
+#include "common.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 
 #include <nettle/sha.h>
 
+#define die  common_die
+#define diee common_diee
+
 static const struct option os[]= {
   { "--state-dir", 1,0,'d' },
   { "--command-id",1,0,'i' },
@@ -308,11 +311,11 @@ static void badusage(void) {
   printusage(stderr);
   exit(127);
 }
-static void die(const char *m) {
+void die(const char *m) {
   fprintf(stderr,_("watershed: error: %s\n"), m);
   exit(127);
 }
-static void diee(const char *m) {
+void diee(const char *m) {
   fprintf(stderr,_("watershed: error: %s failed: %s\n"), m, strerror(errno));
   exit(127);
 }
@@ -322,18 +325,6 @@ static void dieep(const char *action, const char *path) {
   exit(127);
 }
 
-static char *m_vasprintf(const char *fmt, va_list al) {
-  char *s;  int r;
-  r= vasprintf(&s,fmt,al);
-  if (r==-1) diee("vasprintf");
-  return s;
-}
-static char *m_asprintf(const char *fmt, ...) {
-  char *s;  va_list al;
-  va_start(al,fmt); s= m_vasprintf(fmt,al); va_end(al);
-  return s;
-}
-
 static void parse_args(int argc, char *const *argv) {
   int o;
   for (;;) {