Rizin
unix-like reverse engineering framework and cli tools
zip_source_open.c File Reference
#include "zipint.h"

Go to the source code of this file.

Functions

ZIP_EXTERN int zip_source_open (zip_source_t *src)
 

Function Documentation

◆ zip_source_open()

ZIP_EXTERN int zip_source_open ( zip_source_t src)

Definition at line 38 of file zip_source_open.c.

38  {
39  if (src->source_closed) {
40  return -1;
41  }
42  if (src->write_state == ZIP_SOURCE_WRITE_REMOVED) {
43  zip_error_set(&src->error, ZIP_ER_DELETED, 0);
44  return -1;
45  }
46 
49  zip_error_set(&src->error, ZIP_ER_INUSE, 0);
50  return -1;
51  }
52  }
53  else {
55  if (zip_source_open(src->src) < 0) {
56  _zip_error_set_from_source(&src->error, src->src);
57  return -1;
58  }
59  }
60 
61  if (_zip_source_call(src, NULL, 0, ZIP_SOURCE_OPEN) < 0) {
63  zip_source_close(src->src);
64  }
65  return -1;
66  }
67  }
68 
69  src->eof = false;
70  src->had_read_error = false;
71  _zip_error_clear(&src->error);
72  src->bytes_read = 0;
73  src->open_count++;
74 
75  return 0;
76 }
lzma_index * src
Definition: index.h:567
#define NULL
Definition: cris-opc.c:27
ZIP_EXTERN int zip_source_close(zip_source_t *_Nonnull)
ZIP_EXTERN void zip_error_set(zip_error_t *_Nullable, int, int)
Definition: zip_error.c:126
#define ZIP_ER_DELETED
Definition: zip.h:128
#define ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd)
Definition: zip.h:243
@ ZIP_SOURCE_SEEK
Definition: zip.h:226
@ ZIP_SOURCE_OPEN
Definition: zip.h:220
#define ZIP_ER_INUSE
Definition: zip.h:134
void _zip_error_set_from_source(zip_error_t *err, zip_source_t *src)
Definition: zip_error.c:135
void _zip_error_clear(zip_error_t *err)
Definition: zip_error.c:92
zip_int64_t _zip_source_call(zip_source_t *src, void *data, zip_uint64_t length, zip_source_cmd_t command)
ZIP_EXTERN int zip_source_open(zip_source_t *src)
zip_int64_t zip_source_supports(zip_source_t *src)
@ ZIP_SOURCE_WRITE_REMOVED
Definition: zipint.h:379
#define ZIP_SOURCE_IS_LAYERED(src)
Definition: zipint.h:404
#define ZIP_SOURCE_IS_OPEN_READING(src)
Definition: zipint.h:402

References _zip_error_clear(), _zip_error_set_from_source(), _zip_source_call(), NULL, src, ZIP_ER_DELETED, ZIP_ER_INUSE, zip_error_set(), zip_source_close(), ZIP_SOURCE_IS_LAYERED, ZIP_SOURCE_IS_OPEN_READING, ZIP_SOURCE_MAKE_COMMAND_BITMASK, ZIP_SOURCE_OPEN, zip_source_open(), ZIP_SOURCE_SEEK, zip_source_supports(), and ZIP_SOURCE_WRITE_REMOVED.

Referenced by copy_source(), main(), write_memory_src_to_file(), zip_fopen_index_encrypted(), zip_open_from_source(), and zip_source_open().