diff options
Diffstat (limited to 'gnu/usr.bin/perl/win32/perlglob.c')
-rw-r--r-- | gnu/usr.bin/perl/win32/perlglob.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gnu/usr.bin/perl/win32/perlglob.c b/gnu/usr.bin/perl/win32/perlglob.c new file mode 100644 index 00000000000..b2fdca2f71e --- /dev/null +++ b/gnu/usr.bin/perl/win32/perlglob.c @@ -0,0 +1,42 @@ +/* + * Globbing for NT. Relies on the expansion done by the library + * startup code. + */ + +#include <stdio.h> +#include <io.h> +#include <fcntl.h> +#include <string.h> +#include <windows.h> + +int +main(int argc, char *argv[]) +{ + int i; + int len; + char root[MAX_PATH]; + char *dummy; + char volname[MAX_PATH]; + DWORD serial, maxname, flags; + BOOL downcase = TRUE; + + /* check out the file system characteristics */ + if (GetFullPathName(".", MAX_PATH, root, &dummy)) { + if (dummy = strchr(root, '\\')) + *++dummy = '\0'; + if (GetVolumeInformation(root, volname, MAX_PATH, + &serial, &maxname, &flags, 0, 0)) { + downcase = !(flags & FS_CASE_IS_PRESERVED); + } + } + + setmode(fileno(stdout), O_BINARY); + for (i = 1; i < argc; i++) { + len = strlen(argv[i]); + if (downcase) + strlwr(argv[i]); + if (i > 1) fwrite("\0", sizeof(char), 1, stdout); + fwrite(argv[i], sizeof(char), len, stdout); + } + return 0; +} |