#include <dirent.h>
#endif
+#include "c.h"
#include "configs.h"
+#include "strutils.h"
#include "list.h"
#include "fileutils.h"
d->d_type != DT_LNK)
return 0;
#endif
- if (*d->d_name == '.')
+ if (is_dotdir_dirent(d))
return 0;
- /* Accept this */
return 1;
}
for (i = 0; i < nfiles; i++) {
struct dirent *d = namelist[i];
- size_t namesz = strlen(d->d_name);
- if (config_suffix && strlen(config_suffix) > 0 &&
- (!namesz || namesz < strlen(config_suffix) + 1 ||
- strcmp(d->d_name + (namesz - strlen(config_suffix)), config_suffix) != 0)) {
- /* filename does not have requested suffix */
- continue;
+ if (config_suffix) {
+ const char *p = ul_endswith(d->d_name, config_suffix);
+
+ if (!p || p == d->d_name || *(p - 1) != '.')
+ continue;
}
if (asprintf(&filename, "%s/%s", dirname, d->d_name) < 0) {