summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANIFEST8
-rw-r--r--Porting/pumpkin.pod2
-rw-r--r--README.dos331
-rw-r--r--djgpp/config.over64
-rw-r--r--djgpp/configure.bat37
-rw-r--r--djgpp/djgpp.c481
-rw-r--r--djgpp/djgpp.h55
-rw-r--r--djgpp/djgppsed.sh48
-rw-r--r--djgpp/fixpmain33
-rw-r--r--doio.c6
-rw-r--r--dosish.h72
-rw-r--r--ext/Devel-Peek/t/Peek.t2
-rw-r--r--ext/File-Glob/Glob.pm4
-rw-r--r--ext/POSIX/t/posix.t7
-rw-r--r--ext/POSIX/t/sigaction.t2
-rw-r--r--ext/POSIX/t/time.t4
-rw-r--r--ext/SDBM_File/sdbm.c2
-rw-r--r--ext/SDBM_File/sdbm.h2
-rw-r--r--hints/dos_djgpp.sh81
-rw-r--r--install_lib.pl1
-rwxr-xr-xinstallperl17
-rw-r--r--lib/AnyDBM_File.t1
-rw-r--r--lib/English.t7
-rw-r--r--lib/File/stat.pm4
-rw-r--r--lib/File/stat.t1
-rw-r--r--lib/FileHandle.t7
-rw-r--r--lib/perl5db.pl6
-rw-r--r--mg.c4
-rw-r--r--perl.c22
-rw-r--r--perl.h4
-rw-r--r--perlio.c4
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perldelta.pod6
-rw-r--r--pod/perldiag.pod4
-rw-r--r--pod/perlmodinstall.pod31
-rw-r--r--pod/perlport.pod11
-rw-r--r--t/io/closepid.t4
-rw-r--r--t/io/fs.t5
-rw-r--r--t/io/layers.t2
-rw-r--r--t/io/openpid.t4
-rw-r--r--t/io/tell.t2
-rw-r--r--t/lib/commonsense.t3
-rw-r--r--t/lib/dbmt_common.pl2
-rw-r--r--t/lib/warnings/pp_sys17
-rw-r--r--t/op/alarm.t2
-rw-r--r--t/op/magic.t9
-rw-r--r--t/op/stat.t11
-rw-r--r--t/op/sysio.t3
-rw-r--r--t/op/taint.t10
-rw-r--r--t/op/time.t2
-rw-r--r--t/op/write.t2
-rw-r--r--thread.h7
-rw-r--r--util.c26
-rw-r--r--win32/GNUmakefile15
-rw-r--r--win32/Makefile15
55 files changed, 79 insertions, 1434 deletions
diff --git a/MANIFEST b/MANIFEST
index e754e9a7f6..ed65e768e8 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4131,12 +4131,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
@@ -4693,7 +4687,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
@@ -5441,7 +5434,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 393bfc8930..f11fa98524 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<os2ish.h>, F<vmsish.h>, and so on) and including
that in F<perl.h>. 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<MANIFEST> 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 ef3578f889..0000000000
--- 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 <dj@delorie.com> 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<perl5.8*.tar.gz> 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<SHELL> environment variable point to this F<sh.exe>:
-
- set SHELL=c:/djgpp/bin/sh.exe (use full path name!)
-
-You can do this in F<djgpp.env> too. Add this line BEFORE any section
-definition:
-
- +SHELL=%DJDIR%/bin/sh.exe
-
-=item *
-
-If you have F<split.exe> and F<gsplit.exe> in your path, then rename
-F<split.exe> to F<djsplit.exe>, and F<gsplit.exe> to F<split.exe>.
-Copy or link F<gecho.exe> to F<echo.exe> if you don't have F<echo.exe>.
-Copy or link F<gawk.exe> to F<awk.exe> if you don't have F<awk.exe>.
-
-[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<cc1.exe> is at least 512kbyte (you can check this
-with: C<stubedit cc1.exe>).
-
-You can use the Configure script in non-interactive mode too.
-When I built my F<perl.exe>, I used something like this:
-
- configure.bat -des
-
-You can find more info about Configure's command line switches in
-the F<INSTALL> file.
-
-When the script ends, and you want to change some values in the
-generated F<config.sh> 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<laszlo.molnar@eth.ericsson.se> [Installing/building perl]
-
-Peter J. Farley III F<pjfarley@banet.net> [Building/installing modules]
-
-=head1 SEE ALSO
-
-perl(1).
-
-=cut
-
diff --git a/djgpp/config.over b/djgpp/config.over
deleted file mode 100644
index bd757c7c1f..0000000000
--- 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 db08fc256d..0000000000
--- 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 ddadeb7d53..0000000000
--- 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; ic<MAXOPENGLOBS; ic++)
- if (myglobs[ic].fd==fd)
- return myglobs+ic;
- return NULL;
-}
-
-static int
-glob_handler (__FSEXT_Fnumber n,int *rv,va_list args)
-{
- unsigned ic;
- struct globinfo *gi;
- switch (n)
- {
- case __FSEXT_open:
- {
- char *p1,*pattern,*name=va_arg (args,char*);
- STRLEN len;
- glob_t pglob;
-
- if (! strBEGINs (name,"/dev/dosglob/"))
- break;
- if ((gi=searchfd (-1)) == NULL)
- break;
-
- gi->pos=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; ic<pglob.gl_pathc; ic++)
- len+=1+strlen (pglob.gl_pathv[ic]);
- if (len)
- {
- if ((gi->matches=p1=(char*) malloc (gi->size=len))==NULL)
- break;
- for (ic=0; ic<pglob.gl_pathc; ic++)
- {
- strcpy (p1,pglob.gl_pathv[ic]);
- p1+=strlen (p1)+1;
- }
- }
- else
- {
- if ((gi->matches=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 bb792e204e..0000000000
--- a/djgpp/djgpp.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef PERL_DJGPP_DJGPP_H
-#define PERL_DJGPP_DJGPP_H
-
-#include <libc/stubs.h>
-#include <io.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <libc/file.h>
-#include <process.h>
-#include <fcntl.h>
-#include <glob.h>
-#include <sys/fsext.h>
-#include <crt0.h>
-#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 778f426181..0000000000
--- 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 9ff2ad620c..0000000000
--- 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=<PERLM>;
-$makefile=<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 76f2e0e84b..9233b9a1e1 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 b3500a0d47..91228510c9 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 */
-/*
- * <rich@phekda.freeserve.co.uk>: 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 <sys/wait.h> 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 <sys/wait.h>
- * to work with our return-code conversion.
- */
-
-#ifdef DJGPP
-
-#include <sys/wait.h>
-
-#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 8c2f113c59..fd8d0b44d4 100644
--- a/ext/Devel-Peek/t/Peek.t
+++ b/ext/Devel-Peek/t/Peek.t
@@ -625,7 +625,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<scalar(@ARGV)> 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 5838f2009f..74b6af7504 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 1db96c2f0d..4a0d1f34f7 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 a07587e54a..024c66a147 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 5e71d27f66..6190e389a5 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 b81d1e30c1..7cf07d7599 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 199a2eec0c..e150fe5901 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 <sys/types.h>
# endif
diff --git a/hints/dos_djgpp.sh b/hints/dos_djgpp.sh
deleted file mode 100644
index 8f5fa33782..0000000000
--- a/hints/dos_djgpp.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-# hints file for dos/djgpp v2.xx
-# Original by Laszlo Molnar <molnarl@cdata.tvnet.hu>
-
-# 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 7daffd2699..1c4d7defe9 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 b528c10aa6..e2006c5561 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 215868265e..22f262bf17 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 35a06caacf..f568d437a4 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 = <IN>;
like( $foo, qr/ok 7/, '$OFS' );
diff --git a/lib/File/stat.pm b/lib/File/stat.pm
index 57b8a39eb7..7b430d79ea 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 07987a04c2..b5475f9d89 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 e71aa12971..c13e772efa 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 77c9407135..c9fddcbcc1 100644
--- a/lib/perl5db.pl
+++ b/lib/perl5db.pl
@@ -531,7 +531,7 @@ BEGIN {
use vars qw($VERSION $header);
# bump to X.XX in blead, only use X.XX_XX in maint
-$VERSION = '1.62';
+$VERSION = '1.67';
$header = "perl5db.pl version $VERSION";
@@ -1541,7 +1541,7 @@ We then determine what the console should be on various systems:
=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 @@ Just checks the contents of C<$^O> and sets the C<$doccmd> global accordingly.
=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 86d3f043ca..10813a7316 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 e3f3a27610..8d1cd47c82 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 3db23f2f55..53f00b1b7a 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</UV> 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 2933cb64f6..b972b2f9cd 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 99c537d5b6..ff0ccd3469 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -278,7 +278,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/perldelta.pod b/pod/perldelta.pod
index 5380bfd12b..0ff5544cd4 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -315,9 +315,11 @@ XXX List any platforms that this version of perl no longer compiles on.
=over 4
-=item XXX-some-platform
+=item DOS/DJGPP
-XXX
+DJGPP is a port of the GNU toolchain to 32-bit x86 systems running
+DOS. The last known attempt to build Perl on it was on 5.20, which
+only got as far as building miniperl.
=back
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 7efc1375ea..97a974f97f 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -5325,10 +5325,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 b07ef71ecc..a4dc20491c 100644
--- a/pod/perlmodinstall.pod
+++ b/pod/perlmodinstall.pod
@@ -163,37 +163,6 @@ While still in that directory, type:
=item *
-B<If you're on the DJGPP port of DOS,>
-
- A. DECOMPRESS
-
-djtarx ( L<ftp://ftp.delorie.com/pub/djgpp/current/v2/> )
-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<README.dos>
-in the Perl distribution.
-
- D. INSTALL
-
-While still in that directory, type:
-
- make install
-
-You will need the packages mentioned in F<README.dos> in the Perl distribution.
-
-=item *
-
B<If you're on OS/2,>
Get the EMX development suite and gzip/tar from Hobbes (
diff --git a/pod/perlport.pod b/pod/perlport.pod
index 42bc593dbc..d8a5f5b7c2 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<perl> might exist in a file named
F<perl>, F<perl.exe>, or F<perl.pm>, depending on the operating system.
@@ -1013,11 +1013,6 @@ Also see:
=item *
-The djgpp environment for DOS, L<http://www.delorie.com/djgpp/>
-and L<perldos>.
-
-=item *
-
The EMX environment for DOS, OS/2, etc. emx@iaehv.nl,
L<ftp://hobbes.nmsu.edu/pub/os2/dev/emx/> Also L<perlos2>.
@@ -2365,6 +2360,8 @@ as of 5.36:
=item NetWare
+=item DOS/DJGPP
+
=back
=head2 (Perl 5.20)
@@ -2548,7 +2545,7 @@ L<http://www.cpan.org/ports/index.html> for binary distributions.
=head1 SEE ALSO
L<perlaix>, L<perlamiga>, L<perlbs2000>,
-L<perlcygwin>, L<perldos>,
+L<perlcygwin>,
L<perlebcdic>, L<perlfreebsd>, L<perlhurd>, L<perlhpux>, L<perlirix>,
L<perlmacos>, L<perlmacosx>,
L<perlos2>, L<perlos390>, L<perlos400>,
diff --git a/t/io/closepid.t b/t/io/closepid.t
index 6ba80f8ba8..c05ef8c12f 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 2d36f1e75e..9cda3e9ad6 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 9ee10a04f4..7938c39231 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 dad6af091a..8b4833a16c 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 ce227be988..e93dc57b29 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 9f0f13f634..53d7b3ad98 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 00af9a9f45..f8fbbb0bc9 100644
--- a/t/lib/dbmt_common.pl
+++ b/t/lib/dbmt_common.pl
@@ -43,7 +43,7 @@ if (! -e $Dfile) {
}
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 5f6b83d2f6..3541bd1b16 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 <<EOM ;
-SKIPPED
-# skipped on dos
-EOM
- exit ;
-}
my $file = "./xcv" ;
open(F, ">$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 749482c26d..6d2b4b4c95 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 30b57e6614..e2e0b30211 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 7bf1e1248a..b391dd0e7c 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 e543ae4c10..6093cd3422 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 42a25e6b7c..c1ca6d345c 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 e0197da258..9fdc7b8cf6 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 97c3d30154..33f52c2b3f 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 551074b11f..744d6425df 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 52e02c8de6..068b0e737c 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 537111ef6c..0e2765d639 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -1599,7 +1599,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
@@ -1724,13 +1723,13 @@ distclean: realclean
-cd $(PODDIR) && del /f *.html *.bat roffitall \
perl5356delta.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 6d9612b9f1..7f6e2428a6 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1125,7 +1125,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
@@ -1251,13 +1250,13 @@ distclean: realclean
-cd $(PODDIR) && del /f *.html *.bat roffitall \
perl5356delta.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