diff options
Diffstat (limited to 'Src/glob.c')
-rw-r--r-- | Src/glob.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Src/glob.c b/Src/glob.c index 857afc5fd..c0d23aa00 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -1322,6 +1322,9 @@ zglob(LinkList list, LinkNode np, int nountok) func = qualmodeflags; data = qgetmodespec(&s); break; + case 'F': + func = qualnonemptydir; + break; case 'M': /* Mark directories with a / */ if ((gf_markdirs = !(sense & 1))) @@ -2799,3 +2802,24 @@ qualsheval(char *name, struct stat *buf, off_t days, char *str) } return 0; } + +/**/ +static int +qualnonemptydir(char *name, struct stat *buf, off_t days, char *str) +{ + DIR *dirh = opendir(name); + struct dirent *de; + + if (dirh == NULL) + return 0; + + while ((de = readdir(dirh))) { + if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) { + closedir(dirh); + return 1; + } + } + + closedir(dirh); + return 0; +} |