From 557384a0628c82303db29ff0b81ac77c8fdb5a1d Mon Sep 17 00:00:00 2001 From: Haru Date: Thu, 3 Jan 2019 23:14:39 +0100 Subject: Extend the findfile() function with a general purpose context argument Signed-off-by: Haru --- src/common/utils.c | 15 +++++++-------- src/common/utils.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) (limited to 'src/common') diff --git a/src/common/utils.c b/src/common/utils.c index d4c838b56..238ebe65d 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -128,7 +128,7 @@ static char *checkpath(char *path, const char *srcpath) return path; } -void findfile(const char *p, const char *pat, void (func)(const char *)) +void findfile(const char *p, const char *pat, void (func)(const char *, void *context), void *context) { WIN32_FIND_DATAA FindFileData; HANDLE hFind; @@ -155,12 +155,11 @@ void findfile(const char *p, const char *pat, void (func)(const char *)) sprintf(tmppath,"%s%c%s",path,PATHSEP,FindFileData.cFileName); if (strstr(FindFileData.cFileName, pattern)) { - func( tmppath ); + func(tmppath, context); } - if( FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) - { - findfile(tmppath, pat, func); + if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) { + findfile(tmppath, pat, func, context); } }while (FindNextFileA(hFind, &FindFileData) != 0); FindClose(hFind); @@ -190,7 +189,7 @@ static char *checkpath(char *path, const char *srcpath) return path; } -void findfile(const char *p, const char *pat, void (func)(const char *)) +void findfile(const char *p, const char *pat, void (func)(const char *, void *context), void *context) { DIR* dir; ///< pointer to the scanned directory. struct dirent* entry; ///< pointer to one directory entry. @@ -220,7 +219,7 @@ void findfile(const char *p, const char *pat, void (func)(const char *)) // check if the pattern matches. if (strstr(entry->d_name, pattern)) { - func( tmppath ); + func(tmppath, context); } // check if it is a directory. if (stat(tmppath, &dir_stat) == -1) { @@ -230,7 +229,7 @@ void findfile(const char *p, const char *pat, void (func)(const char *)) // is this a directory? if (S_ISDIR(dir_stat.st_mode)) { // decent recursively - findfile(tmppath, pat, func); + findfile(tmppath, pat, func, context); } }//end while diff --git a/src/common/utils.h b/src/common/utils.h index f564dcf29..81234c843 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -39,7 +39,7 @@ void WriteDump(FILE* fp, const void* buffer, size_t length); void ShowDump(const void* buffer, size_t length); -void findfile(const char *p, const char *pat, void (func)(const char*)); +void findfile(const char *p, const char *pat, void (func)(const char *, void *), void *context); bool exists(const char* filename); /// calculates the value of A / B, in percent (rounded down) -- cgit v1.2.3-60-g2f50