static zip_t * _zip_allocate_new(zip_source_t *src, unsigned int flags, zip_error_t *error) { zip_t *za; if ((za = _zip_new(error)) == NULL) { return NULL; } za->src = src; za->open_flags = flags; if (flags & ZIP_RDONLY) { za->flags |= ZIP_AFL_RDONLY; za->ch_flags |= ZIP_AFL_RDONLY; } return za; }
static struct zip * _zip_allocate_new(const char *fn, int *zep) { struct zip *za; struct zip_error error; if ((za=_zip_new(&error)) == NULL) { set_error(zep, &error, 0); return NULL; } za->zn = strdup(fn); if (!za->zn) { _zip_free(za); set_error(zep, NULL, ZIP_ER_MEMORY); return NULL; } return za; }
static struct zip * _zip_allocate_new(const char *fn, unsigned int flags, int *zep) { struct zip *za; struct zip_error error; if ((za=_zip_new(&error)) == NULL) { set_error(zep, &error, 0); return NULL; } if (fn == NULL) za->zn = NULL; else { za->zn = strdup(fn); if (!za->zn) { zip_discard(za); set_error(zep, NULL, ZIP_ER_MEMORY); return NULL; } } za->open_flags = flags; return za; }