diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 10 | ||||
-rw-r--r-- | src/binlogcat.c | 34 | ||||
-rw-r--r-- | src/err.c | 62 | ||||
-rw-r--r-- | src/err.h | 21 |
4 files changed, 93 insertions, 34 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 9ce519f..4e31e89 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -16,9 +16,13 @@ AM_CPPFLAGS = -I$(VARNISHSRC)/include -I$(VARNISHSRC) +noinst_LIBRARIES = libbinlog.a +libbinlog_a_SOURCES = pack.c err.c +libbinlog_a_CFLAGS = $(AM_CFLAGS) + bin_PROGRAMS = binlogcat -binlogcat_SOURCES = binlogcat.c pack.c -binlogcat_CFLAGS = $(AM_CFLAGS) +binlogcat_SOURCES = binlogcat.c +binlogcat_LDADD = ./libbinlog.a vmoddir = $(VMODDIR) vmod_LTLIBRARIES = libvmod_binlog.la @@ -32,7 +36,7 @@ libvmod_binlog_la_SOURCES = \ vmod-binlog.h\ vcc_if.c vcc_if.h -noinst_HEADERS = pack.h +noinst_HEADERS = pack.h err.h BUILT_SOURCES = vcc_if.c vcc_if.h diff --git a/src/binlogcat.c b/src/binlogcat.c index 8cdfaaa..bdeb992 100644 --- a/src/binlogcat.c +++ b/src/binlogcat.c @@ -26,42 +26,14 @@ #include <string.h> #include "vmod-binlog.h" #include "pack.h" +#include "err.h" -char *progname; char *timefmt = "%c"; int number_option; int verbose_option; int timediff_option; void -verror(const char *fmt, va_list ap) -{ - fprintf(stderr, "%s: ", progname); - vfprintf(stderr, fmt, ap); - fputc('\n', stderr); -} - -void -error(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - verror(fmt, ap); - va_end(ap); -} - -void -packerror(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - verror(fmt, ap); - va_end(ap); -} - -void catlog(const char *fname) { FILE *fp; @@ -98,7 +70,7 @@ catlog(const char *fname) } if (header.version != BINLOG_VERSION) { - error("%s: unknown version", progname, fname); + error("%s: unknown version", fname); exit(1); } @@ -176,9 +148,9 @@ help() int main(int argc, char **argv) { - progname = argv[0]; int c; + setprogname(argv[0]); while ((c = getopt(argc, argv, "dht:nv")) != EOF) switch (c) { case 'd': diff --git a/src/err.c b/src/err.c new file mode 100644 index 0000000..73aaba7 --- /dev/null +++ b/src/err.c @@ -0,0 +1,62 @@ +/* This file is part of vmod-binlog + Copyright (C) 2013 Sergey Poznyakoff + + Vmod-binlog 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, or (at your option) + any later version. + + Vmod-binlog 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 vmod-binlog. If not, see <http://www.gnu.org/licenses/>. +*/ +#include <config.h> +#include <stdio.h> +#include <stdarg.h> +#include <string.h> +#include "err.h" + +const char *progname; + +void +setprogname(const char *arg) +{ + char *p = strrchr(arg, '/'); + if (p) + progname = p + 1; + else + progname = arg; +} + +void +verror(const char *fmt, va_list ap) +{ + fprintf(stderr, "%s: ", progname); + vfprintf(stderr, fmt, ap); + fputc('\n', stderr); +} + +void +error(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + verror(fmt, ap); + va_end(ap); +} + +void +packerror(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + verror(fmt, ap); + va_end(ap); +} + diff --git a/src/err.h b/src/err.h new file mode 100644 index 0000000..69139fd --- /dev/null +++ b/src/err.h @@ -0,0 +1,21 @@ +/* This file is part of vmod-binlog + Copyright (C) 2013 Sergey Poznyakoff + + Vmod-binlog 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, or (at your option) + any later version. + + Vmod-binlog 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 vmod-binlog. If not, see <http://www.gnu.org/licenses/>. +*/ +extern const char *progname; + +void setprogname(const char *); +void error(const char *fmt, ...); +void packerror(const char *fmt, ...); |