# [1]
forwarded 496615 http://sourceware.org/bugzilla/show_bug.cgi?id=10278
reassign 496615 libc6
severity 496615 normal
tags 496615 + upstream
found 496615 eglibc/2.13-0exp1
affects 496615 + make
quit

Hi,

Trent W. Buck wrote:

> In the transcript below, I test globbing in both the shell and in GNU
> Make's $(wildcard) function.  It seems to me that while * and */
> behave correctly, but ?*/ should NOT list the file y.

Thanks for a clear report.  Thrillingly, this appears to be a bug
in libc's glob(3) function.  As Paul Smith tells us[1]:

        The POSIX spec doesn't specify exactly what should happen with
        a pattern ending in "/"; all it says about slashes in patterns
        is:

                The slash character in a pathname shall be
                explicitly matched by using one or more slashes
                in the pattern; it shall neither be matched by
                the asterisk or question-mark special characters
                nor by a bracket expression.

        All shells I'm aware of interpret this to mean that if your
        glob expression ends with a "/", it should match only
        directories.  GNU glob() handles this correctly for simple
        globbing expressions like "*/", but for other expressions like
        "dir/*/", "/*/", etc. it returns all directories with a
        trailing slash, AND all files without a trailing slash.

Test case:
-- 8< --
#if 0
: 'Usage: ./testcase.c'
: 'Should list directories, but if libc is buggy it can list files, too.'
gcc "$0" && exec ./a.out
#else
#include <stdio.h>
#include <stdlib.h>
#include <glob.h>

static void die_errno(const char *s)
{
        perror(s);
        exit(EXIT_FAILURE);
}

int main(void)
{
        glob_t globbuf;
        int i;

        if (glob("?*/", 0, NULL, &globbuf))
                die_errno("glob");
        for (i = 0; i < globbuf.gl_pathc; i++)
                puts(globbuf.gl_pathv[i]);
        return 0;
}
#endif



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to