Add the globbing flag GLOB_PERIOD.
authorSimon Schubert <corecode@dragonflybsd.org>
Wed, 7 Dec 2005 02:28:15 +0000 (02:28 +0000)
committerSimon Schubert <corecode@dragonflybsd.org>
Wed, 7 Dec 2005 02:28:15 +0000 (02:28 +0000)
This allows matching of filenames that starts with a dot.

include/glob.h
lib/libc/gen/glob.3
lib/libc/gen/glob.c

index b1c9a53..a34bd5b 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     @(#)glob.h      8.1 (Berkeley) 6/2/93
  * $FreeBSD: src/include/glob.h,v 1.3.6.3 2002/09/18 14:13:30 mikeh Exp $
- * $DragonFly: src/include/glob.h,v 1.3 2003/11/14 01:01:43 dillon Exp $
+ * $DragonFly: src/include/glob.h,v 1.4 2005/12/07 02:28:15 corecode Exp $
  */
 
 #ifndef _GLOB_H_
@@ -90,6 +90,7 @@ typedef struct {
 #define        GLOB_QUOTE      0x0400  /* Quote special chars with \. */
 #define        GLOB_TILDE      0x0800  /* Expand tilde names from the passwd file. */
 #define        GLOB_LIMIT      0x1000  /* limit number of returned paths */
+#define        GLOB_PERIOD     0x4000  /* Names with leading dots match as well */
 
 /* source compatibility, these are the old names */
 #define GLOB_MAXPATH   GLOB_LIMIT
index a129f5d..f8ff79a 100644 (file)
@@ -33,9 +33,9 @@
 .\"
 .\"     @(#)glob.3     8.3 (Berkeley) 4/16/94
 .\" $FreeBSD: src/lib/libc/gen/glob.3,v 1.7.2.11 2003/03/15 15:11:05 trhodes Exp $
-.\" $DragonFly: src/lib/libc/gen/glob.3,v 1.2 2003/06/17 04:26:42 dillon Exp $
+.\" $DragonFly: src/lib/libc/gen/glob.3,v 1.3 2005/12/07 02:28:15 corecode Exp $
 .\"
-.Dd April 16, 1994
+.Dd December 6, 2005
 .Dt GLOB 3
 .Os
 .Sh NAME
@@ -271,6 +271,8 @@ that can be coerced into a denial of service attack
 via patterns that expand to a very large number of matches,
 such as a long string of
 .Ql */../*/.. .
+.It Dv GLOB_PERIOD
+Allow matching of pathnames which start with a period.
 .El
 .Pp
 If, during the search, a directory is encountered that cannot be opened
index 796ac44..9394752 100644 (file)
@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libc/gen/glob.c,v 1.11.6.6 2002/09/18 14:13:31 mikeh Exp $
- * $DragonFly: src/lib/libc/gen/glob.c,v 1.5 2005/11/13 00:07:42 swildner Exp $
+ * $DragonFly: src/lib/libc/gen/glob.c,v 1.6 2005/12/07 02:28:15 corecode Exp $
  *
  * @(#)glob.c  8.3 (Berkeley) 10/13/93
  * $FreeBSD: src/lib/libc/gen/glob.c,v 1.11.6.6 2002/09/18 14:13:31 mikeh Exp $
@@ -613,7 +613,8 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last, const Char *pattern,
                Char *dc;
 
                /* Initial DOT must be matched literally. */
-               if (dp->d_name[0] == DOT && *pattern != DOT)
+               if (dp->d_name[0] == DOT && *pattern != DOT &&
+                   !(pglob->gl_flags & GLOB_PERIOD))
                        continue;
                dc = pathend;
                sc = (u_char *) dp->d_name;