1 #ifndef _ZZIP_WRITE_H
2 #define _ZZIP_WRITE_H
3 /*
4  * Example code. write support is not yet implemented.
5  *
6  * Copyright (c) Guido Draheim, use under copyleft (LGPL,MPL)
7  */
8 
9 #include <zzip/lib.h>
10 
11 #define ZZIP_NO_CREAT 1
12 
13 ZZIP_DIR*    zzip_dir_creat_ext_io(zzip_char_t* name, int o_mode,
14                                    zzip_strings_t* ext, zzip_plugin_io_t io);
15 ZZIP_DIR*    zzip_dir_creat(zzip_char_t* name, int o_mode);
16 int          zzip_file_mkdir(ZZIP_DIR* dir, zzip_char_t* name, int o_mode);
17 ZZIP_FILE*   zzip_file_creat(ZZIP_DIR* dir, zzip_char_t* name, int o_mode);
18 zzip_ssize_t zzip_file_write(ZZIP_FILE* file,
19                              const void* ptr, zzip_size_t len);
20 
21 ZZIP_DIR*    zzip_createdir(zzip_char_t* name, int o_mode);
22 zzip_ssize_t zzip_write(ZZIP_FILE* file, const void* ptr, zzip_size_t len);
23 zzip_size_t  zzip_fwrite(const void* ptr, zzip_size_t len,
24                          zzip_size_t multiply, ZZIP_FILE* file);
25 #ifndef zzip_savefile
26 #define zzip_savefile 0
27 #define zzip_savefile_is_null
28 #endif
29 
30 #ifdef _ZZIP_NO_INLINE
31 #define zzip_mkdir(_name_,_mode_) \
32         zzip_file_mkdir((zzip_savefile),(_name_),(_mode_))
33 #define zzip_creat(_name_,_mode_) \
34         zzip_file_creat((zzip_savefile),(_name_),(_mode_))
35 #define zzip_sync() \
36       { zzip_closedir((zzip_savefile)); (zzip_savefile) = 0; }
37 #define zzip_start(_name_,_mode_,_ext_) \
38       { if ((zzip_savefile)) zzip_closedir((zzip_savefile));
39          zzip_savefile = zzip_dir_creat(_name_, _mode_,_ext_); }
40 
41 #else
42 
43 _zzip_inline static int         zzip_mkdir(zzip_char_t* name, int o_mode)
44 {                   return zzip_file_mkdir(zzip_savefile, name, o_mode); }
45 _zzip_inline static ZZIP_FILE*  zzip_creat(zzip_char_t* name, int o_mode)
46 {                   return zzip_file_creat(zzip_savefile, name, o_mode); }
47 
48 #ifndef zzip_savefile_is_null
49 _zzip_inline static void        zzip_sync(void)
50 {                           zzip_closedir(zzip_savefile); zzip_savefile = 0; }
51 _zzip_inline static void        zzip_mkfifo(zzip_char_t* name, int o_mode)
52 {       if ((zzip_savefile)) zzip_closedir (zzip_savefile);
53              zzip_savefile = zzip_createdir(_name_,_mode_); }
54 #else
55 _zzip_inline static void        zzip_sync(void) {}
56 _zzip_inline static void        zzip_mkfifo(zzip_char_t* name, int o_mode) {}
57 #endif
58 #endif /* _ZZIP_NO_INLINE */
59 #endif /* _ZZIP_WRITE_H */
60