From: Ian Jackson Date: Mon, 21 Mar 2016 21:23:19 +0000 (+0000) Subject: watershed, common: Break out m_[v]asprintf into common.c (nfc0 X-Git-Tag: archive/debian/5.0.0~76 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=b075ddbfbdbf7d15d9f0c43d7316533cf9ed6229 watershed, common: Break out m_[v]asprintf into common.c (nfc0 --- diff --git a/cprogs/Makefile b/cprogs/Makefile index 77e14e2..c07dbdc 100644 --- a/cprogs/Makefile +++ b/cprogs/Makefile @@ -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 index 0000000..26dc476 --- /dev/null +++ b/cprogs/common.c @@ -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 index 0000000..ca0609b --- /dev/null +++ b/cprogs/common.h @@ -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 +#include + +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*/ diff --git a/cprogs/watershed.c b/cprogs/watershed.c index 580d220..f8fbc89 100644 --- a/cprogs/watershed.c +++ b/cprogs/watershed.c @@ -246,7 +246,7 @@ /* */ -#define _GNU_SOURCE +#include "common.h" #include #include @@ -267,6 +267,9 @@ #include +#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 (;;) {