if (!p)
return -ENOMEM;
- k = hashmap_put(h, path_get_file_name(p), p);
+ k = hashmap_put(h, basename(p), p);
if (k < 0) {
free(p);
if (k != -EEXIST)
for (;;) {
struct dirent *de;
- union dirent_storage buf;
int k;
char *p;
- k = readdir_r(d, &buf.de, &de);
- if (k != 0)
- return -k;
+ errno = 0;
+ de = readdir(d);
+ if (!de && errno != 0)
+ return -errno;
if (!de)
break;
path_kill_slashes(p);
- k = hashmap_put(top, path_get_file_name(p), p);
+ k = hashmap_put(top, basename(p), p);
if (k >= 0) {
p = strdup(p);
if (!p)
return k;
}
- free(hashmap_remove(bottom, path_get_file_name(p)));
- k = hashmap_put(bottom, path_get_file_name(p), p);
+ free(hashmap_remove(bottom, basename(p)));
+ k = hashmap_put(bottom, basename(p), p);
if (k < 0) {
free(p);
return k;