Module Name: src Committed By: christos Date: Thu Dec 27 21:17:47 UTC 2012
Modified Files: src/lib/libc/gen: glob.3 glob.c Log Message: Instead of changing the code to match the documentation, change the documentation to match the code. NOCHECK is used only by csh(1) and csh(1) is too broken for words (histchars quoting is "special"). To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/lib/libc/gen/glob.3 cvs rdiff -u -r1.32 -r1.33 src/lib/libc/gen/glob.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/gen/glob.3 diff -u src/lib/libc/gen/glob.3:1.41 src/lib/libc/gen/glob.3:1.42 --- src/lib/libc/gen/glob.3:1.41 Sun Aug 12 09:31:41 2012 +++ src/lib/libc/gen/glob.3 Thu Dec 27 16:17:47 2012 @@ -1,4 +1,4 @@ -.\" $NetBSD: glob.3,v 1.41 2012/08/12 13:31:41 christos Exp $ +.\" $NetBSD: glob.3,v 1.42 2012/12/27 21:17:47 christos Exp $ .\" .\" Copyright (c) 1989, 1991, 1993, 1994 .\" The Regents of the University of California. All rights reserved. @@ -31,7 +31,7 @@ .\" .\" @(#)glob.3 8.3 (Berkeley) 4/16/94 .\" -.Dd August 12, 2012 +.Dd December 27, 2012 .Dt GLOB 3 .Os .Sh NAME @@ -185,7 +185,8 @@ does not match any pathname, then returns a list consisting of only .Fa pattern , -with the number of total pathnames set to 1, and the number of matched +with one level of backslash escapes removed, +the number of total pathnames set to 1, and the number of matched pathnames set to 0. .It Dv GLOB_NOSORT By default, the pathnames are sorted in ascending Index: src/lib/libc/gen/glob.c diff -u src/lib/libc/gen/glob.c:1.32 src/lib/libc/gen/glob.c:1.33 --- src/lib/libc/gen/glob.c:1.32 Mon Dec 17 20:39:56 2012 +++ src/lib/libc/gen/glob.c Thu Dec 27 16:17:47 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: glob.c,v 1.32 2012/12/18 01:39:56 christos Exp $ */ +/* $NetBSD: glob.c,v 1.33 2012/12/27 21:17:47 christos Exp $ */ /* * Copyright (c) 1989, 1993 @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)glob.c 8.3 (Berkeley) 10/13/93"; #else -__RCSID("$NetBSD: glob.c,v 1.32 2012/12/18 01:39:56 christos Exp $"); +__RCSID("$NetBSD: glob.c,v 1.33 2012/12/27 21:17:47 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -163,7 +163,7 @@ static int g_lstat(Char *, __gl_stat_t static DIR *g_opendir(Char *, glob_t *); static Char *g_strchr(const Char *, int); static int g_stat(Char *, __gl_stat_t *, glob_t *); -static int glob0(const char *, const Char *, glob_t *, struct glob_limit *); +static int glob0(const Char *, glob_t *, struct glob_limit *); static int glob1(Char *, glob_t *, struct glob_limit *); static int glob2(Char *, Char *, Char *, const Char *, glob_t *, struct glob_limit *); @@ -171,8 +171,8 @@ static int glob3(Char *, Char *, Char * const Char *, glob_t *, struct glob_limit *); static int globextend(const Char *, glob_t *, struct glob_limit *); static const Char *globtilde(const Char *, Char *, size_t, glob_t *); -static int globexp1(const char *, const Char *, glob_t *, struct glob_limit *); -static int globexp2(const char *, const Char *, const Char *, glob_t *, int *, +static int globexp1(const Char *, glob_t *, struct glob_limit *); +static int globexp2(const Char *, const Char *, glob_t *, int *, struct glob_limit *); static int match(const Char *, const Char *, const Char *); #ifdef DEBUG @@ -222,9 +222,9 @@ glob(const char * __restrict pattern, in *bufnext = EOS; if (flags & GLOB_BRACE) - return globexp1(pattern, patbuf, pglob, &limit); + return globexp1(patbuf, pglob, &limit); else - return glob0(pattern, patbuf, pglob, &limit); + return glob0(patbuf, pglob, &limit); } /* @@ -233,7 +233,7 @@ glob(const char * __restrict pattern, in * characters */ static int -globexp1(const char *orig, const Char *pattern, glob_t *pglob, struct glob_limit *limit) +globexp1(const Char *pattern, glob_t *pglob, struct glob_limit *limit) { const Char* ptr = pattern; int rv; @@ -249,13 +249,13 @@ globexp1(const char *orig, const Char *p /* Protect a single {}, for find(1), like csh */ if (pattern[0] == LBRACE && pattern[1] == RBRACE && pattern[2] == EOS) - return glob0(orig, pattern, pglob, limit); + return glob0(pattern, pglob, limit); while ((ptr = (const Char *) g_strchr(ptr, LBRACE)) != NULL) - if (!globexp2(orig, ptr, pattern, pglob, &rv, limit)) + if (!globexp2(ptr, pattern, pglob, &rv, limit)) return rv; - return glob0(orig, pattern, pglob, limit); + return glob0(pattern, pglob, limit); } @@ -265,7 +265,7 @@ globexp1(const char *orig, const Char *p * If it fails then it tries to glob the rest of the pattern and returns. */ static int -globexp2(const char *orig, const Char *ptr, const Char *pattern, glob_t *pglob, int *rv, +globexp2(const Char *ptr, const Char *pattern, glob_t *pglob, int *rv, struct glob_limit *limit) { int i; @@ -311,7 +311,7 @@ globexp2(const char *orig, const Char *p * we use `pattern', not `patbuf' here so that that * unbalanced braces are passed to the match */ - *rv = glob0(orig, pattern, pglob, limit); + *rv = glob0(pattern, pglob, limit); return 0; } @@ -358,7 +358,7 @@ globexp2(const char *orig, const Char *p #ifdef DEBUG qprintf("globexp2", patbuf); #endif - *rv = globexp1(orig, patbuf, pglob, limit); + *rv = globexp1(patbuf, pglob, limit); /* move after the comma, to the next string */ pl = pm + 1; @@ -471,7 +471,7 @@ globtilde(const Char *pattern, Char *pat * to find no matches. */ static int -glob0(const char *orig, const Char *pattern, glob_t *pglob, struct glob_limit *limit) +glob0(const Char *pattern, glob_t *pglob, struct glob_limit *limit) { const Char *qpatnext; int c, error; @@ -556,17 +556,7 @@ glob0(const char *orig, const Char *patt if ((pglob->gl_flags & GLOB_NOCHECK) || ((pglob->gl_flags & (GLOB_NOMAGIC|GLOB_MAGCHAR)) == GLOB_NOMAGIC)) { - const u_char *patnext; - Char *bufend; - bufend = patbuf + MAXPATHLEN; - patnext = (const unsigned char *)orig; - bufnext = patbuf; - while (bufnext < bufend && (c = *patnext++) != EOS) - *bufnext++ = c; - - *bufnext = EOS; - - return globextend(patbuf, pglob, limit); + return globextend(pattern, pglob, limit); } else { return GLOB_NOMATCH; }