From 081f09cbde7e267df12ec862fc2c7efa260c2cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= Date: Thu, 16 Jul 2020 17:32:16 +0100 Subject: [PATCH 1/2] Remove DOS/DJGPP support --- MANIFEST | 8 - Porting/pumpkin.pod | 2 +- README.dos | 331 --------------------------- djgpp/config.over | 64 ------ djgpp/configure.bat | 37 ---- djgpp/djgpp.c | 481 ---------------------------------------- djgpp/djgpp.h | 55 ----- djgpp/djgppsed.sh | 48 ---- djgpp/fixpmain | 33 --- doio.c | 6 - dosish.h | 72 +----- ext/Devel-Peek/t/Peek.t | 2 +- ext/File-Glob/Glob.pm | 4 +- ext/POSIX/t/posix.t | 7 +- ext/POSIX/t/sigaction.t | 2 +- ext/POSIX/t/time.t | 4 +- ext/SDBM_File/sdbm.c | 2 +- ext/SDBM_File/sdbm.h | 2 +- hints/dos_djgpp.sh | 81 ------- install_lib.pl | 1 - installperl | 17 +- lib/AnyDBM_File.t | 1 - lib/English.t | 7 +- lib/File/stat.pm | 4 +- lib/File/stat.t | 1 - lib/FileHandle.t | 7 +- lib/perl5db.pl | 4 +- mg.c | 4 +- perl.c | 22 +- perl.h | 4 +- perlio.c | 4 - pod/perl.pod | 1 - pod/perldiag.pod | 8 - pod/perlmodinstall.pod | 31 --- pod/perlport.pod | 9 +- t/io/closepid.t | 4 - t/io/fs.t | 5 +- t/io/layers.t | 2 +- t/io/openpid.t | 4 - t/io/tell.t | 2 +- t/lib/commonsense.t | 3 +- t/lib/dbmt_common.pl | 2 +- t/lib/warnings/pp_sys | 17 +- t/op/alarm.t | 2 +- t/op/magic.t | 9 +- t/op/stat.t | 11 +- t/op/sysio.t | 3 +- t/op/taint.t | 10 +- t/op/time.t | 2 +- t/op/write.t | 2 +- thread.h | 7 +- util.c | 26 --- win32/GNUmakefile | 15 +- win32/Makefile | 15 +- 54 files changed, 72 insertions(+), 1435 deletions(-) delete mode 100644 README.dos delete mode 100644 djgpp/config.over delete mode 100644 djgpp/configure.bat delete mode 100644 djgpp/djgpp.c delete mode 100644 djgpp/djgpp.h delete mode 100644 djgpp/djgppsed.sh delete mode 100644 djgpp/fixpmain delete mode 100644 hints/dos_djgpp.sh diff --git a/MANIFEST b/MANIFEST index 2746cc17a4ec..45eb42b72906 100644 --- a/MANIFEST +++ b/MANIFEST @@ -4132,12 +4132,6 @@ dist/Unicode-Normalize/t/tie.t Unicode::Normalize dist/XSLoader/Makefile.PL Dynamic Loader makefile writer dist/XSLoader/t/XSLoader.t See if XSLoader works dist/XSLoader/XSLoader_pm.PL Simple XS Loader perl module -djgpp/config.over DOS/DJGPP port -djgpp/configure.bat DOS/DJGPP port -djgpp/djgpp.c DOS/DJGPP port -djgpp/djgpp.h DOS/DJGPP port -djgpp/djgppsed.sh DOS/DJGPP port -djgpp/fixpmain DOS/DJGPP port doio.c I/O operations doop.c Support code for various operations dosish.h Some defines for MS/DOSish machines @@ -4691,7 +4685,6 @@ hints/cygwin.sh Hints for named architecture hints/darwin.sh Hints for named architecture hints/dcosx.sh Hints for named architecture hints/dec_osf.sh Hints for named architecture -hints/dos_djgpp.sh Hints for named architecture hints/dragonfly.sh Hints for named architecture hints/dynix.sh Hints for named architecture hints/dynixptx.sh Hints for named architecture @@ -5438,7 +5431,6 @@ README.android Perl notes for Android README.bs2000 Perl notes for POSIX-BC BS2000 README.cn Perl for Simplified Chinese (in UTF-8) README.cygwin Perl notes for Cygwin -README.dos Perl notes for DOS README.freebsd Perl notes for FreeBSD README.haiku Perl notes for Haiku README.hpux Perl notes for HP-UX diff --git a/Porting/pumpkin.pod b/Porting/pumpkin.pod index 393bfc893007..f11fa9852406 100644 --- a/Porting/pumpkin.pod +++ b/Porting/pumpkin.pod @@ -191,7 +191,7 @@ If you have many machine-specific #defines or #includes, consider creating an "osish.h" (F, F, and so on) and including that in F. If you have several machine-specific files (function emulations, function stubs, build utility wrappers) you may create a -separate subdirectory (djgpp, win32) and put the files in there. +separate subdirectory (vms, win32) and put the files in there. Remember to update C when you add files. If your system supports dynamic loading but none of the existing diff --git a/README.dos b/README.dos deleted file mode 100644 index ef3578f8894f..000000000000 --- a/README.dos +++ /dev/null @@ -1,331 +0,0 @@ -If you read this file _as_is_, just ignore the funny characters you -see. It is written in the POD format (see perlpod manpage) which is -specially designed to be readable as is. - -=head1 NAME - -perldos - Perl under DOS, W31, W95. - -=head1 SYNOPSIS - -These are instructions for building Perl under DOS (or w??), using -DJGPP v2.03 or later. Under w95 long filenames are supported. - -=head1 DESCRIPTION - -Before you start, you should glance through the README file -found in the top-level directory where the Perl distribution -was extracted. Make sure you read and understand the terms under -which this software is being distributed. - -This port currently supports MakeMaker (the set of modules that -is used to build extensions to perl). Therefore, you should be -able to build and install most extensions found in the CPAN sites. - -Detailed instructions on how to build and install perl extension -modules, including XS-type modules, is included. See 'BUILDING AND -INSTALLING MODULES'. - -=head2 Prerequisites for Compiling Perl on DOS - -=over 4 - -=item DJGPP - -DJGPP is a port of GNU C/C++ compiler and development tools to 32-bit, -protected-mode environment on Intel 32-bit CPUs running MS-DOS and compatible -operating systems, by DJ Delorie and friends. - -For more details (FAQ), check out the home of DJGPP at: - - http://www.delorie.com/djgpp/ - -If you have questions about DJGPP, try posting to the DJGPP newsgroup: -comp.os.msdos.djgpp, or use the email gateway djgpp@delorie.com. - -You can find the full DJGPP distribution on any of the mirrors listed here: - - http://www.delorie.com/djgpp/getting.html - -You need the following files to build perl (or add new modules): - - v2/djdev203.zip - v2gnu/bnu2112b.zip - v2gnu/gcc2953b.zip - v2gnu/bsh204b.zip - v2gnu/mak3791b.zip - v2gnu/fil40b.zip - v2gnu/sed3028b.zip - v2gnu/txt20b.zip - v2gnu/dif272b.zip - v2gnu/grep24b.zip - v2gnu/shl20jb.zip - v2gnu/gwk306b.zip - v2misc/csdpmi5b.zip - -or possibly any newer version. - -=item Pthreads - -Thread support is not tested in this version of the djgpp perl. - -=back - -=head2 Shortcomings of Perl under DOS - -Perl under DOS lacks some features of perl under UNIX because of -deficiencies in the UNIX-emulation, most notably: - -=over 4 - -=item * - -fork() and pipe() - -=item * - -some features of the UNIX filesystem regarding link count and file dates - -=item * - -in-place operation is a little bit broken with short filenames - -=item * - -sockets - -=back - -=head2 Building Perl on DOS - -=over 4 - -=item * - -Unpack the source package F with djtarx. If you want -to use long file names under w95 and also to get Perl to pass all its -tests, don't forget to use - - set LFN=y - set FNCASE=y - -before unpacking the archive. - -=item * - -Create a "symlink" or copy your bash.exe to sh.exe in your C<($DJDIR)/bin> -directory. - - ln -s bash.exe sh.exe - -[If you have the recommended version of bash for DJGPP, this is already -done for you.] - -And make the C environment variable point to this F: - - set SHELL=c:/djgpp/bin/sh.exe (use full path name!) - -You can do this in F too. Add this line BEFORE any section -definition: - - +SHELL=%DJDIR%/bin/sh.exe - -=item * - -If you have F and F in your path, then rename -F to F, and F to F. -Copy or link F to F if you don't have F. -Copy or link F to F if you don't have F. - -[If you have the recommended versions of djdev, shell utilities and -gawk, all these are already done for you, and you will not need to do -anything.] - -=item * - -Chdir to the djgpp subdirectory of perl toplevel and type the following -commands: - - set FNCASE=y - configure.bat - -This will do some preprocessing then run the Configure script for you. -The Configure script is interactive, but in most cases you just need to -press ENTER. The "set" command ensures that DJGPP preserves the letter -case of file names when reading directories. If you already issued this -set command when unpacking the archive, and you are in the same DOS -session as when you unpacked the archive, you don't have to issue the -set command again. This command is necessary *before* you start to -(re)configure or (re)build perl in order to ensure both that perl builds -correctly and that building XS-type modules can succeed. See the DJGPP -info entry for "_preserve_fncase" for more information: - - info libc alphabetical _preserve_fncase - -If the script says that your package is incomplete, and asks whether -to continue, just answer with Y (this can only happen if you don't use -long filenames or forget to issue "set FNCASE=y" first). - -When Configure asks about the extensions, I suggest IO and Fcntl, -and if you want database handling then SDBM_File or GDBM_File -(you need to install gdbm for this one). If you want to use the -POSIX extension (this is the default), make sure that the stack -size of your F is at least 512kbyte (you can check this -with: C). - -You can use the Configure script in non-interactive mode too. -When I built my F, I used something like this: - - configure.bat -des - -You can find more info about Configure's command line switches in -the F file. - -When the script ends, and you want to change some values in the -generated F file, then run - - sh Configure -S - -after you made your modifications. - -IMPORTANT: if you use this C<-S> switch, be sure to delete the CONFIG -environment variable before running the script: - - set CONFIG= - -=item * - -Now you can compile Perl. Type: - - make - -=back - -=head2 Testing Perl on DOS - -Type: - - make test - -If you're lucky you should see "All tests successful". But there can be -a few failed subtests (less than 5 hopefully) depending on some external -conditions (e.g. some subtests fail under linux/dosemu or plain dos -with short filenames only). - -=head2 Installation of Perl on DOS - -Type: - - make install - -This will copy the newly compiled perl and libraries into your DJGPP -directory structure. Perl.exe and the utilities go into C<($DJDIR)/bin>, -and the library goes under C<($DJDIR)/lib/perl5>. The pod documentation -goes under C<($DJDIR)/lib/perl5/pod>. - -=head1 BUILDING AND INSTALLING MODULES ON DOS - -=head2 Building Prerequisites for Perl on DOS - -For building and installing non-XS modules, all you need is a working -perl under DJGPP. Non-XS modules do not require re-linking the perl -binary, and so are simpler to build and install. - -XS-type modules do require re-linking the perl binary, because part of -an XS module is written in "C", and has to be linked together with the -perl binary to be executed. This is required because perl under DJGPP -is built with the "static link" option, due to the lack of "dynamic -linking" in the DJGPP environment. - -Because XS modules require re-linking of the perl binary, you need both -the perl binary distribution and the perl source distribution to build -an XS extension module. In addition, you will have to have built your -perl binary from the source distribution so that all of the components -of the perl binary are available for the required link step. - -=head2 Unpacking CPAN Modules on DOS - -First, download the module package from CPAN (e.g., the "Comma Separated -Value" text package, Text-CSV-0.01.tar.gz). Then expand the contents of -the package into some location on your disk. Most CPAN modules are -built with an internal directory structure, so it is usually safe to -expand it in the root of your DJGPP installation. Some people prefer to -locate source trees under /usr/src (i.e., C<($DJDIR)/usr/src>), but you may -put it wherever seems most logical to you, *EXCEPT* under the same -directory as your perl source code. There are special rules that apply -to modules which live in the perl source tree that do not apply to most -of the modules in CPAN. - -Unlike other DJGPP packages, which are normal "zip" files, most CPAN -module packages are "gzipped tarballs". Recent versions of WinZip will -safely unpack and expand them, *UNLESS* they have zero-length files. It -is a known WinZip bug (as of v7.0) that it will not extract zero-length -files. - -From the command line, you can use the djtar utility provided with DJGPP -to unpack and expand these files. For example: - - C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz - -This will create the new directory C<($DJDIR)/Text-CSV-0.01>, filling -it with the source for this module. - -=head2 Building Non-XS Modules on DOS - -To build a non-XS module, you can use the standard module-building -instructions distributed with perl modules. - - perl Makefile.PL - make - make test - make install - -This is sufficient because non-XS modules install only ".pm" files and -(sometimes) pod and/or man documentation. No re-linking of the perl -binary is needed to build, install or use non-XS modules. - -=head2 Building XS Modules on DOS - -To build an XS module, you must use the standard module-building -instructions distributed with perl modules *PLUS* three extra -instructions specific to the DJGPP "static link" build environment. - - set FNCASE=y - perl Makefile.PL - make - make perl - make test - make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe - make install - -The first extra instruction sets DJGPP's FNCASE environment variable so -that the new perl binary which you must build for an XS-type module will -build correctly. The second extra instruction re-builds the perl binary -in your module directory before you run "make test", so that you are -testing with the new module code you built with "make". The third extra -instruction installs the perl binary from your module directory into the -standard DJGPP binary directory, C<($DJDIR)/bin>, replacing your -previous perl binary. - -Note that the MAP_TARGET value *must* have the ".exe" extension or you -will not create a "perl.exe" to replace the one in C<($DJDIR)/bin>. - -When you are done, the XS-module install process will have added information -to your "perllocal" information telling that the perl binary has been replaced, -and what module was installed. You can view this information at any time -by using the command: - - perl -S perldoc perllocal - -=head1 AUTHOR - -Laszlo Molnar, F [Installing/building perl] - -Peter J. Farley III F [Building/installing modules] - -=head1 SEE ALSO - -perl(1). - -=cut - diff --git a/djgpp/config.over b/djgpp/config.over deleted file mode 100644 index bd757c7c1f23..000000000000 --- a/djgpp/config.over +++ /dev/null @@ -1,64 +0,0 @@ -ln='cp' -pager='${DJDIR}/bin/less.exe' - -# fix extension names under DOS -repair() -{ - echo "$1" | \ - sed \ - -e 's/^b/B/'\ - -e 's=\([^a-z_]\)b=\1B='\ - -e 's=data/dumper=Data/Dumper='\ - -e 's/db_file/DB_File/'\ - -e 's/dynaload/DynaLoader/'\ - -e 's/errno/Errno/'\ - -e 's/fcntl/Fcntl/'\ - -e 's/gdbm_fil/GDBM_File/'\ - -e 's/io/IO/'\ - -e 's/SysV//'\ - -e 's/sysv//'\ - -e 's=ipc/=='\ - -e 's=IPC/=='\ - -e 's/ndbm_fil/NDBM_File/'\ - -e 's/odbm_fil/ODBM_File/'\ - -e 's/opcode/Opcode/'\ - -e 's/posix/POSIX/'\ - -e 's/sdbm_fil/SDBM_File/'\ - -e 's/socket/Socket/'\ - -e 's=[tT]hread[/a-zA-Z]*==g'\ - -e 's/byteload/ByteLoader/'\ - -e 's=devel/peek=Devel/Peek='\ - -e 's=sys/sys=Sys/Sys='\ - -e 's=sys/hos=Sys/Hos='\ - -e 's=file/=='\ - -e 's=File/=='\ - -e 's=glob=='\ - -e 's=Glob=='\ - -e 's/storable/Storable/'\ - -e 's/encode/Encode/'\ - -e 's=filter/util/call=Filter/Util/Call=' \ - -e 's=digest/md5=Digest/MD5=' \ - -e 's=perlio/scalar=PerlIO/scalar=' \ - -e 's=mime/base64=MIME/Base64=' \ - -e 's=time/hires=Time/HiRes=' \ - -e 's=list/util=List/Util=' \ - -e 's=cwd=Cwd=' \ - -e 's=perlio/via=PerlIO/via=' \ - -e 's=perlio/encoding=PerlIO/encoding=' \ - -e 's=xs/apitest=XS/APItest=' \ - -e 's=xs/typemap=XS/Typemap=' \ - -e 's=unicode/normaliz=Unicode/Normalize=' \ - -e 's=unicode/collate=Unicode/Collate=' \ - -e 's=i18n/langinfo=I18N/Langinfo=' \ - -e 's=devel/ppport=Devel/PPPort=' -} -static_ext=$(repair "$static_ext") -extensions=$(repair "$extensions") -known_extensions=$(repair "$known_extensions") -nonxs_ext=$(repair "$nonxs_ext") - -# I use Dos::UseLFN in AutoSplit.pm to override this under win0.95 -d_flexfnam='undef' - -# with W95 + bash the test program returns bogus result -d_casti32='undef' diff --git a/djgpp/configure.bat b/djgpp/configure.bat deleted file mode 100644 index db08fc256d7a..000000000000 --- a/djgpp/configure.bat +++ /dev/null @@ -1,37 +0,0 @@ -@echo off -set CONFIG= -set PATH_SEPARATOR=; -set PATH_EXPAND=y -sh -c 'if test $PATH_SEPARATOR = ";"; then exit 1; fi' -if ERRORLEVEL 1 goto path_sep_ok -echo Error: -echo Make sure the environment variable PATH_SEPARATOR=; while building perl! -echo Please check your DJGPP.ENV! -goto end - -:path_sep_ok -sh -c 'if test $PATH_EXPAND = "Y" -o $PATH_EXPAND = "y"; then exit 1; fi' -if ERRORLEVEL 1 goto path_exp_ok -echo Error: -echo Make sure the environment variable PATH_EXPAND=Y while building perl! -echo Please check your DJGPP.ENV! -goto end - -:path_exp_ok -sh -c '$SHELL -c "exit 128"' -if ERRORLEVEL 128 goto shell_ok - -echo Error: -echo The SHELL environment variable must be set to the full path of your sh.exe! -goto end - -:shell_ok -sh -c 'if test ! -d /tmp; then mkdir /tmp; fi' -cp djgpp.[hc] config.over .. -cd .. -echo Running sed... -sh djgpp/djgppsed.sh - -echo Running Configure... -sh Configure %1 %2 %3 %4 %5 %6 %7 %8 %9 -:end diff --git a/djgpp/djgpp.c b/djgpp/djgpp.c deleted file mode 100644 index ddadeb7d53c2..000000000000 --- a/djgpp/djgpp.c +++ /dev/null @@ -1,481 +0,0 @@ -#define PERLIO_NOT_STDIO 0 -#include "djgpp.h" - -/* hold file pointer, command, mode, and the status of the command */ -struct pipe_list { - FILE *fp; - int exit_status; - struct pipe_list *next; - char *command, mode; -}; - -/* static, global list pointer */ -static struct pipe_list *pl = NULL; - -FILE * -djgpp_popen (const char *cm, const char *md) /* program name, pipe mode */ -{ - struct pipe_list *l1; - int fd; - char *temp_name=NULL; - - /* make new node */ - if ((l1 = (struct pipe_list *) malloc (sizeof (*l1))) - && (temp_name = malloc (L_tmpnam)) && tmpnam (temp_name)) - { - l1->fp = NULL; - l1->command = NULL; - l1->next = pl; - l1->exit_status = -1; - l1->mode = md[0]; - - /* if caller wants to read */ - if (md[0] == 'r' && (fd = dup (fileno (stdout))) >= 0) - { - if ((l1->fp = freopen (temp_name, "wb", stdout))) - { - l1->exit_status = system (cm); - if (dup2 (fd, fileno (stdout)) >= 0) - l1->fp = fopen (temp_name, md); - } - close (fd); - } - /* if caller wants to write */ - else if (md[0] == 'w' && (l1->command = malloc (1 + strlen (cm)))) - { - strcpy (l1->command, cm); - l1->fp = fopen (temp_name, md); - } - - if (l1->fp) - { - l1->fp->_flag |= _IORMONCL; /* remove on close */ - l1->fp->_name_to_remove = temp_name; - return (pl = l1)->fp; - } - free (l1->command); - } - free (temp_name); - free (l1); - return NULL; -} - -int -djgpp_pclose (FILE *pp) -{ - struct pipe_list *l1, **l2; /* list pointers */ - int retval=-1; /* function return value */ - - for (l2 = &pl; *l2 && (*l2)->fp != pp; l2 = &((*l2)->next)) - ; - if (!(l1 = *l2)) - return retval; - *l2 = l1->next; - - /* if pipe was opened to write */ - if (l1->mode == 'w') - { - int fd; - fflush (l1->fp); - close (fileno (l1->fp)); - - if ((fd = dup (fileno (stdin))) >= 0 - && (freopen (l1->fp->_name_to_remove, "rb", stdin))) - { - retval = system (l1->command); - dup2 (fd, fileno (stdin)); - } - close (fd); - free (l1->command); - } - else - /* if pipe was opened to read, return the exit status we saved */ - retval = l1->exit_status; - - fclose (l1->fp); /* this removes the temp file */ - free (l1); - return retval; /* retval==0 ? OK : ERROR */ -} - -/**/ - -#define EXECF_SPAWN 0 -#define EXECF_EXEC 1 - -static int -convretcode (pTHX_ int rc,char *prog,int fl) -{ - if (rc < 0 && ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't %s \"%s\": %s", - fl ? "exec" : "spawn",prog,Strerror (errno)); - if (rc >= 0) - return rc << 8; - return -1; -} - -int -do_aspawn (pTHX_ SV *really,SV **mark,SV **sp) -{ - int rc; - char **a,*tmps,**argv; - STRLEN n_a; - - if (sp<=mark) - return -1; - a=argv=(char**) alloca ((sp-mark+3)*sizeof (char*)); - - while (++mark <= sp) - if (*mark) - *a++ = SvPVx(*mark, n_a); - else - *a++ = ""; - *a = NULL; - - if (argv[0][0] != '/' && argv[0][0] != '\\' - && !(argv[0][0] && argv[0][1] == ':' - && (argv[0][2] == '/' || argv[0][2] != '\\')) - ) /* will swawnvp use PATH? */ - TAINT_ENV(); /* testing IFS here is overkill, probably */ - - if (really && *(tmps = SvPV(really, n_a))) - rc=spawnvp (P_WAIT,tmps,argv); - else - rc=spawnvp (P_WAIT,argv[0],argv); - - return convretcode (rc,argv[0],EXECF_SPAWN); -} - -#define EXTRA "\x00\x00\x00\x00\x00\x00" - -int -do_spawn2 (pTHX_ char *cmd,int execf) -{ - char **argv,**a,*s,*shell,*metachars; - int rc,unixysh,result; - - ENTER; - if ((shell=getenv("SHELL"))==NULL && (shell=getenv("COMSPEC"))==NULL) - shell="c:\\command.com" EXTRA; - - unixysh=_is_unixy_shell (shell); - metachars=unixysh ? "$&*(){}[]'\";\\?>|<~`\n" EXTRA : "*?[|<>\"\\" EXTRA; - - while (*cmd && isSPACE(*cmd)) - cmd++; - - if (strBEGINs (cmd,"/bin/sh") && isSPACE (cmd[7])) - cmd+=5; - - /* save an extra exec if possible */ - /* see if there are shell metacharacters in it */ - if (strstr (cmd,"...")) - goto doshell; - if (unixysh) - { - if (*cmd=='.' && isSPACE (cmd[1])) - goto doshell; - if (strBEGINs (cmd,"exec") && isSPACE (cmd[4])) - goto doshell; - for (s=cmd; *s && isALPHA (*s); s++) ; /* catch VAR=val gizmo */ - if (*s=='=') - goto doshell; - } - for (s=cmd; *s; s++) - if (strchr (metachars,*s)) - { - if (*s=='\n' && s[1]=='\0') - { - *s='\0'; - break; - } -doshell: - if (execf==EXECF_EXEC) - result = convretcode (execl (shell,shell,unixysh ? "-c" : "/c",cmd,NULL),cmd,execf); - else - result = convretcode (system (cmd),cmd,execf); - goto leave; - } - - Newx (argv,(s-cmd)/2+2,char*); - SAVEFREEPV(argv); - cmd=savepvn (cmd,s-cmd); - SAVEFREEPV(cmd); - a=argv; - for (s=cmd; *s;) { - while (*s && isSPACE (*s)) s++; - if (*s) - *(a++)=s; - while (*s && !isSPACE (*s)) s++; - if (*s) - *s++='\0'; - } - *a=NULL; - if (!argv[0]) { - result = -1; - goto leave; - } - - if (execf==EXECF_EXEC) - rc=execvp (argv[0],argv); - else - rc=spawnvp (P_WAIT,argv[0],argv); - result = convretcode (rc,argv[0],execf); -leave: - LEAVE; - return result; -} - -int -do_spawn (pTHX_ char *cmd) -{ - return do_spawn2 (aTHX_ cmd,EXECF_SPAWN); -} - -bool -Perl_do_exec (pTHX_ const char *cmd) -{ - do_spawn2 (aTHX_ cmd,EXECF_EXEC); - return FALSE; -} - -/**/ - -struct globinfo -{ - int fd; - char *matches; - size_t size; - fpos_t pos; -}; - -#define MAXOPENGLOBS 10 - -static struct globinfo myglobs[MAXOPENGLOBS]; - -static struct globinfo * -searchfd (int fd) -{ - int ic; - for (ic=0; icpos=0; - pattern=alloca (strlen (name+=13)+1); - strcpy (pattern,name); - if (!_USE_LFN) - strlwr (pattern); - ic=pglob.gl_pathc=0; - pglob.gl_pathv=NULL; - while (pattern) - { - if ((p1=strchr (pattern,' '))!=NULL) - *p1=0; - glob (pattern,ic,0,&pglob); - ic=GLOB_APPEND; - if ((pattern=p1)!=NULL) - pattern++; - } - for (ic=len=0; icmatches=p1=(char*) malloc (gi->size=len))==NULL) - break; - for (ic=0; icmatches=strdup (name))==NULL) - break; - gi->size=strlen (name)+1; - } - globfree (&pglob); - gi->fd=*rv=__FSEXT_alloc_fd (glob_handler); - return 1; - } - case __FSEXT_read: - { - int fd=va_arg (args,int); - char *buf=va_arg (args,char*); - size_t siz=va_arg (args,size_t); - - if ((gi=searchfd (fd))==NULL) - break; - - if (siz+gi->pos > gi->size) - siz = gi->size - gi->pos; - memcpy (buf,gi->pos+gi->matches,siz); - gi->pos += siz; - *rv=siz; - return 1; - } - case __FSEXT_close: - { - int fd=va_arg (args,int); - - if ((gi=searchfd (fd))==NULL) - break; - free (gi->matches); - gi->fd=-1; - break; - } - default: - break; - } - return 0; -} - -static -XS(dos_GetCwd) -{ - dXSARGS; - - if (items) - Perl_croak (aTHX_ "Usage: Dos::GetCwd()"); - { - char tmp[PATH_MAX+2]; - ST(0)=sv_newmortal (); - if (getcwd (tmp,PATH_MAX+1)!=NULL) - sv_setpv ((SV*)ST(0),tmp); - SvTAINTED_on(ST(0)); - } - XSRETURN (1); -} - -static -XS(dos_UseLFN) -{ - dXSARGS; - XSRETURN_IV (_USE_LFN); -} - -XS(XS_Cwd_sys_cwd) -{ - dXSARGS; - if (items != 0) - Perl_croak_nocontext("Usage: Cwd::sys_cwd()"); - { - char p[MAXPATHLEN]; - char * RETVAL; - RETVAL = getcwd(p, MAXPATHLEN); - ST(0) = sv_newmortal(); - sv_setpv((SV*)ST(0), RETVAL); - SvTAINTED_on(ST(0)); - } - XSRETURN(1); -} - -void -Perl_init_os_extras(pTHX) -{ - char *file = __FILE__; - - dXSUB_SYS; - - newXS ("Dos::GetCwd",dos_GetCwd,file); - newXS ("Dos::UseLFN",dos_UseLFN,file); - newXS ("Cwd::sys_cwd",XS_Cwd_sys_cwd,file); - - /* install my File System Extension for globbing */ - __FSEXT_add_open_handler (glob_handler); - memset (myglobs,-1,sizeof (myglobs)); -} - -static char *perlprefix; - -#define PERL5 "/perl5" - -char * -djgpp_pathexp (const char *p) -{ - static char expp[PATH_MAX]; - strcpy (expp,perlprefix); - switch (p[0]) - { - case 'B': - strcat (expp,"/bin"); - break; - case 'S': - strcat (expp,"/lib" PERL5 "/site"); - break; - default: - strcat (expp,"/lib" PERL5); - break; - } - return expp; -} - -void -Perl_DJGPP_init (int *argcp,char ***argvp) -{ - char *p; - - perlprefix=strdup (**argvp); - strlwr (perlprefix); - if ((p=strrchr (perlprefix,'/'))!=NULL) - { - *p=0; - if (strEQ (p-4,"/bin")) - p[-4]=0; - } - else - strcpy (perlprefix,".."); -} - -int -djgpp_fflush (FILE *fp) -{ - int res; - - if ((res = fflush(fp)) == 0 && fp) { - Stat_t s; - if (Fstat(fileno(fp), &s) == 0 && !S_ISSOCK(s.st_mode)) - res = fsync(fileno(fp)); - } -/* - * If the flush succeeded but set end-of-file, we need to clear - * the error because our caller may check ferror(). BTW, this - * probably means we just flushed an empty file. - */ - if (res == 0 && fp && ferror(fp) == EOF) clearerr(fp); - - return res; -} - -int djgpp_get_stream_mode(FILE *f) -{ - extern char *__file_handle_modes; - - int mode = __file_handle_modes[fileno(f)]; - if (f->_flag & _IORW) - return mode | O_RDWR; - if (f->_flag & _IOWRT) - return mode | O_WRONLY; - return mode | O_RDONLY; -} - diff --git a/djgpp/djgpp.h b/djgpp/djgpp.h deleted file mode 100644 index bb792e204e5f..000000000000 --- a/djgpp/djgpp.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef PERL_DJGPP_DJGPP_H -#define PERL_DJGPP_DJGPP_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -FILE * -djgpp_popen (const char *cm, const char *md); - -int -djgpp_pclose (FILE *pp); - -int -do_aspawn (pTHX_ SV *really,SV **mark,SV **sp); - -int -do_spawn2 (pTHX_ char *cmd,int execf); - -int -do_spawn (pTHX_ char *cmd); - -bool -Perl_do_exec (pTHX_ const char *cmd); - -void -Perl_init_os_extras(pTHX); - -char -*djgpp_pathexp (const char *p); - -void -Perl_DJGPP_init (int *argcp,char ***argvp); - -int -djgpp_fflush (FILE *fp); - -/* DJGPP utility functions without prototypes? */ - -int _is_unixy_shell(char *s); - -#endif diff --git a/djgpp/djgppsed.sh b/djgpp/djgppsed.sh deleted file mode 100644 index 778f426181ba..000000000000 --- a/djgpp/djgppsed.sh +++ /dev/null @@ -1,48 +0,0 @@ -#! /bin/sh - -# Change some files to work under DOS -# Most of this stuff does .xx -> _xx and aa.bb.ccc -> aa_bb.cc conversion - -SCONFIG='s=\.\(config\)=_\1=g' -SLIST='s=\.\([a-z]\+list\)=_\1=g' -SGREPTMP='s=\.\(greptmp\)=_\1=g' -SECHOTMP='s=\.\(echotmp\)=_\1=g' -SDDC='s=\.\($$\.c\)=_\1=g' -SOUT='s=\([^a-z1-9?]\)\.\(out\)=\1_\2=g' -SEXISTS='s=\.\(exists\)=_\1=g' -SPOD2HTML='s=pod2html-=pod2html.=g' -SCC='s=\.c\.c=.c_c=g' -SFILEC="s=\(\$file\)\.c=\\1'_c'=g" -SCOR='s=c\\\.c|=c\_c|=g' -SHSED='s=\.\(hsed\)=_\1=g' -SDEPTMP='s=\.\(deptmp\)=_\1=g' -SCPP='s=\.\(cpp\.\)=_\1=g' -SARGV='s=Io_argv\(.\)\.=i\1_=g' -SABC='s=\.\([abc][^a]\)=_\1=g' -SDBMX='s=\.\(dbmx\)=_\1=g' -SDBHASH='s=dbhash\.tmp=dbhash_tmp=g' -SSTAT='s=\.\(stat\.\)=_\1=g' -STMP2='s=tmp2=tm2=g' -SPACKLIST='s=\.\(packlist\)=_\1=g' -SDOTTMP='s=\.tmp=_tmp=g' - -sed -e $SCONFIG -e $SGREPTMP -e $SECHOTMP -e $SDDC -e $SOUT -e 's=\.\( \./\$file\)$=sh\1=g' Configure |tr -d '\r' >s; mv -f s Configure -sed -e $SEXISTS -e $SLIST -e $SCONFIG Makefile.SH |tr -d '\r' >s; mv -f s Makefile.SH -sed -e $SEXISTS -e $SPACKLIST lib/ExtUtils/Install.pm |tr -d '\r' >s; mv -f s lib/ExtUtils/Install.pm -sed -e $SEXISTS -e $SPACKLIST lib/ExtUtils/MM_Unix.pm |tr -d '\r' >s; mv -f s lib/ExtUtils/MM_Unix.pm -sed -e $SEXISTS -e $SPACKLIST installperl >s; mv -f s installperl -sed -e $SPOD2HTML lib/Pod/Html.pm |tr -d '\r' >s; mv -f s lib/Pod/Html.pm -sed -e $SCC -e $SLIST -e $SFILEC -e $SCOR -e $SDEPTMP -e $SHSED makedepend.SH |tr -d '\r' >s; mv -f s makedepend.SH -sed -e $SCPP t/comp/cpp.aux |tr -d '\r' >s; mv -f s t/comp/cpp.aux -sed -e $SARGV -e $SDOTTMP t/io/argv.t >s; mv -f s t/io/argv.t -sed -e $SABC t/io/inplace.t >s; mv -f s t/io/inplace.t -sed -e $SDBMX -e $SDBHASH ext/GDBM_File/t/gdbm.t >s; mv -f s ext/GDBM_File/t/gdbm.t -sed -e $SSTAT -e $STMP2 t/op/stat.t >s; mv -f s t/op/stat.t -#sed -e 's=^#define.\([A-Z]\+\)_EXP.*$=#define \1_EXP djgpp_pathexp("\1")=g' config_h.SH >s; mv -f s config_h.SH -sed -e 's=:^/:={^([a-z]:)?[\\\\/]}=g' lib/termcap.pl >s; mv -f s lib/termcap.pl -sed -e $SPACKLIST installman >s; mv -f s installman -sed -e $SPACKLIST lib/ExtUtils/Installed.pm >s; mv -f s lib/ExtUtils/Installed.pm -sed -e $SPACKLIST lib/ExtUtils/Packlist.pm >s; mv -f s lib/ExtUtils/Packlist.pm -sed -e $SABC t/io/iprefix.t >s; mv -f s t/io/iprefix.t -sed -e 's=L_ctermid==g' ext/POSIX/Makefile.PL >s; mv -f s ext/POSIX/Makefile.PL -sed -e $SPACKLIST lib/ExtUtils/t/Installed.t >s; mv -f s lib/ExtUtils/t/Installed.t diff --git a/djgpp/fixpmain b/djgpp/fixpmain deleted file mode 100644 index 9ff2ad620cc9..000000000000 --- a/djgpp/fixpmain +++ /dev/null @@ -1,33 +0,0 @@ -#!perl -w -# Fix perlmain.c under DOS (short & case insensitive filenames). -# Called from Makefile.aperl when needed. -# You don't need this when LFN=y. - -use Config; - -open (PERLM, '<', 'perlmain.c') or die "Can't load perlmain.c: $!"; -open (MAKEFILE, '<', 'makefile.pl') or die "Can't load makefile.pl: $!"; -undef $/; -$perlmain=; -$makefile=; - -($_) = $makefile =~ /\bNAME\b.*=>\W*([\w\:]+)/; # extract module name -$badname=join ("__",map {lc substr ($_,0,8)} split /:+/); # DOSify -$perlmain =~ s/^.*boot_$badname.*$//gm if $badname; # delete bad lines - -@exts=('DynaLoader',split (" ",$Config{known_extensions})); -for $realname (@exts) -{ - $dosname=join ("__",map {lc substr ($_,0,8)} split /\//,$realname); - $realname =~ s!/!__!g; - $perlmain =~ s/\bboot_$dosname\b/boot_$realname/gm; - $dosname =~ s/__/::/; - $realname =~ s/__/::/; - $perlmain =~ s/\b$dosname(::bootstrap)/$realname$1/gm; -} - -#DynaLoader is special -$perlmain =~ s/(DynaLoader:\:boot)strap/$1_DynaLoader/gm; - -open (PERLM, '>', 'perlmain.c') or die "Can't write perlmain.c: $!"; -print PERLM $perlmain; diff --git a/doio.c b/doio.c index 76f2e0e84b6a..9233b9a1e189 100644 --- a/doio.c +++ b/doio.c @@ -1389,9 +1389,6 @@ Perl_nextargv(pTHX_ GV *gv, bool nomagicopen) if ((PerlLIO_stat(SvPVX_const(sv),&statbuf) >= 0 && statbuf.st_dev == filedev && statbuf.st_ino == fileino) -#ifdef DJGPP - || ((_djstat_fail_bits & _STFAIL_TRUENAME)!=0) -#endif ) { Perl_ck_warner_d(aTHX_ packWARN(WARN_INPLACE), @@ -3311,9 +3308,6 @@ Perl_vms_start_glob sv_setpv(tmpcmd, "for a in "); sv_catsv(tmpcmd, tmpglob); sv_catpvs(tmpcmd, "; do echo \"$a\\0\\c\"; done |"); -# elif defined(DJGPP) - sv_setpv(tmpcmd, "/dev/dosglob/"); /* File System Extension */ - sv_catsv(tmpcmd, tmpglob); # else sv_setpv(tmpcmd, "perlglob "); sv_catsv(tmpcmd, tmpglob); diff --git a/dosish.h b/dosish.h index b3500a0d47e8..91228510c9ae 100644 --- a/dosish.h +++ b/dosish.h @@ -13,26 +13,7 @@ #define SH_PATH "/bin/sh" #endif -#ifdef DJGPP -# define BIT_BUCKET "nul" -# define OP_BINARY O_BINARY -# define PERL_SYS_INIT_BODY(c,v) \ - MALLOC_CHECK_TAINT2(*c,*v) Perl_DJGPP_init(c,v); PERLIO_INIT -# define init_os_extras Perl_init_os_extras -# define HAS_UTIME -# define HAS_KILL - char *djgpp_pathexp (const char*); - void Perl_DJGPP_init (int *argcp,char ***argvp); -# if (DJGPP==2 && DJGPP_MINOR < 2) -# define NO_LOCALECONV_MON_THOUSANDS_SEP -# endif -# ifndef PERL_CORE -# define PERL_FS_VER_FMT "%d_%d_%d" -# endif -# define PERL_FS_VERSION STRINGIFY(PERL_REVISION) "_" \ - STRINGIFY(PERL_VERSION) "_" \ - STRINGIFY(PERL_SUBVERSION) -#elif defined(WIN32) +#ifdef WIN32 # define PERL_SYS_INIT_BODY(c,v) \ MALLOC_CHECK_TAINT2(*c,*v) Perl_win32_init(c,v); PERLIO_INIT # define PERL_SYS_TERM_BODY() Perl_win32_term() @@ -108,11 +89,7 @@ #define fwrite1 fwrite #define Fstat(fd,bufptr) fstat((fd),(bufptr)) -#ifdef DJGPP -# define Fflush(fp) djgpp_fflush(fp) -#else -# define Fflush(fp) fflush(fp) -#endif +#define Fflush(fp) fflush(fp) #define Mkdir(path,mode) mkdir((path),(mode)) #ifndef WIN32 @@ -125,51 +102,6 @@ # define HAS_CHOWN #endif /* WIN32 */ -/* - * : The DJGPP port has code that converts - * the return code of system() into the form that Unixy wait usually - * returns: - * - * - signal number in bits 0-6; - * - core dump flag in bit 7; - * - exit code in bits 8-15. - * - * Bits 0-7 are always zero for DJGPP, because it uses system(). - * See djgpp.c. - * - * POSIX::W* use the W* macros from to decode - * the return code. Unfortunately the W* macros for DJGPP use - * a different format than Unixy wait does. So there's a mismatch - * and, say, WEXITSTATUS($?) will return bogus values. - * - * So here we add hack to redefine the W* macros from DJGPP's - * to work with our return-code conversion. - */ - -#ifdef DJGPP - -#include - -#undef WEXITSTATUS -#undef WIFEXITED -#undef WIFSIGNALED -#undef WIFSTOPPED -#undef WNOHANG -#undef WSTOPSIG -#undef WTERMSIG -#undef WUNTRACED - -#define WEXITSTATUS(stat_val) ((stat_val) >> 8) -#define WIFEXITED(stat_val) 0 -#define WIFSIGNALED(stat_val) 0 -#define WIFSTOPPED(stat_val) 0 -#define WNOHANG 0 -#define WSTOPSIG(stat_val) 0 -#define WTERMSIG(stat_val) 0 -#define WUNTRACED 0 - -#endif - /* Don't go reading from /dev/urandom */ #define PERL_NO_DEV_RANDOM diff --git a/ext/Devel-Peek/t/Peek.t b/ext/Devel-Peek/t/Peek.t index 63face8cd164..a7b5dbf18c20 100644 --- a/ext/Devel-Peek/t/Peek.t +++ b/ext/Devel-Peek/t/Peek.t @@ -620,7 +620,7 @@ do_test('scalar with pos magic', '); # -# TAINTEDDIR is not set on: OS2, AMIGAOS, WIN32, MSDOS +# TAINTEDDIR is not set on: OS2, AMIGAOS, WIN32 # environment variables may be invisibly case-forced, hence the (?i:PATH) # C is turned into an IV on VMS hence the (?:IV)? # Perl 5.18 ensures all env vars end up as strings only, hence the (?:,pIOK)? diff --git a/ext/File-Glob/Glob.pm b/ext/File-Glob/Glob.pm index 5838f2009f20..74b6af7504e4 100644 --- a/ext/File-Glob/Glob.pm +++ b/ext/File-Glob/Glob.pm @@ -33,7 +33,7 @@ $EXPORT_TAGS{bsd_glob} = [@{$EXPORT_TAGS{glob}}]; our @EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob'); -our $VERSION = '1.36'; +our $VERSION = '1.37'; sub import { require Exporter; @@ -64,7 +64,7 @@ sub import { XSLoader::load(); $DEFAULT_FLAGS = GLOB_CSH(); -if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos)$/) { +if ($^O =~ /^(?:MSWin32|VMS|os2|riscos)$/) { $DEFAULT_FLAGS |= GLOB_NOCASE(); } diff --git a/ext/POSIX/t/posix.t b/ext/POSIX/t/posix.t index 1db96c2f0d97..4a0d1f34f7e8 100644 --- a/ext/POSIX/t/posix.t +++ b/ext/POSIX/t/posix.t @@ -25,7 +25,6 @@ sub next_test { $| = 1; $Is_W32 = $^O eq 'MSWin32'; -$Is_Dos = $^O eq 'dos'; $Is_VMS = $^O eq 'VMS'; $Is_OS2 = $^O eq 'os2'; $Is_UWin = $^O eq 'uwin'; @@ -68,9 +67,7 @@ TODO: my $test = next_test(); write(1,"ok $test\nnot ok $test\n", 5); -SKIP: { - skip("no pipe() support on DOS", 2) if $Is_Dos; - +{ @fds = POSIX::pipe(); cmp_ok($fds[0], '>', $testfd, 'POSIX::pipe'); @@ -84,7 +81,7 @@ SKIP: { } SKIP: { - skip("no sigaction support on win32/dos", 6) if $Is_W32 || $Is_Dos; + skip("no sigaction support on win32", 6) if $Is_W32; my $sigset = new POSIX::SigSet 1, 3; $sigset->delset(1); diff --git a/ext/POSIX/t/sigaction.t b/ext/POSIX/t/sigaction.t index a07587e54aab..024c66a1470c 100644 --- a/ext/POSIX/t/sigaction.t +++ b/ext/POSIX/t/sigaction.t @@ -4,7 +4,7 @@ BEGIN{ # Don't do anything if POSIX is missing, or sigaction missing. use Config; eval 'use POSIX'; - if($@ || $^O eq 'MSWin32' || $^O eq 'dos' || + if($@ || $^O eq 'MSWin32' || ($^O eq 'VMS' && !$Config{'d_sigaction'})) { print "1..0\n"; exit 0; diff --git a/ext/POSIX/t/time.t b/ext/POSIX/t/time.t index 5e71d27f66b9..6190e389a571 100644 --- a/ext/POSIX/t/time.t +++ b/ext/POSIX/t/time.t @@ -22,8 +22,8 @@ SKIP: { # actually do anything. Cygwin works in some places, but not others. The # other Win32's below are guesses. skip "No tzset()", 2 - if $^O eq "VMS" || $^O eq "cygwin" || $^O eq "djgpp" || - $^O eq "MSWin32" || $^O eq "dos" || $^O eq "interix"; + if $^O eq "VMS" || $^O eq "cygwin" || + $^O eq "MSWin32" || $^O eq "interix"; tzset(); my @tzname = tzname(); like($tzname[0], qr/(GMT|UTC)/i, "tzset() to GMT/UTC"); diff --git a/ext/SDBM_File/sdbm.c b/ext/SDBM_File/sdbm.c index b81d1e30c1ac..7cf07d7599c2 100644 --- a/ext/SDBM_File/sdbm.c +++ b/ext/SDBM_File/sdbm.c @@ -134,7 +134,7 @@ sdbm_prep(char *dirname, char *pagname, int flags, int mode) * open the files in sequence, and stat the dirfile. * If we fail anywhere, undo everything, return NULL. */ -#if defined(OS2) || defined(MSDOS) || defined(WIN32) || defined(__CYGWIN__) +#if defined(OS2) || defined(WIN32) || defined(__CYGWIN__) flags |= O_BINARY; # endif if ((db->pagf = open(pagname, flags, mode)) > -1) { diff --git a/ext/SDBM_File/sdbm.h b/ext/SDBM_File/sdbm.h index 199a2eec0c22..e150fe590111 100644 --- a/ext/SDBM_File/sdbm.h +++ b/ext/SDBM_File/sdbm.h @@ -128,7 +128,7 @@ extern long sdbm_hash(const char *, int); #endif #ifdef I_SYS_PARAM -# if !defined(MSDOS) && !defined(WIN32) && !defined(VMS) +# if !defined(WIN32) && !defined(VMS) # ifdef PARAM_NEEDS_TYPES # include # endif diff --git a/hints/dos_djgpp.sh b/hints/dos_djgpp.sh deleted file mode 100644 index 8f5fa3378291..000000000000 --- a/hints/dos_djgpp.sh +++ /dev/null @@ -1,81 +0,0 @@ -# hints file for dos/djgpp v2.xx -# Original by Laszlo Molnar - -# 971015 - archname changed from 'djgpp' to 'dos-djgpp' -# 971210 - threads support -# 000222 - added -DPERL_EXTERNAL_GLOB to ccflags - -archname='dos-djgpp' -archobjs='djgpp.o' -path_sep=\; -startsh="#! /bin/sh" - -cc='gcc' -ld='gcc' -usrinc="$DJDIR/include" - -libpth="$DJDIR/lib" -libc="$libpth/libc.a" - -so='none' -usedl='n' - -firstmakefile='GNUmakefile' -exe_ext='.exe' - -randbits=31 -lns='cp' - -usenm='true' - -# this reportedly causes compile errors in system includes -i_ieeefp='undef' - -d_link='undef' # these are empty functions in libc.a -d_symlink='undef' -d_fork='undef' -d_pipe='undef' - -startperl='#!perl' - -case "X$optimize" in - X) - case `gcc -v 2>&1|grep "gcc version"` in - "gcc version 1."*|"gcc version 2."*) - optimize="-O2 -malign-loops=2 -malign-jumps=2 -malign-functions=2" ;; - *) - optimize="-O2 -falign-loops=2 -falign-jumps=2 -falign-functions=2" ;; - esac - ldflags='-s' - ;; - X*) - ldflags=' ' - ;; -esac -ccflags="$ccflags -DPERL_EXTERNAL_GLOB" -usemymalloc='n' -timetype='time_t' - -prefix=$DJDIR -privlib=$prefix/lib/perl5 -archlib=$privlib -sitelib=$privlib/site -sitearch=$sitelib - -eagain='EAGAIN' -rd_nodata='-1' - -# This script UU/usethreads.cbu will get 'called-back' by Configure -# after it has prompted the user for whether to use threads. -cat > UU/usethreads.cbu <<'EOCBU' -case "$usethreads" in -$define|true|[yY]*) - set `echo X "$libswanted "| sed -e 's/ c / gthreads c /'` - shift - libswanted="$*" - ;; -esac -EOCBU - -useperlio='undef' -uselargefiles='undef' diff --git a/install_lib.pl b/install_lib.pl index 7daffd2699a0..1c4d7defe9fe 100644 --- a/install_lib.pl +++ b/install_lib.pl @@ -106,7 +106,6 @@ sub link { sub chmod { my($mode,$name) = @_; - return if ($^O eq 'dos'); printf " chmod %o %s\n", $mode, $name if $opts{verbose}; CORE::chmod($mode,$name) || warn sprintf("Couldn't chmod %o %s: $!\n", $mode, $name) diff --git a/installperl b/installperl index b528c10aa6f1..e2006c5561e1 100755 --- a/installperl +++ b/installperl @@ -137,11 +137,6 @@ my %archpms = ( lib => 1, ); -if ($^O eq 'dos') { - push(@scripts,'djgpp/fixpmain'); - $archpms{config} = $archpms{filehand} = 1; -} - if ((-e "testcompile") && (defined($ENV{'COMPILE'}))) { push(@scripts, map("$_.exe", @scripts)); } @@ -283,17 +278,13 @@ if ($Is_VMS) { chmod(0755, "$installbin/$ndbg$perl$exe_ext"); } } -elsif ($^O ne 'dos') { +else { safe_unlink("$installbin/$perl_verbase$ver$exe_ext"); copy("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext"); strip("$installbin/$perl_verbase$ver$exe_ext"); fix_dep_names("$installbin/$perl_verbase$ver$exe_ext"); chmod(0755, "$installbin/$perl_verbase$ver$exe_ext"); } -else { - safe_unlink("$installbin/$perl.exe"); - copy("perl.exe", "$installbin/$perl.exe"); -} # Install library files. @@ -376,7 +367,7 @@ if ($Is_W32) { #linking lib isn't made in root but in CORE on Win32 # Install main perl executables # Make links to ordinary names if installbin directory isn't current directory. -if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VMS) { +if (! $versiononly && ! samepath($installbin, '.') && ! $Is_VMS) { safe_unlink("$installbin/$perl$exe_ext", "$installbin/suid$perl$exe_ext"); if ($^O eq 'vos') { # VOS doesn't support hard links, so use a symlink. @@ -390,7 +381,7 @@ if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VM # For development purposes it can be very useful to have multiple perls # build for different "architectures" (eg threading or not) simultaneously. -if ($opts{archname} && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VMS) { +if ($opts{archname} && ! samepath($installbin, '.') && ! $Is_VMS) { my $archperl = "$perl_verbase$ver-$Config{archname}$exe_ext"; safe_unlink("$installbin/$archperl"); if ($^O eq 'vos') { @@ -450,7 +441,7 @@ sub script_alias { my ($installscript, $orig, $alias, $scr_ext) = @_; safe_unlink("$installscript/$alias$scr_ext"); - if ($^O eq 'dos' or $Is_VMS or $^O eq 'transit') { + if ($Is_VMS or $^O eq 'transit') { copy("$installscript/$orig$scr_ext", "$installscript/$alias$scr_ext"); } elsif ($^O eq 'vos') { diff --git a/lib/AnyDBM_File.t b/lib/AnyDBM_File.t index 215868265ed9..22f262bf178c 100644 --- a/lib/AnyDBM_File.t +++ b/lib/AnyDBM_File.t @@ -13,7 +13,6 @@ use Fcntl; $Is_Dosish = ($^O eq 'amigaos' || $^O eq 'MSWin32' || - $^O eq 'dos' || $^O eq 'os2' || $^O eq 'cygwin'); diff --git a/lib/English.t b/lib/English.t index 35a06caacf24..f568d437a41a 100644 --- a/lib/English.t +++ b/lib/English.t @@ -33,11 +33,7 @@ $ORS = "\n"; { local(*IN, *OUT); - if ($^O ne 'dos') { - pipe(IN, OUT); - } else { - open(OUT, ">", "en.tmp"); - } + pipe(IN, OUT); select(OUT); $| = 1; print 'ok', '7'; @@ -48,7 +44,6 @@ $ORS = "\n"; my $close = close OUT; ok( !($close) == $CHILD_ERROR, '$CHILD_ERROR should be false' ); - open(IN, "<", "en.tmp") if ($^O eq 'dos'); my $foo = ; like( $foo, qr/ok 7/, '$OFS' ); diff --git a/lib/File/stat.pm b/lib/File/stat.pm index 57b8a39eb764..7b430d79ea9a 100644 --- a/lib/File/stat.pm +++ b/lib/File/stat.pm @@ -11,7 +11,7 @@ BEGIN { *warnif = \&warnings::warnif } our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); -our $VERSION = '1.11'; +our $VERSION = '1.12'; our @fields; our ( $st_dev, $st_ino, $st_mode, @@ -83,7 +83,7 @@ sub _ingroup { # component (at which point we might as well just call Perl_cando and # have done with it). -if (grep $^O eq $_, qw/os2 MSWin32 dos/) { +if (grep $^O eq $_, qw/os2 MSWin32/) { # from doio.c *cando = sub { ($_[0][2] & $_[1]) ? 1 : "" }; diff --git a/lib/File/stat.t b/lib/File/stat.t index 07987a04c279..b5475f9d89f7 100644 --- a/lib/File/stat.t +++ b/lib/File/stat.t @@ -172,7 +172,6 @@ SKIP: { } main::skip("Win32: different stat-info on filehandle", 1) if $^O eq 'MSWin32'; - main::skip("dos: inode number is fake on dos", 1) if $^O eq 'dos'; main::skip("OS/2: inode number is not constant on os/2", 1) if $^O eq 'os2'; diff --git a/lib/FileHandle.t b/lib/FileHandle.t index e71aa12971f6..c13e772efac7 100644 --- a/lib/FileHandle.t +++ b/lib/FileHandle.t @@ -57,9 +57,7 @@ ok(! $|, "handle not auto-flushing current output channel"); autoflush STDOUT 1; ok($|, "handle auto-flushing current output channel"); -SKIP: { - skip "No fork or pipe on DOS", 1 if ($^O eq 'dos'); - +{ my ($rd,$wr) = FileHandle::pipe; my $non_forking = ( $^O eq 'VMS' || $^O eq 'os2' || $^O eq 'amigaos' || @@ -90,7 +88,6 @@ SKIP: { die "fork failed: $!"; } } - -} # END: SKIP for dos +} ok(!FileHandle->new('', 'r'), "Can't open empty filename"); diff --git a/lib/perl5db.pl b/lib/perl5db.pl index 77c9407135a7..0187c2ba7a09 100644 --- a/lib/perl5db.pl +++ b/lib/perl5db.pl @@ -1541,7 +1541,7 @@ sub _autoflush { =cut - elsif ( $^O eq 'dos' or -e "con" or $^O eq 'MSWin32' ) { + elsif ( -e "con" or $^O eq 'MSWin32' ) { $console = "con"; } @@ -8969,7 +8969,7 @@ =head2 C - figure out which command to use to show documentation =cut sub setman { - $doccmd = $^O !~ /^(?:MSWin32|VMS|os2|dos|amigaos|riscos)\z/s + $doccmd = $^O !~ /^(?:MSWin32|VMS|os2|amigaos|riscos)\z/s ? "man" # O Happy Day! : "perldoc"; # Alas, poor unfortunates } ## end sub setman diff --git a/mg.c b/mg.c index 86d3f043cabc..10813a73165c 100644 --- a/mg.c +++ b/mg.c @@ -1316,7 +1316,7 @@ Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg) } #endif -#if !defined(OS2) && !defined(WIN32) && !defined(MSDOS) +#if !defined(OS2) && !defined(WIN32) /* And you'll never guess what the dog had */ /* in its mouth... */ if (TAINTING_get) { @@ -1381,7 +1381,7 @@ Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg) } } } -#endif /* neither OS2 nor WIN32 nor MSDOS */ +#endif /* neither OS2 nor WIN32 */ return 0; } diff --git a/perl.c b/perl.c index e3f3a27610f5..8d1cd47c820d 100644 --- a/perl.c +++ b/perl.c @@ -2377,10 +2377,6 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) scriptname = BIT_BUCKET; /* don't look for script or read stdin */ } else if (scriptname == NULL) { -#ifdef MSDOS - if ( PerlLIO_isatty(PerlIO_fileno(PerlIO_stdin())) ) - moreswitches("h"); -#endif scriptname = "-"; } @@ -2444,7 +2440,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) if (xsinit) (*xsinit)(aTHX); /* in case linked C routines want magical variables */ #ifndef PERL_MICRO -#if defined(VMS) || defined(WIN32) || defined(DJGPP) || defined(__CYGWIN__) +#if defined(VMS) || defined(WIN32) || defined(__CYGWIN__) init_os_extras(); #endif #endif @@ -3810,16 +3806,7 @@ S_minus_v(pTHX) #endif PerlIO_printf(PIO_stdout, - "\n\nCopyright 1987-2021, Larry Wall\n"); -#ifdef MSDOS - PerlIO_printf(PIO_stdout, - "\nMS-DOS port Copyright (c) 1989, 1990, Diomidis Spinellis\n"); -#endif -#ifdef DJGPP - PerlIO_printf(PIO_stdout, - "djgpp v2 port (jpl5003c) by Hirofumi Watanabe, 1996\n" - "djgpp v2 port (perl5004+) by Laszlo Molnar, 1997-1999\n"); -#endif + "\n\nCopyright 1987-2021, Larry Wall\n"); #ifdef OS2 PerlIO_printf(PIO_stdout, "\n\nOS/2 port Copyright (c) 1990, 1991, Raymond Chen, Kai Uwe Rommel\n" @@ -4609,11 +4596,6 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) nlen = s - old_var; -#if defined(MSDOS) && !defined(DJGPP) - *s = '\0'; - (void)strupr(old_var); - *s = '='; -#endif /* It's tempting to think that this hv_exists/hv_store pair should * be replaced with a single hv_fetch with the LVALUE flag true. * However, hv has magic, and if you follow the code in hv_common diff --git a/perl.h b/perl.h index 3db23f2f559b..53f00b1b7ac8 100644 --- a/perl.h +++ b/perl.h @@ -769,7 +769,7 @@ Example usage: */ /* define this once if either system, instead of cluttering up the src */ -#if defined(MSDOS) || defined(WIN32) +#if defined(WIN32) #define DOSISH 1 #endif @@ -1302,7 +1302,7 @@ Use L to declare variables of the maximum usable size on this platform. #define PERL_USES_PL_PIDSTATUS #endif -#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) +#if !defined(OS2) && !defined(WIN32) #define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION #endif diff --git a/perlio.c b/perlio.c index 2933cb64f64b..b972b2f9cddd 100644 --- a/perlio.c +++ b/perlio.c @@ -244,11 +244,7 @@ PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags) const int fd = PerlLIO_dup_cloexec(PerlIO_fileno(f)); if (fd >= 0) { char mode[8]; -# ifdef DJGPP - const int omode = djgpp_get_stream_mode(f); -# else const int omode = fcntl(fd, F_GETFL); -# endif PerlIO_intmode2str(omode,mode,NULL); /* the r+ is a hack */ return PerlIO_fdopen(fd, mode); diff --git a/pod/perl.pod b/pod/perl.pod index eab270131bea..415834dc32b9 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -277,7 +277,6 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp perlandroid Perl notes for Android perlbs2000 Perl notes for POSIX-BC BS2000 perlcygwin Perl notes for Cygwin - perldos Perl notes for DOS perlfreebsd Perl notes for FreeBSD perlhaiku Perl notes for Haiku perlhpux Perl notes for HP-UX diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 0c47db043c09..406e879d1ed1 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -63,10 +63,6 @@ removed in a future Perl version: use feature "refaliasing"; \$x = \$y; -=item Allocation too large: %x - -(X) You can't allocate more than 64K on an MS-DOS machine. - =item '%c' allowed only after types %s in %s (F) The modifiers '!', '<' and '>' are allowed in pack() or unpack() only @@ -5318,10 +5314,6 @@ control flow. (W unopened) You tried to read from a filehandle that was never opened. -=item Reallocation too large: %x - -(F) You can't allocate more than 64K on an MS-DOS machine. - =item realloc() of freed memory ignored (S malloc) An internal routine called realloc() on something that had diff --git a/pod/perlmodinstall.pod b/pod/perlmodinstall.pod index b07ef71ecc4b..a4dc20491c51 100644 --- a/pod/perlmodinstall.pod +++ b/pod/perlmodinstall.pod @@ -163,37 +163,6 @@ While still in that directory, type: =item * -B - - A. DECOMPRESS - -djtarx ( L ) -will both uncompress and unpack. - - B. UNPACK - -See above. - - C. BUILD - -Go into the newly-created directory and type: - - perl Makefile.PL - make test - -You will need the packages mentioned in F -in the Perl distribution. - - D. INSTALL - -While still in that directory, type: - - make install - -You will need the packages mentioned in F in the Perl distribution. - -=item * - B Get the EMX development suite and gzip/tar from Hobbes ( diff --git a/pod/perlport.pod b/pod/perlport.pod index 5acb5e42e0af..5e780479235f 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -486,7 +486,7 @@ executable code for that command or program. First, many systems have "internal" commands that are built-in to the shell or OS and while these commands can be invoked, there is no corresponding file. Second, some operating systems (e.g., Cygwin, -DJGPP, OS/2, and VOS) have required suffixes for executable files; +OS/2, and VOS) have required suffixes for executable files; these suffixes are generally permitted on the command name but are not required. Thus, a command like C might exist in a file named F, F, or F, depending on the operating system. @@ -1013,11 +1013,6 @@ Also see: =item * -The djgpp environment for DOS, L -and L. - -=item * - The EMX environment for DOS, OS/2, etc. emx@iaehv.nl, L Also L. @@ -2536,7 +2531,7 @@ L for binary distributions. =head1 SEE ALSO L, L, L, -L, L, +L, L, L, L, L, L, L, L, L, L, L, diff --git a/t/io/closepid.t b/t/io/closepid.t index 6ba80f8ba86d..c05ef8c12f06 100644 --- a/t/io/closepid.t +++ b/t/io/closepid.t @@ -6,10 +6,6 @@ BEGIN { set_up_inc('../lib'); } -if ($^O eq 'dos') { - skip_all("no multitasking"); -} - plan tests => 3; watchdog(10, $^O eq 'MSWin32' ? "alarm" : ''); diff --git a/t/io/fs.t b/t/io/fs.t index 2d36f1e75e0a..9cda3e9ad6c5 100644 --- a/t/io/fs.t +++ b/t/io/fs.t @@ -37,7 +37,7 @@ die "Can't get current working directory" if(!$wd); my $has_link = $Config{d_link}; my $accurate_timestamps = !($^O eq 'MSWin32' || - $^O eq 'dos' || $^O eq 'os2' || + $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'amigaos' || $wd =~ m#$Config{afsroot}/# ); @@ -53,9 +53,8 @@ if (defined &Win32::IsWinNT && Win32::IsWinNT()) { } my $needs_fh_reopen = - $^O eq 'dos' # Not needed on HPFS, but needed on HPFS386 ?! - || $^O eq 'os2'; + $^O eq 'os2'; $needs_fh_reopen = 1 if (defined &Win32::IsWin95 && Win32::IsWin95()); diff --git a/t/io/layers.t b/t/io/layers.t index 9ee10a04f4b9..7938c3923192 100644 --- a/t/io/layers.t +++ b/t/io/layers.t @@ -19,7 +19,7 @@ BEGIN { use Config; -my $DOSISH = $^O =~ /^(?:MSWin32|os2|dos)$/ ? 1 : 0; +my $DOSISH = $^O =~ /^(?:MSWin32|os2)$/ ? 1 : 0; $DOSISH = 1 if !$DOSISH and $^O =~ /^uwin/; my $NONSTDIO = exists $ENV{PERLIO} && $ENV{PERLIO} ne 'stdio' ? 1 : 0; my $FASTSTDIO = $Config{d_faststdio} && $Config{usefaststdio} ? 1 : 0; diff --git a/t/io/openpid.t b/t/io/openpid.t index dad6af091aed..8b4833a16cfa 100644 --- a/t/io/openpid.t +++ b/t/io/openpid.t @@ -13,10 +13,6 @@ BEGIN { set_up_inc('../lib'); } -if ($^O eq 'dos') { - skip_all("no multitasking"); -} - plan tests => 10; watchdog(15, $^O eq 'MSWin32' ? "alarm" : ''); diff --git a/t/io/tell.t b/t/io/tell.t index ce227be98872..e93dc57b298c 100644 --- a/t/io/tell.t +++ b/t/io/tell.t @@ -10,7 +10,7 @@ plan(36); $TST = 'TST'; -$Is_Dosish = ($^O eq 'MSWin32' or $^O eq 'dos' or +$Is_Dosish = ($^O eq 'MSWin32' or $^O eq 'os2' or $^O eq 'cygwin' or $^O =~ /^uwin/); diff --git a/t/lib/commonsense.t b/t/lib/commonsense.t index 9f0f13f634ce..53d7b3ad9810 100644 --- a/t/lib/commonsense.t +++ b/t/lib/commonsense.t @@ -17,8 +17,7 @@ if (($Config{'extensions'} !~ /\bFcntl\b/) ){ if (($Config{'extensions'} !~ /\bIO\s/) ){ BAIL_OUT("Perl configured without IO module"); } -# hey, DOS users do not need this kind of common sense ;-) -if ($^O ne 'dos' && ($Config{'extensions'} !~ /\bFile\/Glob\b/) ){ +if (($Config{'extensions'} !~ /\bFile\/Glob\b/) ){ BAIL_OUT("Perl configured without File::Glob module"); } diff --git a/t/lib/dbmt_common.pl b/t/lib/dbmt_common.pl index 00af9a9f45cc..f8fbbb0bc9d3 100644 --- a/t/lib/dbmt_common.pl +++ b/t/lib/dbmt_common.pl @@ -43,7 +43,7 @@ BEGIN } SKIP: { skip "different file permission semantics on $^O", 1 - if $^O eq 'amigaos' || $^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'dos' || $^O eq 'cygwin' || $^O eq 'vos'; + if $^O eq 'amigaos' || $^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'vos'; my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); is($mode & 0777, 0640); diff --git a/t/lib/warnings/pp_sys b/t/lib/warnings/pp_sys index 5f6b83d2f637..3541bd1b16fb 100644 --- a/t/lib/warnings/pp_sys +++ b/t/lib/warnings/pp_sys @@ -624,13 +624,6 @@ Unsuccessful open on filename containing newline at - line 5. ######## # pp_sys.c [pp_sysread] use warnings 'io' ; -if ($^O eq 'dos') { - print <$file") ; binmode F; @@ -645,11 +638,11 @@ sysread(NONEXISTENT, $a, 10); read(NONEXISTENT, $a, 10); unlink $file ; EXPECT -Filehandle F opened only for output at - line 13. -sysread() on closed filehandle F at - line 18. -read() on closed filehandle F at - line 19. -sysread() on unopened filehandle NONEXISTENT at - line 20. -read() on unopened filehandle NONEXISTENT at - line 21. +Filehandle F opened only for output at - line 6. +sysread() on closed filehandle F at - line 11. +read() on closed filehandle F at - line 12. +sysread() on unopened filehandle NONEXISTENT at - line 13. +read() on unopened filehandle NONEXISTENT at - line 14. ######## # pp_sys.c [pp_binmode] use warnings 'unopened' ; diff --git a/t/op/alarm.t b/t/op/alarm.t index 749482c26dd8..6d2b4b4c9572 100644 --- a/t/op/alarm.t +++ b/t/op/alarm.t @@ -50,7 +50,7 @@ is( $@, "ALARM!\n", 'alarm w/$SIG{ALRM} vs system()' ); { local $TODO = "Why does system() block alarm() on $^O?" - if $^O eq 'VMS' || $^O eq 'dos'; + if $^O eq 'VMS'; ok( abs($diff - 3) <= 1, " right time (waited $diff secs for 3-sec alarm)" ); } diff --git a/t/op/magic.t b/t/op/magic.t index 30b57e661455..e2e0b30211f1 100644 --- a/t/op/magic.t +++ b/t/op/magic.t @@ -51,7 +51,6 @@ use Config; $Is_MSWin32 = $^O eq 'MSWin32'; $Is_VMS = $^O eq 'VMS'; -$Is_Dos = $^O eq 'dos'; $Is_os2 = $^O eq 'os2'; $Is_Cygwin = $^O eq 'cygwin'; @@ -114,7 +113,7 @@ close FOO; # just mention it, squelch used-only-once SKIP: { skip('SIGINT not safe on this platform', 5) - if $Is_MSWin32 || $Is_Dos; + if $Is_MSWin32; # the next tests are done in a subprocess because sh spits out a # newline onto stderr when a child process kills itself with SIGINT. # We use a pipe rather than system() because the VMS command buffer @@ -350,7 +349,7 @@ EOF ok close(SCRIPT) or diag $!; ok chmod(0755, $script) or diag $!; $_ = $Is_VMS ? `$perl $script` : `$script`; - s/\.exe//i if $Is_Dos or $Is_Cygwin or $Is_os2; + s/\.exe//i if $Is_Cygwin or $Is_os2; s{is perl}{is $perl}; # for systems where $^X is only a basename s{\\}{/}g; if ($Is_MSWin32 || $Is_os2) { @@ -363,7 +362,7 @@ EOF } } $_ = `$perl $script`; - s/\.exe//i if $Is_Dos or $Is_os2 or $Is_Cygwin; + s/\.exe//i if $Is_os2 or $Is_Cygwin; s{\\}{/}g; if ($Is_MSWin32 || $Is_os2) { is uc $_, uc $s1; @@ -715,8 +714,6 @@ is ++${^MPEN}, 1, '${^MPEN} can be incremented'; # ^^^^^^^^^ New tests go here ^^^^^^^^^ SKIP: { - skip("%ENV manipulations fail or aren't safe on $^O", 20) - if $Is_Dos; skip "Win32 needs XS for env/shell tests", 20 if $Is_MSWin32 && is_miniperl; diff --git a/t/op/stat.t b/t/op/stat.t index 7bf1e1248abd..b391dd0e7c83 100644 --- a/t/op/stat.t +++ b/t/op/stat.t @@ -39,7 +39,6 @@ $ENV{LANGUAGE} = 'C'; # Ditto in GNU. my $Is_Amiga = $^O eq 'amigaos'; my $Is_Cygwin = $^O eq 'cygwin'; my $Is_Darwin = $^O eq 'darwin'; -my $Is_Dos = $^O eq 'dos'; my $Is_MSWin32 = $^O eq 'MSWin32'; my $Is_OS2 = $^O eq 'os2'; my $Is_Solaris = $^O eq 'solaris'; @@ -48,7 +47,7 @@ my $Is_MPRAS = $^O =~ /svr4/ && -f '/etc/.relid'; my $Is_Android = $^O =~ /android/; my $Is_Dfly = $^O eq 'dragonfly'; -my $Is_Dosish = $Is_Dos || $Is_OS2 || $Is_MSWin32; +my $Is_Dosish = $Is_OS2 || $Is_MSWin32; my $ufs_no_ctime = ($Is_Dfly || $Is_Darwin) && (() = `df -t ufs . 2>/dev/null`) == 2; @@ -88,7 +87,7 @@ SKIP: { SKIP: { skip "mtime and ctime not reliable", 2 - if $Is_MSWin32 or $Is_Cygwin or $Is_Dos or $Is_Darwin; + if $Is_MSWin32 or $Is_Cygwin or $Is_Darwin; ok( $mtime, 'mtime' ); is( $mtime, $ctime, 'mtime == ctime' ); @@ -203,11 +202,7 @@ SKIP: { skip "Can't test -r or -w meaningfully if you're superuser", 2 if ($Is_Cygwin ? _ingroup(544, 1) : $> == 0); - SKIP: { - skip "Can't test -r meaningfully?", 1 if $Is_Dos; ok(!-r $tmpfile, " -r"); - } - ok(!-w $tmpfile, " -w"); # switch uid back (may not be implemented) @@ -260,7 +255,7 @@ ok(! -e $tmpfile_link, ' -e on unlinked file'); SKIP: { skip "No character, socket or block special files", 6 - if $Is_MSWin32 || $Is_Dos; + if $Is_MSWin32; skip "/dev isn't available to test against", 6 unless -d '/dev' && -r '/dev' && -x '/dev'; skip "Skipping: unexpected ls output in MP-RAS", 6 diff --git a/t/op/sysio.t b/t/op/sysio.t index e543ae4c1060..6093cd342249 100644 --- a/t/op/sysio.t +++ b/t/op/sysio.t @@ -13,8 +13,7 @@ binmode I; $reopen = ($^O eq 'VMS' || $^O eq 'os2' || - $^O eq 'MSWin32' || - $^O eq 'dos'); + $^O eq 'MSWin32'); $x = 'abc'; diff --git a/t/op/taint.t b/t/op/taint.t index 42a25e6b7c2a..c1ca6d345c60 100644 --- a/t/op/taint.t +++ b/t/op/taint.t @@ -45,7 +45,6 @@ BEGIN { my $Is_VMS = $^O eq 'VMS'; my $Is_MSWin32 = $^O eq 'MSWin32'; -my $Is_Dos = $^O eq 'dos'; my $Is_Cygwin = $^O eq 'cygwin'; my $Is_OpenBSD = $^O eq 'openbsd'; my $Is_MirBSD = $^O eq 'mirbsd'; @@ -147,7 +146,7 @@ my $TEST = 'TEST'; SKIP: { skip "Environment tainting tests skipped", 4 - if $Is_MSWin32 || $Is_VMS || $Is_Dos; + if $Is_MSWin32 || $Is_VMS; my @vars = ('PATH', @MoreEnv); while (my $v = $vars[0]) { @@ -168,7 +167,7 @@ my $TEST = 'TEST'; } my $tmp; - if ($^O eq 'os2' || $^O eq 'amigaos' || $Is_MSWin32 || $Is_Dos) { + if ($^O eq 'os2' || $^O eq 'amigaos' || $Is_MSWin32) { print "# all directories are writeable\n"; } else { @@ -1305,8 +1304,7 @@ violates_taint(sub { link $TAINT, '' }, 'link'); # We do not want the whole taint.t to fail # just because Errno possibly failing. ok(eval('$!{ENOENT}') || - $! == 2 || # File not found - ($Is_Dos && $! == 22)); + $! == 2); # File not found violates_taint(sub { open FOO, "> $foo" }, 'open', 'open for write'); violates_taint(sub { open my $fh, '>', $foo }, 'open', 'open for write'); @@ -2393,7 +2391,7 @@ end { SKIP: { skip "Environment tainting tests skipped", 1 - if $Is_MSWin32 || $Is_VMS || $Is_Dos; + if $Is_MSWin32 || $Is_VMS; local $ENV{XX} = '\p{IsB}'; # Making it an environment variable taints it diff --git a/t/op/time.t b/t/op/time.t index e0197da2582c..9fdc7b8cf6ab 100644 --- a/t/op/time.t +++ b/t/op/time.t @@ -51,7 +51,7 @@ SKIP: { # This conditional of "No tzset()" is stolen from ext/POSIX/t/time.t skip "No tzset()", 1 if $^O eq "VMS" || $^O eq "cygwin" || - $^O eq "djgpp" || $^O eq "MSWin32" || $^O eq "dos" || + $^O eq "MSWin32" || $^O eq "interix"; # check that localtime respects changes to $ENV{TZ} diff --git a/t/op/write.t b/t/op/write.t index 97c3d3015459..33f52c2b3f87 100644 --- a/t/op/write.t +++ b/t/op/write.t @@ -2054,7 +2054,7 @@ fresh_perl_is('for(1..2){formline*0}', '', { stderr => 1 } , "#130722 - assertio # Just a complete test for format, including top-, left- and bottom marging # and format detection through glob entries -if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'dos' || +if ($^O eq 'VMS' || $^O eq 'MSWin32' || ($^O eq 'os2' and not eval '$OS2::can_fork')) { $test = curr_test(); SKIP: { diff --git a/thread.h b/thread.h index 551074b11f2a..744d6425df67 100644 --- a/thread.h +++ b/thread.h @@ -32,11 +32,6 @@ # define PERL_SET_CONTEXT(t) Perl_set_context((void*)t) # define PTHREAD_GETSPECIFIC_INT -# ifdef DJGPP -# define pthread_addr_t any_t -# define NEED_PTHREAD_INIT -# define PTHREAD_CREATE_JOINABLE (1) -# endif # ifdef OEMVS # define pthread_addr_t void * # define pthread_create(t,a,s,d) pthread_create(t,&(a),s,d) @@ -59,7 +54,7 @@ # define pthread_mutexattr_init(a) pthread_mutexattr_create(a) # define pthread_mutexattr_settype(a,t) pthread_mutexattr_setkind_np(a,t) # endif -# if defined(DJGPP) || defined(OEMVS) +# if defined(OEMVS) # define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_attr_setdetachstate(a,&(s)) # define YIELD pthread_yield(NULL) # endif diff --git a/util.c b/util.c index 52e02c8de6a7..068b0e737cd7 100644 --- a/util.c +++ b/util.c @@ -2923,18 +2923,6 @@ Perl_my_popen(pTHX_ const char *cmd, const char *mode) PerlLIO_close(pp[0]); return PerlIO_fdopen(p[This], mode); } -#elif defined(DJGPP) -FILE *djgpp_popen(); -PerlIO * -Perl_my_popen(pTHX_ const char *cmd, const char *mode) -{ - PERL_FLUSHALL_FOR_CHILD; - /* Call system's popen() to get a FILE *, then import it. - used 0 for 2nd parameter to PerlIO_importFILE; - apparently not used - */ - return PerlIO_importFILE(djgpp_popen(cmd, mode), 0); -} #elif defined(__LIBCATAMOUNT__) PerlIO * Perl_my_popen(pTHX_ const char *cmd, const char *mode) @@ -3392,20 +3380,6 @@ Perl_my_pclose(pTHX_ PerlIO *ptr) } #endif -#if defined(DJGPP) -int djgpp_pclose(); -I32 -Perl_my_pclose(pTHX_ PerlIO *ptr) -{ - /* Needs work for PerlIO ! */ - FILE * const f = PerlIO_findFILE(ptr); - I32 result = djgpp_pclose(f); - result = (result << 8) & 0xff00; - PerlIO_releaseFILE(ptr,f); - return result; -} -#endif - #define PERL_REPEATCPY_LINEAR 4 void Perl_repeatcpy(char *to, const char *from, I32 len, IV count) diff --git a/win32/GNUmakefile b/win32/GNUmakefile index 6f90bf5bdb03..fb97c86032cf 100644 --- a/win32/GNUmakefile +++ b/win32/GNUmakefile @@ -1754,7 +1754,6 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile copy ..\README.bs2000 ..\pod\perlbs2000.pod copy ..\README.cn ..\pod\perlcn.pod copy ..\README.cygwin ..\pod\perlcygwin.pod - copy ..\README.dos ..\pod\perldos.pod copy ..\README.freebsd ..\pod\perlfreebsd.pod copy ..\README.haiku ..\pod\perlhaiku.pod copy ..\README.hpux ..\pod\perlhpux.pod @@ -1879,13 +1878,13 @@ distclean: realclean -cd $(PODDIR) && del /f *.html *.bat roffitall \ perl5355delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ perlapi.pod perlbs2000.pod perlcn.pod perlcygwin.pod \ - perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ - perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ - perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ - perlopenbsd.pod perlos2.pod perlos390.pod perlos400.pod \ - perlplan9.pod perlqnx.pod perlriscos.pod perlsolaris.pod \ - perlsynology.pod perltoc.pod perltru64.pod perltw.pod \ - perluniprops.pod perlvos.pod perlwin32.pod + perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ + perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \ + perlmacos.pod perlmacosx.pod perlmodlib.pod perlopenbsd.pod \ + perlos2.pod perlos390.pod perlos400.pod perlplan9.pod \ + perlqnx.pod perlriscos.pod perlsolaris.pod perlsynology.pod \ + perltoc.pod perltru64.pod perltw.pod perluniprops.pod \ + perlvos.pod perlwin32.pod -cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \ perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \ xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails diff --git a/win32/Makefile b/win32/Makefile index 5f87b83c3c5b..991e044755f6 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1214,7 +1214,6 @@ utils: $(PERLEXE) ..\utils\Makefile copy ..\README.bs2000 ..\pod\perlbs2000.pod copy ..\README.cn ..\pod\perlcn.pod copy ..\README.cygwin ..\pod\perlcygwin.pod - copy ..\README.dos ..\pod\perldos.pod copy ..\README.freebsd ..\pod\perlfreebsd.pod copy ..\README.haiku ..\pod\perlhaiku.pod copy ..\README.hpux ..\pod\perlhpux.pod @@ -1340,13 +1339,13 @@ distclean: realclean -cd $(PODDIR) && del /f *.html *.bat roffitall \ perl5355delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ perlapi.pod perlbs2000.pod perlcn.pod perlcygwin.pod \ - perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ - perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ - perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ - perlopenbsd.pod perlos2.pod perlos390.pod perlos400.pod \ - perlplan9.pod perlqnx.pod perlriscos.pod perlsolaris.pod \ - perlsynology.pod perltoc.pod perltru64.pod perltw.pod \ - perluniprops.pod perlvos.pod perlwin32.pod + perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ + perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \ + perlmacos.pod perlmacosx.pod perlmodlib.pod perlopenbsd.pod \ + perlos2.pod perlos390.pod perlos400.pod perlplan9.pod \ + perlqnx.pod perlriscos.pod perlsolaris.pod perlsynology.pod \ + perltoc.pod perltru64.pod perltw.pod perluniprops.pod \ + perlvos.pod perlwin32.pod -cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \ perldoc perlivp libnetcfg enc2xs encguess piconv cpan streamzip *.bat \ xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails From 321037ce98e091498629de4d88a98ff0fe02fe4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= Date: Mon, 27 Jul 2020 14:31:25 +0100 Subject: [PATCH 2/2] Remove AT&T UWIN support UWIN was last released on 2012 and has been superseded by Cygwin these days. --- MANIFEST | 1 - Porting/checkURL.pl | 1 - README.cygwin | 1 - ext/POSIX/POSIX.xs | 4 +- ext/POSIX/t/posix.t | 3 +- hints/uwin.sh | 134 -------------------------------------------- installman | 2 +- makedepend_file.SH | 1 - pod/perlport.pod | 5 -- t/io/layers.t | 1 - t/io/tell.t | 3 +- t/loc_tools.pl | 3 - t/op/chdir.t | 4 +- 13 files changed, 6 insertions(+), 157 deletions(-) delete mode 100644 hints/uwin.sh diff --git a/MANIFEST b/MANIFEST index 45eb42b72906..440c4e19501b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -4750,7 +4750,6 @@ hints/unicos.sh Hints for named architecture hints/unicosmk.sh Hints for named architecture hints/unisysdynix.sh Hints for named architecture hints/utekv.sh Hints for named architecture -hints/uwin.sh Hints for named architecture hints/vos.sh Hints for named architecture hv.c Hash value code hv.h Hash value header diff --git a/Porting/checkURL.pl b/Porting/checkURL.pl index 2d92ff3c1106..a9a031e61859 100755 --- a/Porting/checkURL.pl +++ b/Porting/checkURL.pl @@ -242,7 +242,6 @@ sub work { http://www.leo.org http://www.madgoat.com http://www.mks.com/s390/gnu/ -http://www.research.att.com/sw/tools/uwin/ http://www.tpj.com/ http://safaribooksonline.com/ http://use.perl.org/~autrijus/journal/25768 diff --git a/README.cygwin b/README.cygwin index 0b737a58f292..ab9814a7d3d0 100644 --- a/README.cygwin +++ b/README.cygwin @@ -595,7 +595,6 @@ be kept as clean as possible. regen_lib.pl - file permissions plan9/mkfile - hints/uwin.sh vms/descrip_mms.template win32/Makefile diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs index 9d9d8a5be27e..355c8b6462af 100644 --- a/ext/POSIX/POSIX.xs +++ b/ext/POSIX/POSIX.xs @@ -1348,11 +1348,11 @@ static NV_PAYLOAD_TYPE S_getpayload(NV nv) #include #ifdef HAS_TZNAME -# if !defined(WIN32) && !defined(__CYGWIN__) && !defined(__UWIN__) +# if !defined(WIN32) && !defined(__CYGWIN__) extern char *tzname[]; # endif #else -#if !defined(WIN32) && !defined(__UWIN__) || (defined(__MINGW32__) && !defined(tzname)) +#if !defined(WIN32) || (defined(__MINGW32__) && !defined(tzname)) char *tzname[] = { "" , "" }; #endif #endif diff --git a/ext/POSIX/t/posix.t b/ext/POSIX/t/posix.t index 4a0d1f34f7e8..f200a895bdec 100644 --- a/ext/POSIX/t/posix.t +++ b/ext/POSIX/t/posix.t @@ -27,7 +27,6 @@ $| = 1; $Is_W32 = $^O eq 'MSWin32'; $Is_VMS = $^O eq 'VMS'; $Is_OS2 = $^O eq 'os2'; -$Is_UWin = $^O eq 'uwin'; $Is_OS390 = $^O eq 'os390'; my $vms_unix_rpt = 0; @@ -468,7 +467,7 @@ if ($^O eq 'vos') { } else { $| = 0; # The following line assumes buffered output, which may be not true: - print '@#!*$@(!@#$' unless ($Is_OS2 || $Is_UWin || $Is_OS390 || + print '@#!*$@(!@#$' unless ($Is_OS2 || $Is_OS390 || $Is_VMS || (defined $ENV{PERLIO} && $ENV{PERLIO} eq 'unix' && diff --git a/hints/uwin.sh b/hints/uwin.sh deleted file mode 100644 index 0c70b529cbd2..000000000000 --- a/hints/uwin.sh +++ /dev/null @@ -1,134 +0,0 @@ -# -# The lines starting with #b that follow are the uwin.sh -# file from Joe Buehler. Some lines are, themselves, -# commented out. If an uncommented line disappears -# altogether, it means it didn't seem to be needed any more, -# to get a proper build on the following machine. -# UWIN-NT korn-7200 3.19-5.0 2195 i686 -# But maybe they'll be useful to others on different machines. - -#b # hint file for U/WIN (UNIX for Windows 95/NT) -#b # -#b # created for U/WIN version 1.55 -#b # running under Windows NT 4.0 SP 3 -#b # using MSVC++ 5.0 for the compiler -#b # -#b # created by Joe Buehler (jbuehler@hekimian.com) -#b # -#b # for information about U/WIN see www.gtlinc.com -#b # -#b -#b #ccflags=-D_BSDCOMPAT -#b # confusion in Configure over preprocessor -#b cppstdin=`pwd`/cppstdin -#b cpprun=`pwd`/cppstdin -#b # pwd.h confuses Configure -#b d_pwcomment=undef -#b d_pwgecos=define -#b # work around case-insensitive file names -#b firstmakefile=GNUmakefile -#b # avoid compilation error -#b i_utime=undef -#b # compile/link flags -#b ldflags=-g -#b optimize=-g -#b static_ext="B Data/Dumper Digest/MD5 Errno Fcntl Filter::Util::Call IO IPC/SysV MIME::Base64 Opcode PerlIO::scalar POSIX SDBM_File Socket Storable Unicode::Collate Unicode::Normalize attributes re" -#b #static_ext=none -#b # dynamic loading needs work -#b usedl=undef -#b # perl malloc will not work -#b usemymalloc=n -#b # cannot use nm -#b usenm=undef -#b # vfork() is buggy (as of 1.55 anyway) -#b usevfork=false - -# __UWIN__ added so it could be used in ext/POSIX/POSIX.xs -# to protect against either tzname definition. According to Dave Korn - -#dgk gcc on uwin also predefined _UWIN as does the digital mars compiler. -#dgk -#dgk Only ncc does not define _UWIN and this is intentional. ncc is used -#dgk to build binaries that do not require the uwin runtime. -#dgk This could be used for building a native win32 perl using unix -#dgk makefiles. However, in this case you don't wan't _UWIN defined. -#dgk -#dgk I have used _UWIN everywhere else in any uwin specific changes. -#dgk and _WIN32 on windows specific changes, and _MSVC on any compiler -#dgk Visual C specific changes. We also define _WINIX for any unix -#dgk on windows implementation so that _UWIN or __cygwin__ imply _WINIX. - -# I left __UWIN__ as is, since I had already filed a patch, -# and it might be useful to distinguish perl-specific tweaks -# from generic uwin ones. - -ccflags="$ccflags -D__UWIN__" - -# This from Dave Korn -#dgk Windows splits shared libraries into two parts; the part used -#dgk for linking and the part that is used for running. -#dgk Given a library foo, then the part you link with is named -#dgk foo.lib -#dgk and is in the lib directory. The part that you run with -#dgk is named -#dgk foo.dll or foo#.dll -#dgk and is in the bin directory. This way when you set you PATH -#dgk variable, it automatically does the library search. -#dgk -#dgk Static libraries use libfoo.a. -#dgk By the way if you specify -lfoo, then it will first look for foo.lib -#dgk and then libfoo.a. If you specify +lfoo, it will only look for -#dgk static versions of the library. - -# So we use .lib as the extension, and put -lm in, because it is a .a -# This probably accounts for the comment about dynamic libraries -# needing work, and indeed, the build failed if I didn't undef it. - -lib_ext=".lib" -libs="-lm" -so=dll -# dynamic loading still needs work -usedl=undef - -# confusion in Configure over preprocessor -cppstdin=`pwd`/cppstdin -cpprun=`pwd`/cppstdin - -# lest it default to .exe, and then there's no perl in the test directory, -# t, just a perl.exe, and make test promptly dies. _exe gets set to .exe -# by Configure (on 5/23/2003) if exe_ext is merely null, so clean it out, too. -exe_ext='' -_exe='' - -# work around case-insensitive file names -firstmakefile=GNUmakefile -# compile/link flags -ldflags=-g -optimize=-g - -# Original, with :: separators, cause make to choke. -# No longer seems to be necessary at all. -# static_ext="B Data/Dumper Digest/MD5 Errno Fcntl Filter/Util/Call IO IPC/SysV MIME/Base64 Opcode PerlIO/scalar POSIX SDBM_File Socket Storable Unicode/Collate Unicode/Normalize attributes re" - -# perl malloc will not work -usemymalloc=n -# cannot use nm -usenm=undef -# vfork() is buggy (as of 1.55 anyway) -usevfork=false - -# Some other comments: -# If you see something like - -# got: '/E/users/jpl/src/cmd/perl/t' -# expected: '/e/users/jpl/src/cmd/perl/t' -# Failed test (../dist/Cwd/t/cwd.t at line 88) - -# when running tests under harness, try the simple expedient of -# changing to directory -# /E/users/jpl/src/cmd/perl/t # note the leading capital /E -# before running the tests. UWIN is a bit schizophrenic about case. -# It likes to return an uppercase "disk" letter for the leading directory, -# but your home directory may well have that in lower case. -# In most cases, they are entirely interchangeable, but the perl tests -# don't ignore case. If they fail, change to the directory they expect. diff --git a/installman b/installman index 0154be4d68cb..686862d8c4d7 100755 --- a/installman +++ b/installman @@ -154,7 +154,7 @@ sub pod2man { next; } - if ($^O eq 'os2' || $^O eq 'amigaos' || $^O eq 'uwin' || $^O eq 'cygwin') { + if ($^O eq 'os2' || $^O eq 'amigaos' || $^O eq 'cygwin') { $manpage =~ s#::#.#g; } my $tmp = "${mandir}/${manpage}.tmp"; diff --git a/makedepend_file.SH b/makedepend_file.SH index 51f5191fe938..b90f741ee1bf 100644 --- a/makedepend_file.SH +++ b/makedepend_file.SH @@ -65,7 +65,6 @@ amigaos) cat=/bin/cat ;; # must be absolute esac case "$osname" in - uwin) uwinfix="-e s,\\\\\\\\,/,g -e s,\\([a-zA-Z]\\):/,/\\1/,g" ;; os2) uwinfix="-e s,\\\\\\\\,/,g" ;; cygwin) uwinfix="-e s,\\\\\\\\,/,g" ;; posix-bc) uwinfix="-e s/\\*POSIX(\\(.*\\))/\\1/" ;; diff --git a/pod/perlport.pod b/pod/perlport.pod index 5e780479235f..ca99890e061e 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -1036,11 +1036,6 @@ as L), L =item * -The U/WIN environment for Win32, -L - -=item * - Build instructions for OS/2, L =back diff --git a/t/io/layers.t b/t/io/layers.t index 7938c3923192..1c1ac4fd4c47 100644 --- a/t/io/layers.t +++ b/t/io/layers.t @@ -20,7 +20,6 @@ BEGIN { use Config; my $DOSISH = $^O =~ /^(?:MSWin32|os2)$/ ? 1 : 0; - $DOSISH = 1 if !$DOSISH and $^O =~ /^uwin/; my $NONSTDIO = exists $ENV{PERLIO} && $ENV{PERLIO} ne 'stdio' ? 1 : 0; my $FASTSTDIO = $Config{d_faststdio} && $Config{usefaststdio} ? 1 : 0; my $UTF8_STDIN; diff --git a/t/io/tell.t b/t/io/tell.t index e93dc57b298c..3e156636c456 100644 --- a/t/io/tell.t +++ b/t/io/tell.t @@ -11,8 +11,7 @@ plan(36); $TST = 'TST'; $Is_Dosish = ($^O eq 'MSWin32' or - $^O eq 'os2' or $^O eq 'cygwin' or - $^O =~ /^uwin/); + $^O eq 'os2' or $^O eq 'cygwin'); open($TST, 'harness') || (die "Can't open harness"); binmode $TST if $Is_Dosish; diff --git a/t/loc_tools.pl b/t/loc_tools.pl index a9266ab374cb..46db3dce5f11 100644 --- a/t/loc_tools.pl +++ b/t/loc_tools.pl @@ -388,9 +388,6 @@ ($;$) return if (($^O eq 'MSWin32' && !$winxp) && $Config{cc} =~ /^(cl|gcc|g\+\+|ici)/i); - # UWIN seems to loop after taint tests, just skip for now - return if ($^O =~ /^uwin/); - my @Locale; _trylocale("C", \@categories, \@Locale, $allow_incompatible); _trylocale("POSIX", \@categories, \@Locale, $allow_incompatible); diff --git a/t/op/chdir.t b/t/op/chdir.t index b9df30d40a07..44bc90f14da5 100644 --- a/t/op/chdir.t +++ b/t/op/chdir.t @@ -29,9 +29,7 @@ use File::Spec::Functions qw(:DEFAULT splitdir rel2abs splitpath); # Can't use Cwd::abs_path() because it has different ideas about # path separators than File::Spec. sub abs_path { - my $d = rel2abs(curdir); - $d = lc($d) if $^O =~ /^uwin/; - $d; + return rel2abs(curdir); } my $Cwd = abs_path;