Rizin
unix-like reverse engineering framework and cli tools
zip_dir_add.c File Reference
#include <stdlib.h>
#include <string.h>
#include "zipint.h"

Go to the source code of this file.

Functions

ZIP_EXTERN zip_int64_t zip_dir_add (zip_t *za, const char *name, zip_flags_t flags)
 

Function Documentation

◆ zip_dir_add()

ZIP_EXTERN zip_int64_t zip_dir_add ( zip_t za,
const char *  name,
zip_flags_t  flags 
)

Definition at line 44 of file zip_dir_add.c.

44  {
45  size_t len;
47  char *s;
49 
50  if (ZIP_IS_RDONLY(za)) {
52  return -1;
53  }
54 
55  if (name == NULL) {
57  return -1;
58  }
59 
60  s = NULL;
61  len = strlen(name);
62 
63  if (name[len - 1] != '/') {
64  if ((s = (char *)malloc(len + 2)) == NULL) {
66  return -1;
67  }
68  strcpy(s, name);
69  s[len] = '/';
70  s[len + 1] = '\0';
71  }
72 
73  if ((source = zip_source_buffer(za, NULL, 0, 0)) == NULL) {
74  free(s);
75  return -1;
76  }
77 
79 
80  free(s);
81 
82  if (idx < 0)
84  else {
87  return -1;
88  }
89  }
90 
91  return idx;
92 }
size_t len
Definition: 6502dis.c:15
#define NULL
Definition: cris-opc.c:27
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130
ZIP_EXTERN void zip_error_set(zip_error_t *_Nullable, int, int)
Definition: zip_error.c:126
#define ZIP_ER_MEMORY
Definition: zip.h:119
ZIP_EXTERN int zip_file_set_external_attributes(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint8_t, zip_uint32_t)
ZIP_EXTERN int zip_delete(zip_t *_Nonnull, zip_uint64_t)
Definition: zip_delete.c:39
#define ZIP_ER_RDONLY
Definition: zip.h:130
#define ZIP_ER_INVAL
Definition: zip.h:123
ZIP_EXTERN void zip_source_free(zip_source_t *_Nullable)
#define ZIP_OPSYS_DEFAULT
Definition: zip.h:216
ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer(zip_t *_Nonnull, const void *_Nullable, zip_uint64_t, int)
void * malloc(size_t size)
Definition: malloc.c:123
const char * source
Definition: lz4.h:699
int idx
Definition: setup.py:197
static RzSocket * s
Definition: rtr.c:28
static struct sockaddr static addrlen static backlog const void static flags void flags
Definition: sfsocketcall.h:123
Definition: z80asm.h:102
zip_error_t error
Definition: zipint.h:281
zip_int64_t _zip_file_replace(zip_t *za, zip_uint64_t idx, const char *name, zip_source_t *source, zip_flags_t flags)
uint64_t zip_uint64_t
Definition: zipconf.h:39
#define ZIP_UINT64_MAX
Definition: zipconf.h:55
int64_t zip_int64_t
Definition: zipconf.h:38
#define ZIP_IS_RDONLY(za)
Definition: zipint.h:479
#define ZIP_EXT_ATTRIB_DEFAULT_DIR
Definition: zipint.h:95
zip_t * za
Definition: ziptool.c:79

References _zip_file_replace(), zip::error, flags, free(), setup::idx, len, malloc(), NULL, s, source, za, zip_delete(), ZIP_ER_INVAL, ZIP_ER_MEMORY, ZIP_ER_RDONLY, zip_error_set(), ZIP_EXT_ATTRIB_DEFAULT_DIR, zip_file_set_external_attributes(), ZIP_IS_RDONLY, ZIP_OPSYS_DEFAULT, zip_source_buffer(), zip_source_free(), and ZIP_UINT64_MAX.

Referenced by zip_add_dir().