From 3e4f42cf6577901e054a02f2f1fb5c03cef7b3ac Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 19 Sep 2006 21:15:01 +0000 Subject: [PATCH] Added the test for bug #641. --- zoom/.cvsignore | 1 + zoom/Makefile.am | 5 +-- zoom/zoom-bug-641.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 zoom/zoom-bug-641.c diff --git a/zoom/.cvsignore b/zoom/.cvsignore index f8ba7d9..4ea6585 100644 --- a/zoom/.cvsignore +++ b/zoom/.cvsignore @@ -16,4 +16,5 @@ zoomtst9 zoomtst10 zoom-benchmark zoom-ka +zoom-bug-641 *.lo diff --git a/zoom/Makefile.am b/zoom/Makefile.am index 1a4cef2..f576da1 100644 --- a/zoom/Makefile.am +++ b/zoom/Makefile.am @@ -1,10 +1,10 @@ -## $Id: Makefile.am,v 1.21 2006-09-19 19:41:32 adam Exp $ +## $Id: Makefile.am,v 1.22 2006-09-19 21:15:01 adam Exp $ ## Copyright (C) 2001, Index Data AM_CPPFLAGS = -I$(top_srcdir)/include $(XML2_CFLAGS) bin_PROGRAMS = zoomsh -noinst_PROGRAMS = zoomtst1 zoomtst2 zoomtst3 zoomtst4 zoomtst5 zoomtst6 zoomtst7 zoomtst8 zoomtst9 zoomtst10 zoom-benchmark zoom-ka +noinst_PROGRAMS = zoomtst1 zoomtst2 zoomtst3 zoomtst4 zoomtst5 zoomtst6 zoomtst7 zoomtst8 zoomtst9 zoomtst10 zoom-benchmark zoom-ka zoom-bug-641 LDADD = ../src/libyaz.la $(READLINE_LIBS) @@ -21,5 +21,6 @@ zoomtst10_SOURCES = zoomtst10.c zoomsh_SOURCES = zoomsh.c zoom_benchmark_SOURCES = zoom-benchmark.c zoom_ka_SOURCES = zoom-ka.c +zoom_bug_641_SOURCES = zoom-bug-641.c diff --git a/zoom/zoom-bug-641.c b/zoom/zoom-bug-641.c new file mode 100644 index 0000000..24a4b17 --- /dev/null +++ b/zoom/zoom-bug-641.c @@ -0,0 +1,90 @@ +/* $Id: zoom-bug-641.c,v 1.1 2006-09-19 21:15:01 adam Exp $ */ + +/** \file zoom-bug641.c + \brief Program to illustrate bug 641 +*/ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef WIN32 +#error Unix only +#endif + +int main(int argc, char **argv) +{ + ZOOM_connection z; + int i, error; + const char *errmsg, *addinfo; + + if (argc < 3) { + fprintf(stderr, "Usage:\n%s [ ...]\n", argv[0]); + fprintf(stderr, " eg. bagel.indexdata.dk/gils foo.xml bar.xml\n"); + return 1; + } + + z = ZOOM_connection_create(0); + + for (i = 2; i < argc; i++) { + char *buf, *fn = argv[i]; + struct stat statbuf; + size_t size, offset = 0; + int fd, n; + + ZOOM_connection_connect(z, argv[1], 0); + if ((error = ZOOM_connection_error(z, &errmsg, &addinfo))) { + fprintf(stderr, "Error: %s (%d) %s\n", errmsg, error, addinfo); + return 2; + } + + if (stat(fn, &statbuf) < 0 || + (fd = open(fn, O_RDONLY)) < 0) { + perror(fn); + return 3; + } + size = statbuf.st_size; + printf("size=%lu\n", (unsigned long) size); + buf = xmalloc(size+1); + while ((n = read(fd, &buf[offset], size)) < size) { + if (n < 0) { + perror("read"); + return 4; + } + size -= n; + offset += n; + } + close(fd); + buf[size] = 0; + + { + ZOOM_package pkg = ZOOM_connection_package(z, 0); + ZOOM_package_option_set(pkg, "action", "specialUpdate"); + ZOOM_package_option_set(pkg, "record", buf); + ZOOM_package_send(pkg, "update"); + if ((error = ZOOM_connection_error(z, &errmsg, &addinfo))) { + printf("file '%s': error %d (%s) %s\n", + fn, error, errmsg, addinfo); + } else { + printf("file '%s': ok\n", fn); + } + } + + xfree(buf); + if (i < argc-1) sleep(2); + } + + ZOOM_connection_destroy(z); + return 0; +} +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ -- 1.7.10.4