[comp.binaries.ibm.pc] Wildcard expansions in Turbo C

bob@gen1.UUCP (Robert Kamins) (02/11/88)

     The following routine will expand wildcard arguments into their
components.  "argc" and "argv" are passed as variable parameters, and
their values are (may be) changed on return.  Suppose, for example, that
your program starts out as:

                #include <dos.h>

                main (argc, argv)
                  int argc;
                  char *argv [];
                {
                  int attrib = FA_HIDDEN + FA_DIREC;

                  glob (&argc, &argv, attrib);
                   :

     Let's say that argc is "1", argv [1] is "foo.*", and your directory
contains:

                        foo.c
                        foo.obj
                        foo.exe
                        xxx.c
                        yyy.obj
                        zzz.exe

     After the glob, argc will be changed to "3", argv [1] will be "foo.c",
argv [2] will be "foo.exe" and argv [3] will be "foo.obj".

     Unlike the Unix shell, this glob will not abort if there aren't any
expanded arguments.  Also unlike Unix, "*b" will NOT catch "a.b", nor will
"*" catch "x.y".  In fact, in MS-DOS-land, both will catch the same files,
namely ALL of those without any extension.

     You can, of course, use most of the same code with other C's as well.
You might have to build some of the routines that are already there in
Turbo C, like "findfirst ()", "findnext ()", etc.
 
------------------------- cut here --------------------------
begin 666 glob.arc
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
C@B;0JQ#SJS&`06/15%OBE64`EE=IC-UYCO0HC;BI`)`'&@`(
`
end
------------------------- cut here --------------------------