From fda060370fe0f6abe71be309c71ee7658adfc647 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 1 Apr 2004 18:33:05 +0000 Subject: 19717: (F) glob qualifier for full directories --- Src/glob.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'Src/glob.c') 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; +} -- cgit 1.4.1