summaryrefslogtreecommitdiff
path: root/Build/source/libs/zziplib/zziplib-0.13.58/zzip/stat.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/zziplib/zziplib-0.13.58/zzip/stat.c')
-rw-r--r--Build/source/libs/zziplib/zziplib-0.13.58/zzip/stat.c74
1 files changed, 42 insertions, 32 deletions
diff --git a/Build/source/libs/zziplib/zziplib-0.13.58/zzip/stat.c b/Build/source/libs/zziplib/zziplib-0.13.58/zzip/stat.c
index 95bcf0c4051..1c9428357b1 100644
--- a/Build/source/libs/zziplib/zziplib-0.13.58/zzip/stat.c
+++ b/Build/source/libs/zziplib/zziplib-0.13.58/zzip/stat.c
@@ -1,3 +1,4 @@
+
/*
* Author:
* Guido Draheim <guidod@gmx.de>
@@ -17,12 +18,9 @@
* of
*/
-#include <zzip/lib.h> /* exported...*/
+#include <zzip/lib.h> /* exported... */
#include <zzip/file.h>
#include <string.h>
-#ifdef ZZIP_HAVE_STRINGS_H
-#include <strings.h>
-#endif
#include <sys/stat.h>
#define ZZIP_USE_INTERNAL
@@ -33,46 +31,53 @@
* opening that file first. Mostly used to obtain the uncompressed
* size of a file inside a zip-archive. see => zzip_dir_open.
*/
-int
-zzip_dir_stat(ZZIP_DIR * dir, zzip_char_t* name, ZZIP_STAT * zs, int flags)
+int
+zzip_dir_stat(ZZIP_DIR * dir, zzip_char_t * name, ZZIP_STAT * zs, int flags)
{
- struct zzip_dir_hdr * hdr = dir->hdr0;
- int (*cmp)(zzip_char_t*, zzip_char_t*);
+ struct zzip_dir_hdr *hdr = dir->hdr0;
+ int (*cmp) (zzip_char_t *, zzip_char_t *);
cmp = (flags & ZZIP_CASEINSENSITIVE) ? strcasecmp : strcmp;
+ if (! hdr)
+ {
+ dir->errcode = ZZIP_ENOENT;
+ return -1;
+ }
+
if (flags & ZZIP_IGNOREPATH)
{
- char* n = strrchr(name, '/');
- if (n) name = n + 1;
+ char *n = strrchr(name, '/');
+ if (n)
+ name = n + 1;
}
- if (hdr)
while (1)
{
- register char* hdr_name = hdr->d_name;
+ register char *hdr_name = hdr->d_name;
if (flags & ZZIP_IGNOREPATH)
{
- register char* n = strrchr(hdr_name, '/');
- if (n) hdr_name = n + 1;
+ register char *n = strrchr(hdr_name, '/');
+ if (n)
+ hdr_name = n + 1;
}
- if (! cmp(hdr_name, name))
+ if (! cmp(hdr_name, name))
break;
- if (! hdr->d_reclen)
- {
+ if (! hdr->d_reclen)
+ {
dir->errcode = ZZIP_ENOENT;
return -1;
- }
+ }
- hdr = (struct zzip_dir_hdr *) ((char *)hdr + hdr->d_reclen);
+ hdr = (struct zzip_dir_hdr *) ((char *) hdr + hdr->d_reclen);
}
zs->d_compr = hdr->d_compr;
zs->d_csize = hdr->d_csize;
zs->st_size = hdr->d_usize;
- zs->d_name = hdr->d_name;
+ zs->d_name = hdr->d_name;
return 0;
}
@@ -83,13 +88,15 @@ zzip_dir_stat(ZZIP_DIR * dir, zzip_char_t* name, ZZIP_STAT * zs, int flags)
* The st_size stat-member contains the uncompressed size. The optional
* d_name is never set here.
*/
-int zzip_file_stat (ZZIP_FILE* file, ZZIP_STAT* zs)
+int
+zzip_file_stat(ZZIP_FILE * file, ZZIP_STAT * zs)
{
- if (! file) return -1;
+ if (! file)
+ return -1;
zs->d_compr = file->method;
zs->d_csize = file->csize;
zs->st_size = file->usize;
- zs->d_name = 0;
+ zs->d_name = 0;
return 0;
}
@@ -100,18 +107,21 @@ int zzip_file_stat (ZZIP_FILE* file, ZZIP_STAT* zs)
* The optional d_name is never set here. For a real file, we do set the
* d_csize := st_size and d_compr := 0 for meaningful defaults.
*/
-int zzip_fstat (ZZIP_FILE* file, ZZIP_STAT* zs)
+int
+zzip_fstat(ZZIP_FILE * file, ZZIP_STAT * zs)
{
if (ZZIP_file_real(file))
{
- struct stat st;
- if (fstat (file->fd, &st) < 0) return -1;
- zs->st_size = st.st_size;
- zs->d_csize = st.st_size;
- zs->d_compr = 0;
- return 0;
- }else{
- return zzip_file_stat (file, zs);
+ struct stat st;
+ if (fstat(file->fd, &st) < 0)
+ return -1;
+ zs->st_size = st.st_size;
+ zs->d_csize = st.st_size;
+ zs->d_compr = 0;
+ return 0;
+ } else
+ {
+ return zzip_file_stat(file, zs);
}
}