Allow opening directories non-recursively
This commit is contained in:
parent
d69f39e3aa
commit
86dc6860f9
2
Makefile
2
Makefile
|
@ -1,4 +1,4 @@
|
||||||
VERSION := git-20160810
|
VERSION := git-20160928
|
||||||
|
|
||||||
PREFIX := /usr/local
|
PREFIX := /usr/local
|
||||||
MANPREFIX := $(PREFIX)/share/man
|
MANPREFIX := $(PREFIX)/share/man
|
||||||
|
|
6
main.c
6
main.c
|
@ -818,11 +818,7 @@ int main(int argc, char **argv)
|
||||||
if (!S_ISDIR(fstats.st_mode)) {
|
if (!S_ISDIR(fstats.st_mode)) {
|
||||||
check_add_file(filename, true);
|
check_add_file(filename, true);
|
||||||
} else {
|
} else {
|
||||||
if (!options->recursive) {
|
if (r_opendir(&dir, filename, options->recursive) < 0) {
|
||||||
error(0, 0, "%s: Is a directory", filename);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (r_opendir(&dir, filename) < 0) {
|
|
||||||
error(0, errno, "%s", filename);
|
error(0, errno, "%s", filename);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
2
thumbs.c
2
thumbs.c
|
@ -123,7 +123,7 @@ void tns_clean_cache(tns_t *tns)
|
||||||
char *cfile, *filename, *tpos;
|
char *cfile, *filename, *tpos;
|
||||||
r_dir_t dir;
|
r_dir_t dir;
|
||||||
|
|
||||||
if (r_opendir(&dir, cache_dir) < 0) {
|
if (r_opendir(&dir, cache_dir, true) < 0) {
|
||||||
error(0, errno, "%s", cache_dir);
|
error(0, errno, "%s", cache_dir);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
5
util.c
5
util.c
|
@ -89,7 +89,7 @@ void size_readable(float *size, const char **unit)
|
||||||
*unit = units[MIN(i, ARRLEN(units) - 1)];
|
*unit = units[MIN(i, ARRLEN(units) - 1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
int r_opendir(r_dir_t *rdir, const char *dirname)
|
int r_opendir(r_dir_t *rdir, const char *dirname, bool recursive)
|
||||||
{
|
{
|
||||||
if (*dirname == '\0')
|
if (*dirname == '\0')
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -106,6 +106,7 @@ int r_opendir(r_dir_t *rdir, const char *dirname)
|
||||||
|
|
||||||
rdir->name = (char*) dirname;
|
rdir->name = (char*) dirname;
|
||||||
rdir->d = 0;
|
rdir->d = 0;
|
||||||
|
rdir->recursive = recursive;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -167,7 +168,7 @@ char* r_readdir(r_dir_t *rdir)
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rdir->stlen > 0) {
|
if (rdir->recursive && rdir->stlen > 0) {
|
||||||
/* open next subdirectory */
|
/* open next subdirectory */
|
||||||
closedir(rdir->dir);
|
closedir(rdir->dir);
|
||||||
if (rdir->d != 0)
|
if (rdir->d != 0)
|
||||||
|
|
3
util.h
3
util.h
|
@ -55,6 +55,7 @@ typedef struct {
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
char *name;
|
char *name;
|
||||||
int d;
|
int d;
|
||||||
|
bool recursive;
|
||||||
|
|
||||||
char **stack;
|
char **stack;
|
||||||
int stcap;
|
int stcap;
|
||||||
|
@ -71,7 +72,7 @@ void error(int, int, const char*, ...);
|
||||||
|
|
||||||
void size_readable(float*, const char**);
|
void size_readable(float*, const char**);
|
||||||
|
|
||||||
int r_opendir(r_dir_t*, const char*);
|
int r_opendir(r_dir_t*, const char*, bool);
|
||||||
int r_closedir(r_dir_t*);
|
int r_closedir(r_dir_t*);
|
||||||
char* r_readdir(r_dir_t*);
|
char* r_readdir(r_dir_t*);
|
||||||
int r_mkdir(char*);
|
int r_mkdir(char*);
|
||||||
|
|
Loading…
Reference in a new issue