Mail Archives: djgpp/1992/10/13/12:41:02
> Thanks to Eric Backus for making the gnu utils available and thanks to
> David ? - name escaped me for a moment) for sponsoring with a ftp account.
>
> When using ls with * argument I found that the .. file is also being
> listed. Is this correct behaviour or am I missing a patch for some
> libc system call?
It sounds like you are using go32 to do wild-card expansion. The
expansion that go32 does is MS-DOS style, which means that "*" doesn't
match a filename that has a "." in the middle of it (you need "*.*" to
match all files). MS-DOS style expansion also means that anything
after a "*" is ignored, so that "ls *test.c" is equivalent to "ls
*.c". Also, for reasons that I don't understand, a "*" gets expanded
to include both "." and "..", which is what you are seeing. This
seems wrong to me, but it's in go32 or maybe is built into MS-DOS and
is therefore out of my hands.
I personally disable the go32 wild-card expansion, by setting "noglob"
in the GO32 environment variable. Then I use MS_SH200 as my shell
instead of COMMAND.COM, and I have the shell do the wild-card
expansion. The advantage is that it does UNIX-style expansion, and I
don't have funny problems with "." and "..".
On a related note, I've noticed some strangeness even with "noglob" in
my GO32 environment variable. For example, if I do "ls *~" to list my
emacs backup files, this works correctly if there is at least one
backup file (because the shell expands "*~" into a list of file names
before ls even sees it). But if there aren't any backup files,
something is expanding the "*~" into "." or something like that. This
behavior seems wrong, but I don't know how to fix it. I assume the
cause is some low-level MS-DOS call which is doing wild-card
expansion. Or maybe go32.exe is doing this even though noglob is set.
--
Eric Backus
ericb%hplsla AT hplabs DOT hp DOT com
(206) 335-2495
- Raw text -