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
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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*/
/*
*/
-#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' },
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);
}
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 (;;) {