diff options
author | Pierre Joye <pajoye@php.net> | 2009-01-02 00:07:57 +0000 |
---|---|---|
committer | Pierre Joye <pajoye@php.net> | 2009-01-02 00:07:57 +0000 |
commit | d00fb8b360e5ef776dacc97301be3affe91dfb22 (patch) | |
tree | 8948a54710ae5874ef326cb23c25bf955c39893a /ext/zip/lib | |
parent | 14f2f4148c689daca1f77e95be98617d6552dd0c (diff) | |
download | php-git-d00fb8b360e5ef776dacc97301be3affe91dfb22.tar.gz |
- MFB: restore overwrite feature (regression introduced in 5.2.8)
Diffstat (limited to 'ext/zip/lib')
-rw-r--r-- | ext/zip/lib/zip_open.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/zip/lib/zip_open.c b/ext/zip/lib/zip_open.c index 10c5e1e6d8..cd78281790 100644 --- a/ext/zip/lib/zip_open.c +++ b/ext/zip/lib/zip_open.c @@ -65,10 +65,14 @@ zip_open(const char *fn, int flags, int *zep) struct zip_cdir *cdir; int i; off_t len; - + + switch (_zip_file_exists(fn, flags, zep)) { case -1: - return NULL; + if (!(flags & ZIP_OVERWRITE)) { + return NULL; + } + case 0: return _zip_allocate_new(fn, zep); default: @@ -440,7 +444,7 @@ _zip_file_exists(const char *fn, int flags, int *zep) } if (stat(fn, &st) != 0) { - if (flags & ZIP_CREATE) + if (flags & ZIP_CREATE || flags & ZIP_OVERWRITE) return 0; else { set_error(zep, NULL, ZIP_ER_OPEN); |