summaryrefslogtreecommitdiff
path: root/ext/zip/lib/zip_add_dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/zip/lib/zip_add_dir.c')
-rw-r--r--ext/zip/lib/zip_add_dir.c49
1 files changed, 4 insertions, 45 deletions
diff --git a/ext/zip/lib/zip_add_dir.c b/ext/zip/lib/zip_add_dir.c
index 0a9d7f4863..22a28bd856 100644
--- a/ext/zip/lib/zip_add_dir.c
+++ b/ext/zip/lib/zip_add_dir.c
@@ -1,6 +1,6 @@
/*
zip_add_dir.c -- add directory
- Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2013 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -33,56 +33,15 @@
-#include <stdlib.h>
-#include <string.h>
-
+#define _ZIP_COMPILING_DEPRECATED
#include "zipint.h"
/* NOTE: Signed due to -1 on error. See zip_add.c for more details. */
-ZIP_EXTERN(zip_int64_t)
+ZIP_EXTERN zip_int64_t
zip_add_dir(struct zip *za, const char *name)
{
- int len;
- zip_int64_t ret;
- char *s;
- struct zip_source *source;
-
- if (ZIP_IS_RDONLY(za)) {
- _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
- return -1;
- }
-
- if (name == NULL) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- s = NULL;
- len = strlen(name);
-
- if (name[len-1] != '/') {
- if ((s=(char *)malloc(len+2)) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return -1;
- }
- strcpy(s, name);
- s[len] = '/';
- s[len+1] = '\0';
- }
-
- if ((source=zip_source_buffer(za, NULL, 0, 0)) == NULL) {
- free(s);
- return -1;
- }
-
- ret = _zip_replace(za, -1, s ? s : name, source);
-
- free(s);
- if (ret < 0)
- zip_source_free(source);
-
- return ret;
+ return zip_dir_add(za, name, 0);
}