/*
- Copyright 2015 IoT.bzh
+ Copyright 2015, 2016, 2017 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
int rc;
DIR *dir;
struct dirent *ent;
- struct {
- struct dirent entry;
- char spare[PATH_MAX];
- } entry;
dir = fdopendir(dirfd);
if (dir == NULL) {
}
for (;;) {
rc = -1;
- if (readdir_r(dir, &entry.entry, &ent) != 0)
- goto error;
- if (ent == NULL)
+ errno = 0;
+ ent = readdir(dir);
+ if (ent == NULL) {
+ if (errno)
+ goto error;
break;
+ }
if (ent->d_name[0] == '.' && (ent->d_name[1] == 0
|| (ent->d_name[1] == '.' && ent->d_name[2] == 0)))
continue;
}
/* create a directory */
-int create_directory_at(int dirfd, const char *directory, int mode, int mkparents)
+int create_directory_at(int dirfd, const char *directory, mode_t mode, int mkparents)
{
- int rc, len, l;
+ int rc;
+ size_t len, l;
char *copy;
const char *iter;
/* check parent of dest */
iter = strrchr(directory, '/');
- len = iter ? iter - directory : 0;
+ len = iter ? (size_t)(iter - directory) : 0;
if (!len)
return rc;
copy = strndupa(directory, len);
return mkdirat(dirfd, directory, mode);
}
-int create_directory(const char *directory, int mode, int mkparents)
+int create_directory(const char *directory, mode_t mode, int mkparents)
{
return create_directory_at(AT_FDCWD, directory, mode, mkparents);
}