refactoring (simplification) of util.h public API
This commit is contained in:
parent
81c51483e9
commit
76b9e42b0b
@ -24,6 +24,11 @@ extern "C" {
|
|||||||
#include <direct.h> /* needed for _mkdir in windows */
|
#include <direct.h> /* needed for _mkdir in windows */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__linux__) || (PLATFORM_POSIX_VERSION >= 200112L) /* opendir, readdir require POSIX.1-2001 */
|
||||||
|
# include <dirent.h> /* opendir, readdir */
|
||||||
|
# include <string.h> /* strerror, memcpy */
|
||||||
|
#endif /* #ifdef _WIN32 */
|
||||||
|
|
||||||
|
|
||||||
/*-****************************************
|
/*-****************************************
|
||||||
* Internal Macros
|
* Internal Macros
|
||||||
@ -40,6 +45,19 @@ extern "C" {
|
|||||||
} }
|
} }
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A modified version of realloc().
|
||||||
|
* If UTIL_realloc() fails the original block is freed.
|
||||||
|
*/
|
||||||
|
UTIL_STATIC void* UTIL_realloc(void *ptr, size_t size)
|
||||||
|
{
|
||||||
|
void *newptr = realloc(ptr, size);
|
||||||
|
if (newptr) return newptr;
|
||||||
|
free(ptr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-****************************************
|
/*-****************************************
|
||||||
* Console log
|
* Console log
|
||||||
******************************************/
|
******************************************/
|
||||||
@ -385,7 +403,7 @@ UTIL_concatenateTwoTables(FileNamesTable* table1, FileNamesTable* table2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int UTIL_prepareFileList(const char* dirName,
|
static int UTIL_prepareFileList(const char* dirName,
|
||||||
char** bufStart, size_t* pos,
|
char** bufStart, size_t* pos,
|
||||||
char** bufEnd, int followLinks)
|
char** bufEnd, int followLinks)
|
||||||
{
|
{
|
||||||
@ -450,7 +468,7 @@ int UTIL_prepareFileList(const char* dirName,
|
|||||||
|
|
||||||
#elif defined(__linux__) || (PLATFORM_POSIX_VERSION >= 200112L) /* opendir, readdir require POSIX.1-2001 */
|
#elif defined(__linux__) || (PLATFORM_POSIX_VERSION >= 200112L) /* opendir, readdir require POSIX.1-2001 */
|
||||||
|
|
||||||
int UTIL_prepareFileList(const char *dirName,
|
static int UTIL_prepareFileList(const char *dirName,
|
||||||
char** bufStart, size_t* pos,
|
char** bufStart, size_t* pos,
|
||||||
char** bufEnd, int followLinks)
|
char** bufEnd, int followLinks)
|
||||||
{
|
{
|
||||||
@ -518,7 +536,9 @@ int UTIL_prepareFileList(const char *dirName,
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
int UTIL_prepareFileList(const char *dirName, char** bufStart, size_t* pos, char** bufEnd, int followLinks)
|
static int UTIL_prepareFileList(const char *dirName,
|
||||||
|
char** bufStart, size_t* pos,
|
||||||
|
char** bufEnd, int followLinks)
|
||||||
{
|
{
|
||||||
(void)bufStart; (void)bufEnd; (void)pos; (void)followLinks;
|
(void)bufStart; (void)bufEnd; (void)pos; (void)followLinks;
|
||||||
UTIL_DISPLAYLEVEL(1, "Directory %s ignored (compiled without _WIN32 or _POSIX_C_SOURCE)\n", dirName);
|
UTIL_DISPLAYLEVEL(1, "Directory %s ignored (compiled without _WIN32 or _POSIX_C_SOURCE)\n", dirName);
|
||||||
@ -605,6 +625,12 @@ UTIL_createFileList(const char **inputNames, unsigned inputNamesNb,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void UTIL_freeFileList(const char** filenameTable, char* allocatedBuffer)
|
||||||
|
{
|
||||||
|
if (allocatedBuffer) free(allocatedBuffer);
|
||||||
|
if (filenameTable) free((void*)filenameTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-****************************************
|
/*-****************************************
|
||||||
|
@ -146,7 +146,20 @@ U64 UTIL_getFileSize(const char* infilename);
|
|||||||
|
|
||||||
U64 UTIL_getTotalFileSize(const char* const * fileNamesTable, unsigned nbFiles);
|
U64 UTIL_getTotalFileSize(const char* const * fileNamesTable, unsigned nbFiles);
|
||||||
|
|
||||||
/*Note: tableSize is denotes the total capacity of table*/
|
|
||||||
|
/*-****************************************
|
||||||
|
* Lists of Filenames
|
||||||
|
******************************************/
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# define UTIL_HAS_CREATEFILELIST
|
||||||
|
#elif defined(__linux__) || (PLATFORM_POSIX_VERSION >= 200112L) /* opendir, readdir require POSIX.1-2001 */
|
||||||
|
# define UTIL_HAS_CREATEFILELIST
|
||||||
|
#else
|
||||||
|
/* do not define UTIL_HAS_CREATEFILELIST */
|
||||||
|
#endif /* #ifdef _WIN32 */
|
||||||
|
|
||||||
|
/*Note: tableSize denotes the total capacity of table*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
const char** fileNames;
|
const char** fileNames;
|
||||||
@ -183,48 +196,29 @@ void UTIL_freeFileNamesTable(FileNamesTable* table);
|
|||||||
FileNamesTable*
|
FileNamesTable*
|
||||||
UTIL_concatenateTwoTables(FileNamesTable* table1, FileNamesTable* table2);
|
UTIL_concatenateTwoTables(FileNamesTable* table1, FileNamesTable* table2);
|
||||||
|
|
||||||
/*
|
|
||||||
* A modified version of realloc().
|
|
||||||
* If UTIL_realloc() fails the original block is freed.
|
|
||||||
*/
|
|
||||||
UTIL_STATIC void* UTIL_realloc(void *ptr, size_t size)
|
|
||||||
{
|
|
||||||
void *newptr = realloc(ptr, size);
|
|
||||||
if (newptr) return newptr;
|
|
||||||
free(ptr);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int UTIL_prepareFileList(const char* dirName, char** bufStart, size_t* pos, char** bufEnd, int followLinks);
|
|
||||||
#ifdef _WIN32
|
|
||||||
# define UTIL_HAS_CREATEFILELIST
|
|
||||||
#elif defined(__linux__) || (PLATFORM_POSIX_VERSION >= 200112L) /* opendir, readdir require POSIX.1-2001 */
|
|
||||||
# define UTIL_HAS_CREATEFILELIST
|
|
||||||
# include <dirent.h> /* opendir, readdir */
|
|
||||||
# include <string.h> /* strerror, memcpy */
|
|
||||||
#else
|
|
||||||
#endif /* #ifdef _WIN32 */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* UTIL_createFileList() :
|
* UTIL_createFileList() :
|
||||||
* takes a list of files and directories (params: inputNames, inputNamesNb), scans directories,
|
* takes a list of files and directories (@inputNames, @inputNamesNb),
|
||||||
* and returns a new list of files (params: return value, allocatedBuffer, allocatedNamesNb).
|
* scans directories, and returns a new list of files (@return, @allocatedBuffer, @allocatedNamesNb).
|
||||||
* After finishing usage of the list the structures should be freed with UTIL_freeFileList(params: return value, allocatedBuffer)
|
* In case of error, UTIL_createFileList() returns NULL.
|
||||||
* In case of error UTIL_createFileList returns NULL and UTIL_freeFileList should not be called.
|
* After list's end of life, the structures should be freed with UTIL_freeFileList (@return, @allocatedBuffer).
|
||||||
*/
|
*/
|
||||||
const char**
|
const char**
|
||||||
UTIL_createFileList(const char **inputNames, unsigned inputNamesNb,
|
UTIL_createFileList(const char **inputNames, unsigned inputNamesNb,
|
||||||
char** allocatedBuffer, unsigned* allocatedNamesNb,
|
char** allocatedBuffer, unsigned* allocatedNamesNb,
|
||||||
int followLinks);
|
int followLinks);
|
||||||
|
|
||||||
UTIL_STATIC void UTIL_freeFileList(const char** filenameTable, char* allocatedBuffer)
|
void UTIL_freeFileList(const char** filenameTable, char* allocatedBuffer);
|
||||||
{
|
|
||||||
if (allocatedBuffer) free(allocatedBuffer);
|
|
||||||
if (filenameTable) free((void*)filenameTable);
|
/*-****************************************
|
||||||
}
|
* System
|
||||||
|
******************************************/
|
||||||
|
|
||||||
int UTIL_countPhysicalCores(void);
|
int UTIL_countPhysicalCores(void);
|
||||||
|
|
||||||
|
|
||||||
#if defined (__cplusplus)
|
#if defined (__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user