From 1bc010665e53bdf226370ab12a7ae3f87250df4d Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Tue, 19 Apr 2016 11:21:06 +0100 Subject: Reduce unecessary use of directory entry headers The config header was causing many source files to unecessarily include the dirent headers causing extra dependancies. This has been fixed by providing a utility dirent header that provides a common API across all platforms while removing the unecessary dirent header usage. --- utils/config.h | 5 ----- utils/dirent.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ utils/filename.c | 3 +-- utils/utils.c | 5 +++++ 4 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 utils/dirent.h (limited to 'utils') diff --git a/utils/config.h b/utils/config.h index 8f05b23dc..ddd1c6e8e 100644 --- a/utils/config.h +++ b/utils/config.h @@ -20,7 +20,6 @@ #define _NETSURF_UTILS_CONFIG_H_ #include -#include /* Try to detect which features the target OS supports */ @@ -107,10 +106,6 @@ char *realpath(const char *path, char *resolved_path); #define HAVE_SCANDIR #if (defined(_WIN32)) #undef HAVE_SCANDIR -int alphasort(const struct dirent **d1, const struct dirent **d2); -int scandir(const char *dir, struct dirent ***namelist, - int (*sel)(const struct dirent *), - int (*compar)(const struct dirent **, const struct dirent **)); #endif /* This section toggles build options on and off. diff --git a/utils/dirent.h b/utils/dirent.h new file mode 100644 index 000000000..a22e21ac3 --- /dev/null +++ b/utils/dirent.h @@ -0,0 +1,45 @@ +/* + * Copyright 2016 Vincent Sanders + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file directory traversal and entry + * + * This allows the obtaining of standard directory entry routines + * functions in a uniform way despite any oddities in headers and + * supported API between OS. + * + * \note This functionality was previously provided as a side effect of the + * utils config header include. + */ + +#ifndef _NETSURF_UTILS_DIRENT_H_ +#define _NETSURF_UTILS_DIRENT_H_ + +#include "utils/config.h" + +#include + +#ifndef HAVE_SCANDIR + +int alphasort(const struct dirent **d1, const struct dirent **d2); +int scandir(const char *dir, struct dirent ***namelist, + int (*sel)(const struct dirent *), + int (*compar)(const struct dirent **, const struct dirent **)); +#endif + +#endif diff --git a/utils/filename.c b/utils/filename.c index 19ee03968..9c95901a1 100644 --- a/utils/filename.c +++ b/utils/filename.c @@ -24,7 +24,6 @@ #include #include -#include #include #include #include @@ -33,7 +32,7 @@ #include #include -#include "utils/config.h" +#include "utils/dirent.h" #include "utils/filename.h" #include "utils/log.h" #include "utils/utils.h" diff --git a/utils/utils.c b/utils/utils.c index 53c0fbe38..a332f88f7 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -38,7 +38,9 @@ #include "utils/messages.h" #include "utils/utf8.h" #include "utils/time.h" +#include "utils/sys_time.h" #include "utils/inet.h" +#include "utils/dirent.h" #include "utils/utils.h" /* exported interface documented in utils/utils.h */ @@ -399,11 +401,14 @@ int dir_sort_alpha(const struct dirent **d1, const struct dirent **d2) #ifndef HAVE_SCANDIR + +/* exported function documented in utils/dirent.h */ int alphasort(const struct dirent **d1, const struct dirent **d2) { return strcasecmp((*d1)->d_name, (*d2)->d_name); } +/* exported function documented in utils/dirent.h */ int scandir(const char *dir, struct dirent ***namelist, int (*sel)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **)) -- cgit v1.2.3