summaryrefslogtreecommitdiff
path: root/Build/source/libs/zziplib/zziplib-0.13.58/zzip/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/zziplib/zziplib-0.13.58/zzip/dir.c')
-rw-r--r--Build/source/libs/zziplib/zziplib-0.13.58/zzip/dir.c182
1 files changed, 101 insertions, 81 deletions
diff --git a/Build/source/libs/zziplib/zziplib-0.13.58/zzip/dir.c b/Build/source/libs/zziplib/zziplib-0.13.58/zzip/dir.c
index a84a130486a..a5105fa78e9 100644
--- a/Build/source/libs/zziplib/zziplib-0.13.58/zzip/dir.c
+++ b/Build/source/libs/zziplib/zziplib-0.13.58/zzip/dir.c
@@ -1,3 +1,4 @@
+
/*
* Author:
* Guido Draheim <guidod@gmx.de>
@@ -10,9 +11,9 @@
* of the Mozilla Public License 1.1
*/
-#include <zzip/lib.h> /* exported... */
+#include <zzip/lib.h> /* exported... */
#include <zzip/file.h>
-#include <stddef.h> /*offsetof*/
+#include <stddef.h> /*offsetof */
#include <stdlib.h>
#include <string.h>
#include <errno.h>
@@ -31,11 +32,12 @@
#endif
#ifdef ZZIP_HAVE_SYS_STAT_H
+
/* MSVC does have IFbitmask but not the corresponding IStests */
-# if !defined S_ISDIR && defined S_IFDIR
+# if ! defined S_ISDIR && defined S_IFDIR
# define S_ISDIR(_X_) ((_X_) & S_IFDIR)
# endif
-# if !defined S_ISREG && defined S_IFREG
+# if ! defined S_ISREG && defined S_IFREG
# define S_ISREG(_X_) ((_X_) & S_IFREG)
# endif
#endif
@@ -46,12 +48,13 @@
* => zzip_opendir has a flag saying realdir or zipfile. As for a zipfile,
* the filenames will include the filesubpath, so take care.
*/
-void
+void
zzip_rewinddir(ZZIP_DIR * dir)
{
- if (! dir) return;
+ if (! dir)
+ return;
- if (USE_DIRENT && dir->realdir)
+ if (USE_DIRENT && dir->realdir)
{
_zzip_rewinddir(dir->realdir);
return;
@@ -67,12 +70,14 @@ zzip_rewinddir(ZZIP_DIR * dir)
#define real_readdir(_X_) 1
#else
static int
-real_readdir(ZZIP_DIR* dir)
+real_readdir(ZZIP_DIR * dir)
{
struct stat st = { 0 };
char filename[PATH_MAX];
- struct dirent* dirent = _zzip_readdir(dir->realdir);
- if (! dirent) return 0;
+ struct dirent *dirent = _zzip_readdir(dir->realdir);
+
+ if (! dirent)
+ return 0;
dir->dirent.d_name = dirent->d_name;
strcpy(filename, dir->realname);
@@ -89,16 +94,16 @@ real_readdir(ZZIP_DIR* dir)
if (! S_ISREG(st.st_mode))
{
dir->dirent.d_compr = st.st_mode;
- dir->dirent.d_compr |= 0x80000000;
- /* makes it effectively negative,
- * but can still be fed to S_ISXXX(x) */
- }else
+ dir->dirent.d_compr |= 0x80000000;
+ /* makes it effectively negative,
+ * but can still be fed to S_ISXXX(x) */
+ } else
{
- dir->dirent.d_compr = 0; /* stored */
+ dir->dirent.d_compr = 0; /* stored */
}
- }else
+ } else
{
- dir->dirent.d_compr = 0; /* stored */
+ dir->dirent.d_compr = 0; /* stored */
}
return 1;
@@ -114,28 +119,32 @@ real_readdir(ZZIP_DIR* dir)
* a ZZIP_DIRENT are d_name (the file name), d_compr (compression), d_csize
* (compressed size), st_size (uncompressed size).
*/
-ZZIP_DIRENT*
+ZZIP_DIRENT *
zzip_readdir(ZZIP_DIR * dir)
{
- if (! dir) { errno=EBADF; return 0; }
+ if (! dir)
+ { errno=EBADF; return 0; }
if (USE_DIRENT && dir->realdir)
{
if (! real_readdir(dir))
return 0;
- }else
+ } else
{
- if (! dir->hdr) return 0;
+ if (! dir->hdr)
+ return 0;
- dir->dirent.d_name = dir->hdr->d_name;
+ dir->dirent.d_name = dir->hdr->d_name;
dir->dirent.d_compr = dir->hdr->d_compr;
dir->dirent.d_csize = dir->hdr->d_csize;
dir->dirent.st_size = dir->hdr->d_usize;
- if (! dir->hdr->d_reclen) dir->hdr = 0;
- else dir->hdr = (struct zzip_dir_hdr *)
- ((char *)dir->hdr + dir->hdr->d_reclen);
+ if (! dir->hdr->d_reclen)
+ dir->hdr = 0;
+ else
+ dir->hdr = (struct zzip_dir_hdr *)
+ ((char *) dir->hdr + dir->hdr->d_reclen);
}
return &dir->dirent;
}
@@ -143,17 +152,18 @@ zzip_readdir(ZZIP_DIR * dir)
/** => zzip_rewinddir
* This function is the equivalent of => telldir(2) for a realdir or zipfile.
*/
-zzip_off_t
-zzip_telldir(ZZIP_DIR* dir)
+zzip_off_t
+zzip_telldir(ZZIP_DIR * dir)
{
- if (! dir) { errno=EBADF; return -1; }
+ if (! dir)
+ { errno=EBADF; return -1; }
if (USE_DIRENT && dir->realdir)
{
return _zzip_telldir(dir->realdir);
- }else
+ } else
{
- return ((zzip_off_t) ((char*) dir->hdr - (char*) dir->hdr0));
+ return ((zzip_off_t) ((char *) dir->hdr - (char *) dir->hdr0));
}
}
@@ -161,40 +171,45 @@ zzip_telldir(ZZIP_DIR* dir)
* This function is the equivalent of => seekdir(2) for a realdir or zipfile.
*/
void
-zzip_seekdir(ZZIP_DIR* dir, zzip_off_t offset)
+zzip_seekdir(ZZIP_DIR * dir, zzip_off_t offset)
{
- if (! dir) return;
-
+ if (! dir)
+ return;
+
if (USE_DIRENT && dir->realdir)
{
_zzip_seekdir(dir->realdir, offset);
- }else
+ } else
{
- dir->hdr = (struct zzip_dir_hdr*)
- (dir->hdr0 ? (char*) dir->hdr0 + (size_t) offset : 0);
+ dir->hdr = (struct zzip_dir_hdr *)
+ (dir->hdr0 ? (char *) dir->hdr0 + (size_t) offset : 0);
}
}
#if defined ZZIP_LARGEFILE_RENAME && defined EOVERFLOW && defined PIC
-#undef zzip_seekdir /* zzip_seekdir64 */
-#undef zzip_telldir /* zzip_telldir64 */
+#undef zzip_seekdir /* zzip_seekdir64 */
+#undef zzip_telldir /* zzip_telldir64 */
-long zzip_telldir(ZZIP_DIR* dir);
-void zzip_seekdir(ZZIP_DIR* dir, long offset);
+long zzip_telldir(ZZIP_DIR * dir);
+void zzip_seekdir(ZZIP_DIR * dir, long offset);
/* DLL compatibility layer - so that 32bit code can link with this lib too */
-long zzip_telldir(ZZIP_DIR* dir)
-{
- off_t off = zzip_telldir64 (dir);
+long
+zzip_telldir(ZZIP_DIR * dir)
+{
+ off_t off = zzip_telldir64(dir);
long offs = off;
- if (offs != off) { errno = EOVERFLOW; return -1; }
+
+ if (offs != off)
+ { errno = EOVERFLOW; return -1; }
return offs;
}
-void zzip_seekdir(ZZIP_DIR* dir, long offset)
-{
- zzip_seekdir64 (dir, offset);
+void
+zzip_seekdir(ZZIP_DIR * dir, long offset)
+{
+ zzip_seekdir64(dir, offset);
}
#endif
@@ -208,58 +223,62 @@ void zzip_seekdir(ZZIP_DIR* dir, long offset)
*
* the error-code is mapped to => errno(3).
*/
-ZZIP_DIR*
-zzip_opendir(zzip_char_t* filename)
+ZZIP_DIR *
+zzip_opendir(zzip_char_t * filename)
{
- return zzip_opendir_ext_io (filename, 0, 0, 0);
+ return zzip_opendir_ext_io(filename, 0, 0, 0);
}
/** => zzip_opendir
* This function uses explicit ext and io instead of the internal
* defaults, setting them to zero is equivalent to => zzip_opendir
*/
-ZZIP_DIR*
-zzip_opendir_ext_io(zzip_char_t* filename, int o_modes,
- zzip_strings_t* ext, zzip_plugin_io_t io)
+ZZIP_DIR *
+zzip_opendir_ext_io(zzip_char_t * filename, int o_modes,
+ zzip_strings_t * ext, zzip_plugin_io_t io)
{
zzip_error_t e;
- ZZIP_DIR* dir;
+ ZZIP_DIR *dir;
# ifdef ZZIP_HAVE_SYS_STAT_H
struct stat st;
# endif
- if (o_modes & (ZZIP_PREFERZIP|ZZIP_ONLYZIP)) goto try_zzip;
- try_real:
+ if (o_modes & (ZZIP_PREFERZIP | ZZIP_ONLYZIP))
+ goto try_zzip;
+ try_real:
# ifdef ZZIP_HAVE_SYS_STAT_H
- if (stat(filename, &st) >= 0 && S_ISDIR(st.st_mode)
- ){
- if (USE_DIRENT)
- {
- _zzip_DIR* realdir = _zzip_opendir(filename);
- if (realdir)
- {
- if (! (dir = (ZZIP_DIR *)calloc(1, sizeof (*dir))))
- {
- _zzip_closedir(realdir);
- return 0;
- }else
- {
- dir->realdir = realdir;
- dir->realname = strdup(filename);
- return dir;
- }
- }
+ if (stat(filename, &st) >= 0 && S_ISDIR(st.st_mode))
+ {
+ if (USE_DIRENT)
+ {
+ _zzip_DIR *realdir = _zzip_opendir(filename);
+
+ if (realdir)
+ {
+ if (! (dir = (ZZIP_DIR *) calloc(1, sizeof(*dir))))
+ {
+ _zzip_closedir(realdir);
+ return 0;
+ } else
+ {
+ dir->realdir = realdir;
+ dir->realname = strdup(filename);
+ return dir;
+ }
+ }
}
return 0;
}
# endif /* HAVE_SYS_STAT_H */
- try_zzip:
- dir = zzip_dir_open_ext_io (filename, &e, ext, io);
- if (! dir && (o_modes & ZZIP_PREFERZIP)) goto try_real;
- if (e) errno = zzip_errno(e);
+ try_zzip:
+ dir = zzip_dir_open_ext_io(filename, &e, ext, io);
+ if (! dir && (o_modes & ZZIP_PREFERZIP))
+ goto try_real;
+ if (e)
+ errno = zzip_errno(e);
return dir;
}
@@ -272,9 +291,10 @@ zzip_opendir_ext_io(zzip_char_t* filename, int o_modes,
* to => zzip_dir_close which will free the ZZIP_DIR structure.
*/
int
-zzip_closedir(ZZIP_DIR* dir)
+zzip_closedir(ZZIP_DIR * dir)
{
- if (! dir) { errno = EBADF; return -1; }
+ if (! dir)
+ { errno = EBADF; return -1; }
if (USE_DIRENT && dir->realdir)
{
@@ -282,7 +302,7 @@ zzip_closedir(ZZIP_DIR* dir)
free(dir->realname);
free(dir);
return 0;
- }else
+ } else
{
zzip_dir_close(dir);
return 0;