@@ -1,4 +1,4 @@ | |||||
VERSION := git-20160810 | |||||
VERSION := git-20160928 | |||||
PREFIX := /usr/local | PREFIX := /usr/local | ||||
MANPREFIX := $(PREFIX)/share/man | MANPREFIX := $(PREFIX)/share/man | ||||
@@ -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) { | |||||
error(0, 0, "%s: Is a directory", filename); | |||||
continue; | |||||
} | |||||
if (r_opendir(&dir, filename) < 0) { | |||||
if (r_opendir(&dir, filename, options->recursive) < 0) { | |||||
error(0, errno, "%s", filename); | error(0, errno, "%s", filename); | ||||
continue; | continue; | ||||
} | } | ||||
@@ -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; | ||||
} | } | ||||
@@ -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) | ||||
@@ -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*); | ||||