From: Victor Julien Date: Mon, 11 Dec 2017 12:32:47 +0000 (+0100) Subject: mingw: fix issues in pcap directory code X-Git-Tag: suricata-4.1.0-beta1~388 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d62a212fa2b81baee7d34cf8f33b910728de3042;p=thirdparty%2Fsuricata.git mingw: fix issues in pcap directory code Fix issues with 'stat' and explicitly skip . and .. --- diff --git a/src/source-pcap-file-directory-helper.c b/src/source-pcap-file-directory-helper.c index fdeb898504..7367442c96 100644 --- a/src/source-pcap-file-directory-helper.c +++ b/src/source-pcap-file-directory-helper.c @@ -229,17 +229,31 @@ TmEcode PcapDetermineDirectoryOrFile(char *filename, DIR **directory) int PcapDirectoryGetModifiedTime(char const *file, struct timespec *out) { +#ifdef OS_WIN32 + struct _stat buf; +#else struct stat buf; +#endif /* OS_WIN32 */ int ret; if (file == NULL) return -1; +#ifdef OS_WIN32 + if((ret = _stat(file, &buf)) != 0) + return ret; +#else if ((ret = stat(file, &buf)) != 0) return ret; +#endif #ifdef OS_DARWIN *out = buf.st_mtimespec; +#elif OS_WIN32 + struct timespec ts; + memset(&ts, 0, sizeof(ts)); + ts.tv_sec = buf.st_mtime; + *out = ts; #else *out = buf.st_mtim; #endif @@ -316,9 +330,15 @@ TmEcode PcapDirectoryPopulateBuffer(PcapFileDirectoryVars *pv, PendingFile *file_to_add = NULL; while ((dir = readdir(pv->directory)) != NULL) { +#ifndef OS_WIN32 if (dir->d_type != DT_REG) { continue; } +#endif + if (strcmp(dir->d_name, ".") == 0 || + strcmp(dir->d_name, "..") == 0) { + continue; + } char pathbuff[PATH_MAX] = {0};