summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/perl/win32/perlglob.c
diff options
context:
space:
mode:
authorafresh1 <afresh1@openbsd.org>2021-03-01 23:19:42 +0000
committerafresh1 <afresh1@openbsd.org>2021-03-01 23:19:42 +0000
commit56d68f1e19ff848c889ecfa71d3a06340ff64892 (patch)
tree272372e9e82dd675d06054187c7f04b32fe71acc /gnu/usr.bin/perl/win32/perlglob.c
parentImport perl-5.32.1 (diff)
downloadwireguard-openbsd-56d68f1e19ff848c889ecfa71d3a06340ff64892.tar.xz
wireguard-openbsd-56d68f1e19ff848c889ecfa71d3a06340ff64892.zip
Fix merge issues, remove excess files - match perl-5.32.1 dist
OK sthen@
Diffstat (limited to 'gnu/usr.bin/perl/win32/perlglob.c')
-rw-r--r--gnu/usr.bin/perl/win32/perlglob.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gnu/usr.bin/perl/win32/perlglob.c b/gnu/usr.bin/perl/win32/perlglob.c
index 8add30f2a52..305fd3bee5c 100644
--- a/gnu/usr.bin/perl/win32/perlglob.c
+++ b/gnu/usr.bin/perl/win32/perlglob.c
@@ -20,6 +20,8 @@
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
+#include <assert.h>
+#include <limits.h>
#include <string.h>
#include <windows.h>
@@ -33,6 +35,7 @@ main(int argc, char *argv[])
char volname[MAX_PATH];
DWORD serial, maxname, flags;
BOOL downcase = TRUE;
+ int fd;
/* check out the file system characteristics */
if (GetFullPathName(".", MAX_PATH, root, &dummy)) {
@@ -45,7 +48,13 @@ main(int argc, char *argv[])
}
}
- setmode(fileno(stdout), O_BINARY);
+ fd = fileno(stdout);
+ /* rare VC linker bug causes uninit global FILE *s
+ fileno() implementation in VC 2003 is 2 blind pointer derefs so it will
+ never return -1 error as POSIX says, to be compliant fail for -1 and
+ for absurdly high FDs which are actually pointers */
+ assert(fd >= 0 && fd < SHRT_MAX);
+ setmode(fd, O_BINARY);
for (i = 1; i < argc; i++) {
len = strlen(argv[i]);
if (downcase)