#if HAVE_CONFIG_H
#include "clamav-config.h"
#endif
#include <zzip.h>
#include <string.h>
#include "strc.h"
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*);
cmp = (flags & ZZIP_CASEINSENSITIVE) ? strcasecmp : strcmp;
if (flags & ZZIP_IGNOREPATH)
{
char* n = strrchr(name, '/');
if (n) name = n + 1;
}
if (hdr)
while (1)
{
register char* hdr_name = hdr->d_name;
if (flags & ZZIP_IGNOREPATH)
{
register char* n = strrchr(hdr_name, '/');
if (n) hdr_name = n + 1;
}
if (! cmp(hdr_name, name))
break;
if (! hdr->d_reclen)
{
dir->errcode = ZZIP_ENOENT;
return -1;
}
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;
return 0;
}