* regress/Makefile.am: enable add_from_filep test.
* regress/add_from_filep.c, regress/add_from_filep.test: new
testcase.
--HG--
branch : HEAD
diff --git a/ChangeLog b/ChangeLog
index 08365e7..cc696ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-07-17 Thomas Klausner <wiz@danbala.tuwien.ac.at>
+
+ * regress/Makefile.am: enable add_from_filep test.
+ * regress/add_from_filep.c, regress/add_from_filep.test: new
+ testcase.
+
2005-07-16 Thomas Klausner <wiz@danbala.tuwien.ac.at>
* regress/runtest: fix typo in comment. Do not require args line.
diff --git a/regress/Makefile.am b/regress/Makefile.am
index dcc573c..e66423e 100644
--- a/regress/Makefile.am
+++ b/regress/Makefile.am
@@ -1,4 +1,5 @@
-noinst_PROGRAMS=add_from_buffer add_from_file open name_locate fread
+noinst_PROGRAMS=add_from_buffer add_from_file add_from_filep \
+ open name_locate fread
noinst_HEADERS=mkname.h
EXTRA_PROGRAMS=ziptest deltest
@@ -19,8 +20,9 @@
TESTS_ENVIRONMENT= SRCDIR=${srcdir}
TESTCASES= \
- add_from_file.test \
add_from_buffer.test \
+ add_from_file.test \
+ add_from_filep.test \
fread.test \
name_locate.test \
open.test
diff --git a/regress/add_from_filep.c b/regress/add_from_filep.c
new file mode 100644
index 0000000..a478304
--- /dev/null
+++ b/regress/add_from_filep.c
@@ -0,0 +1,107 @@
+/*
+ $NiH$
+
+ add_from_filep.c -- test case for adding file to archive
+ Copyright (C) 1999, 2003, 2005 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <nih@giga.or.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "zip.h"
+
+static const char *prg;
+
+int
+main(int argc, char *argv[])
+{
+ char *srcdata;
+ const char *archive;
+ const char *file;
+ const char *name;
+ struct zip *za;
+ struct zip_file *zf;
+ struct zip_source *zs;
+ char buf[100];
+ int err;
+ FILE *fp;
+
+ prg = argv[0];
+
+ if (argc != 3) {
+ fprintf(stderr, "usage: %s archive file\n", prg);
+ return 1;
+ }
+
+ archive = argv[1];
+ file = argv[2];
+
+ if ((za=zip_open(archive, ZIP_CREATE, &err)) == NULL) {
+ zip_error_to_str(buf, sizeof(buf), err, errno);
+ fprintf(stderr,"%s: can't open zip archive %s: %s\n", prg,
+ archive, buf);
+ return 1;
+ }
+
+ if ((fp=fopen(file, "r")) == NULL) {
+ fprintf(stderr,"%s: can't open input file `%s': %s\n", prg,
+ file, strerror(errno));
+ return 1;
+ }
+
+ if ((zs=zip_source_filep(za, fp, 0, -1)) == NULL) {
+ fprintf(stderr,"%s: error creating file source for `%s': %s\n", prg,
+ file, zip_strerror(za));
+ return 1;
+ }
+
+ if ((name=strrchr(file, '/')) == NULL)
+ name = file;
+
+ if (zip_add(za, name, zs) == -1) {
+ zip_source_free(zs);
+ fprintf(stderr,"%s: can't add file `%s': %s\n", prg,
+ file, zip_strerror(za));
+ return 1;
+ }
+
+ if (zip_close(za) == -1) {
+ fprintf(stderr,"%s: can't close zip archive `%s'\n", prg,
+ archive);
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/regress/add_from_filep.test b/regress/add_from_filep.test
new file mode 100644
index 0000000..ec3c45a
--- /dev/null
+++ b/regress/add_from_filep.test
@@ -0,0 +1,7 @@
+# add file to zip
+# $NiH$
+program add_from_filep
+return 0
+args testfile.zip testfile.txt
+copy testfile.txt testfile.txt
+filenew testfile.zip testfile.zip