From 53fa41189c35ecd1cc3a7a0ee5af8901b5b77f56 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Wed, 23 Jan 2019 14:53:10 +0100 Subject: [PATCH] Windows: use dirent from mingw instead of local implementation --- src/windows/dirent.c | 154 ---------------------------- src/windows/dirent.h | 57 ---------- src/windows/qmkrecoll/librecoll.pro | 3 +- 3 files changed, 1 insertion(+), 213 deletions(-) delete mode 100644 src/windows/dirent.c delete mode 100644 src/windows/dirent.h diff --git a/src/windows/dirent.c b/src/windows/dirent.c deleted file mode 100644 index 070f7d03..00000000 --- a/src/windows/dirent.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - - Implementation of POSIX directory browsing functions and types for Win32. - - Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com) - History: Created March 1997. Updated June 2003 and July 2012. - Rights: See end of file. - -*/ - -#include -#include -#include /* _findfirst and _findnext set errno iff they return -1 */ -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef ptrdiff_t handle_type; /* C99's intptr_t not sufficiently portable */ - -struct DIR -{ - handle_type handle; /* -1 for failed rewind */ - struct _finddata_t info; - struct dirent result; /* d_name null iff first time */ - char *name; /* null-terminated char string */ -}; - -DIR *opendir(const char *name) -{ - DIR *dir = 0; - - if(name && name[0]) - { - size_t base_length = strlen(name); - const char *all = /* search pattern must end with suitable wildcard */ - strchr("/\\", name[base_length - 1]) ? "*" : "/*"; - - if((dir = (DIR *) malloc(sizeof *dir)) != 0 && - (dir->name = (char *) malloc(base_length + strlen(all) + 1)) != 0) - { - strcat(strcpy(dir->name, name), all); - - if((dir->handle = - (handle_type) _findfirst(dir->name, &dir->info)) != -1) - { - dir->result.d_name = 0; - } - else /* rollback */ - { - free(dir->name); - free(dir); - dir = 0; - } - } - else /* rollback */ - { - free(dir); - dir = 0; - errno = ENOMEM; - } - } - else - { - errno = EINVAL; - } - - return dir; -} - -int closedir(DIR *dir) -{ - int result = -1; - - if(dir) - { - if(dir->handle != -1) - { - result = _findclose(dir->handle); - } - - free(dir->name); - free(dir); - } - - if(result == -1) /* map all errors to EBADF */ - { - errno = EBADF; - } - - return result; -} - -struct dirent *readdir(DIR *dir) -{ - struct dirent *result = 0; - - if(dir && dir->handle != -1) - { - if(!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1) - { - result = &dir->result; - result->d_mtime = dir->info.time_write; - result->d_size = dir->info.size; - result->d_name = dir->info.name; - if (dir->info.attrib & _A_SUBDIR) - result->d_mode = S_IFDIR; - else - result->d_mode = S_IFREG; - } - } - else - { - errno = EBADF; - } - - return result; -} - -void rewinddir(DIR *dir) -{ - if(dir && dir->handle != -1) - { - _findclose(dir->handle); - dir->handle = (handle_type) _findfirst(dir->name, &dir->info); - dir->result.d_name = 0; - } - else - { - errno = EBADF; - } -} - -#ifdef __cplusplus -} -#endif - -/* - - Copyright Kevlin Henney, 1997, 2003, 2012. All rights reserved. - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose is hereby granted without fee, provided - that this copyright and permissions notice appear in all copies and - derivatives. - - This software is supplied "as is" without express or implied warranty. - - But that said, if there are any problems please get in touch. - -*/ diff --git a/src/windows/dirent.h b/src/windows/dirent.h deleted file mode 100644 index 16bb0865..00000000 --- a/src/windows/dirent.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef DIRENT_INCLUDED -#define DIRENT_INCLUDED - -/* - - Declaration of POSIX directory browsing functions and types for Win32. - - Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com) - History: Created March 1997. Updated June 2003. - Rights: See end of file. - -*/ -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef struct DIR DIR; - -struct dirent -{ - char *d_name; - // The native call we use, findfirst/next return file attributes at once, - // no need for a separate stat() call in most cases - // Note that ctime is actually creation time. No use for posix. - time_t d_mtime; - off_t d_size; - int d_mode; // S_IFREG or S_IFDIR only -}; - -DIR *opendir(const char *); -int closedir(DIR *); -struct dirent *readdir(DIR *); -void rewinddir(DIR *); - -/* - - Copyright Kevlin Henney, 1997, 2003. All rights reserved. - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose is hereby granted without fee, provided - that this copyright and permissions notice appear in all copies and - derivatives. - - This software is supplied "as is" without express or implied warranty. - - But that said, if there are any problems please get in touch. - -*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/windows/qmkrecoll/librecoll.pro b/src/windows/qmkrecoll/librecoll.pro index 3cd71d9d..38324404 100644 --- a/src/windows/qmkrecoll/librecoll.pro +++ b/src/windows/qmkrecoll/librecoll.pro @@ -120,8 +120,7 @@ SOURCES += \ ../../utils/strmatcher.cpp \ ../../utils/transcode.cpp \ ../../utils/wipedir.cpp \ -../../windows/strptime.cpp \ -../../windows/dirent.c +../../windows/strptime.cpp INCLUDEPATH += ../../common ../../index ../../internfile ../../query \ ../../unac ../../utils ../../aspell ../../rcldb ../../qtgui \