summaryrefslogtreecommitdiffabout
path: root/src/binlogcat.c
authorSergey Poznyakoff <gray@gnu.org.ua>2013-10-13 10:39:50 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2013-10-13 10:56:37 (GMT)
commit58f7dbc0658b3d73816a1bc91b75c2bdac733510 (patch) (side-by-side diff)
tree3d971a9b1a3fd25ca46588112c3a314f971d584f /src/binlogcat.c
parent23f262e8c6181465347c3bb47644f9d86fcb7432 (diff)
downloadvmod-binlog-58f7dbc0658b3d73816a1bc91b75c2bdac733510.tar.gz
vmod-binlog-58f7dbc0658b3d73816a1bc91b75c2bdac733510.tar.bz2
Fix error checking, add pack tests.
* src/binlog.c (vmod_init): Fix error checking after packcomp. * src/binlogcat.c (catlog): Likewise. * tests/binpack.c (main): Likewise. * src/pack.c (Z_unpacker): Fix output format. (packcomp): allow for whitespace between specifiers. On error set errno and return NULL. * tests/Makefile.am: Add pack.at * tests/testsuite.at: Likewise. * tests/pack.at: New file. * tests/test02.at: Fix name pattern.
Diffstat (limited to 'src/binlogcat.c') (more/less context) (ignore whitespace changes)
-rw-r--r--src/binlogcat.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/binlogcat.c b/src/binlogcat.c
index bdeb992..505bbc2 100644
--- a/src/binlogcat.c
+++ b/src/binlogcat.c
@@ -92,8 +92,13 @@ catlog(const char *fname)
fname, dataspec, header.recsize, header.recnum);
inst = packcomp(dataspec, &p);
- if (*p) {
- error("%s: bad dataspec near %s", dataspec, p);
+ if (!inst) {
+ if (errno == EINVAL) {
+ error("%s: bad dataspec near %s", dataspec, p);
+ exit(1);
+ }
+
+ error("%s", strerror(errno));
exit(1);
}
free(dataspec);
@@ -101,7 +106,7 @@ catlog(const char *fname)
rec = malloc(header.recsize);
if (!rec) {
error("not enough memory");
- abort();
+ exit(1);
}
env = packenv_create(header.recsize -
offsetof(struct binlog_record,data));

Return to:

Send suggestions and report system problems to the System administrator.