summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANIFEST9
-rw-r--r--Porting/exec-bit.txt2
-rwxr-xr-xPorting/perlhist_calculate.pl2
-rw-r--r--README.mpeix711
-rw-r--r--ext/DynaLoader/dl_mpeix.xs146
-rw-r--r--ext/File-Glob/t/basic.t2
-rw-r--r--ext/POSIX/t/posix.t2
-rw-r--r--ext/re/hints/mpeix.pl3
-rw-r--r--hints/mpeix.sh136
-rwxr-xr-xinstallperl27
-rw-r--r--lib/File/Copy.pm10
-rw-r--r--lib/FileHandle.t4
-rw-r--r--lib/perl5db.pl3
-rw-r--r--mpeix/mpeix.c802
-rw-r--r--mpeix/mpeix_setjmp.c355
-rw-r--r--mpeix/mpeixish.h193
-rwxr-xr-xmpeix/nm33
-rwxr-xr-xmpeix/relink49
-rw-r--r--perl.c4
-rw-r--r--perl.h5
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perl5005delta.pod2
-rw-r--r--pod/perlport.pod20
-rw-r--r--pp_sys.c4
-rw-r--r--t/io/pipe.t5
-rw-r--r--t/op/die_exit.t2
-rw-r--r--t/op/fork.t3
-rw-r--r--t/op/magic.t3
-rw-r--r--t/op/pack.t2
-rw-r--r--t/op/stat.t1
-rw-r--r--t/op/sysio.t3
-rw-r--r--win32/Makefile11
-rw-r--r--win32/makefile.mk11
33 files changed, 30 insertions, 2536 deletions
diff --git a/MANIFEST b/MANIFEST
index cceb00e608..9aa104588b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -3701,7 +3701,6 @@ ext/DynaLoader/dl_dllload.xs S/390 dllload() style implementation
ext/DynaLoader/dl_dlopen.xs BSD/SunOS4&5 dlopen() style implementation
ext/DynaLoader/dl_dyld.xs NeXT/Apple dyld implementation
ext/DynaLoader/dl_hpux.xs HP-UX implementation
-ext/DynaLoader/dl_mpeix.xs MPE/iX implementation
ext/DynaLoader/dl_next.xs NeXT implementation
ext/DynaLoader/dl_none.xs Stub implementation
ext/DynaLoader/dl_symbian.xs Symbian implementation
@@ -3906,7 +3905,6 @@ ext/POSIX/t/usage.t Test the diagnostics for usage messages
ext/POSIX/t/waitpid.t See if waitpid works
ext/POSIX/t/wrappers.t Test the POSIX wrapper subroutines
ext/POSIX/typemap POSIX extension interface types
-ext/re/hints/mpeix.pl Hints for re for named architecture
ext/re/Makefile.PL re extension makefile writer
ext/re/re_comp.h re extension wrapper for regcomp.h
ext/re/re.pm re extension Perl module
@@ -4152,7 +4150,6 @@ hints/midnightbsd.sh Hints for named architecture
hints/mips.sh Hints for named architecture
hints/mirbsd.sh Hints for named architecture
hints/mpc.sh Hints for named architecture
-hints/mpeix.sh Hints for named architecture
hints/ncr_tower.sh Hints for named architecture
hints/netbsd.sh Hints for named architecture
hints/newsos4.sh Hints for named architecture
@@ -4487,11 +4484,6 @@ minimod.pl Writes lib/ExtUtils/Miniperl.pm
miniperlmain.c Basic perl w/o dynamic loading or extensions
mkppport A script that distributes ppport.h
mkppport.lst List of extensions that need a ppport.h
-mpeix/mpeix.c MPE/iX port
-mpeix/mpeixish.h MPE/iX port
-mpeix/mpeix_setjmp.c MPE/iX port
-mpeix/nm MPE/iX port
-mpeix/relink MPE/iX port
mro.c Method Resolution Order code
myconfig.SH Prints summary of the current configuration
mydtrace.h Support for optional DTrace probes
@@ -4882,7 +4874,6 @@ README.linux Perl notes for Linux
README.macos Perl notes for Mac OS (Classic)
README.macosx Perl notes for Mac OS X
README.micro Notes about microperl
-README.mpeix Perl notes for MPE/iX
README.netware Perl notes for NetWare
README.openbsd Perl notes for OpenBSD
README.os2 Perl notes for OS/2
diff --git a/Porting/exec-bit.txt b/Porting/exec-bit.txt
index 05a896762c..ce7bd91c05 100644
--- a/Porting/exec-bit.txt
+++ b/Porting/exec-bit.txt
@@ -56,7 +56,5 @@ Porting/perlhist_calculate.pl
Porting/sort_perldiag.pl
Porting/sync-with-cpan
Porting/valgrindpp.pl
-mpeix/nm
-mpeix/relink
Cross/generate_config_sh
Cross/warp
diff --git a/Porting/perlhist_calculate.pl b/Porting/perlhist_calculate.pl
index 8cbc3d9ecb..bd4950786b 100755
--- a/Porting/perlhist_calculate.pl
+++ b/Porting/perlhist_calculate.pl
@@ -147,7 +147,7 @@ sub calc_longtable {
emit Configure => $configure_size, 1;
- foreach my $dir (qw(Cross djgpp emacs epoc h2pl hints mad mint mpeix NetWare os2 plan9 Porting qnx symbian utils vms vos win32 x2p)) {
+ foreach my $dir (qw(Cross djgpp emacs epoc h2pl hints mad mint NetWare os2 plan9 Porting qnx symbian utils vms vos win32 x2p)) {
calc_dir($dir);
}
}
diff --git a/README.mpeix b/README.mpeix
deleted file mode 100644
index c382c46692..0000000000
--- a/README.mpeix
+++ /dev/null
@@ -1,711 +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
-
-perlmpeix - Perl/iX for HP e3000 MPE
-
-=head1 SYNOPSIS
-
- http://www.bixby.org/mark/perlix.html
- Perl language for MPE
- Last updated January 12, 2006 @ 2100 UTC
-
-
-=head1 NOTE
-
-This is a podified version of what used to be on the above-mentioned web page,
-podified by Jarkko Hietaniemi 2001-Jan-01.
-
-=head1 What's New in Perl for MPE/iX
-
-January 12, 2006
-
-=over 4
-
-=item *
-
-Updated for perl-5.8.8 and perl-5.9.3 by Ken Hirsch.
-
-Simplified the build process by using the MPEAUTOCONF
-functionality in Mark Klein's ld.
-
-If you build this from scratch, make sure you have a version
-of ld which supports it. In the shell, type
-
- ld --help
- and look for AUTOCONF or MPEAUTOCONF near the bottom
-
- or do this:
- ld --help 2>&1 | grep AUTOCONF
-
-If you see don't see AUTOCONF or MPEAUTOCONF, make sure you get a new
-version.
-
-You also do not have to use mpeix/relink after building, so the
-recommend sequence is:
-
- ./Configure -de
-
- # or ./Configure -de -Dusedevel
- # if you're building a development version
-
- make
- make test
- # if you run this in a job, do "make test_notty"
-
- make install
-
-Be prepared for a wait. These take much longer on MPE/iX than on a Unix
-system, because of a slow forking, mostly. On a lightly-loaded HP3000
-Series 979 running MPE/iX 7.5:
-
- Configure: 1 hour
- make: 1 hour 15 minutes
- make test 1 hour 45 minutes
-
-Various socket problems were fixed in mpeix.c.
-
-Mark Klein provided a fixed sigsetjmp (that works with dynamic
-libraries) in mpeix_setjmp.c
-
-=back
-
-June 1, 2000
-
-=over 4
-
-=item *
-
-Rebuilt to be compatible with mod_perl. If you plan on using
-mod_perl, you MUST download and install this version of Perl/iX!
-
-=item *
-
-uselargefiles="undef": not available in MPE for POSIX files yet.
-
-=item *
-
-Now bundled with various add-on packages:
-
-=over 8
-
-=item *
-
-libnet (as seen on CPAN)
-
-=item *
-
-libwww-perl (LWP) which lets Perl programs behave like web browsers:
-
-=item *
-
-mod_perl (just the perl portion; the actual DSO will be released
-soon with Apache/iX 1.3.12 from bixby.org). This module allows you to
-write high performance persistent Perl CGI scripts and all sorts of
-cool things. (L<http://perl.apache.org/>)
-
-and much much more hiding under /PERL/PUB/.cpan/
-
-=item *
-
-The CPAN module now works for automatic downloading and
-installing of add-on packages:
-
- 1. export FTP_PASSIVE=1
- 2. perl -MCPAN -e shell
- 3. Ignore any terminal I/O related complaints!
-
-(L<http://search.cpan.org/dist/CPAN/>)
-
-=back
-
-=back
-
-May 20, 2000
-
-=over 4
-
-=item *
-
-Updated to version 5.6.0. Builds straight out of the box on MPE/iX.
-
-=item *
-
-Perl's getpwnam() function which had regressed to being
-unimplemented on MPE is now implemented once again.
-
-=back
-
-September 17, 1999
-
-=over 4
-
-=item *
-
-Migrated from cccd.edu to bixby.org.
-
-=back
-
-=head1 Welcome to Perl/iX
-
-This is the official home page for the HP e3000 MPE/iX
-( L<http://www.hp.com/go/e3000> ) port of the Perl scripting
-language ( L<http://www.perl.com/> ) which gives you all of the power of C,
-awk, sed, and sh in a single language. Check here for the latest news,
-implemented functionality, known bugs, to-do list, etc. Status reports
-about major milestones will also be posted to the HP3000-L mailing list
-( L<http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU> ) and
-its associated gatewayed newsgroup comp.sys.hp.mpe.
-
-I'm doing this port because I can't live without Perl on the Unix
-machines that I administer, and I want to have the same power
-available to me on MPE.
-
-Please send your comments, questions, and bug reports directly to me,
-Mark Bixby ( L<http://www.bixby.org/mark/> ). Or just post them to HP3000-L.
-
-The platform I'm using to do this port is an HP 3000 957RX running
-MPE/iX 6.0 and using the GNU gcc C compiler
-( L<http://jazz.external.hp.com/src/gnu/gnuframe.html> ).
-
-The combined porting wisdom from all of my ports can be found in my
-MPE/iX Porting Guide (L<http://www.bixby.org/mark/porting.html>).
-
-IMPORTANT NOTICE: Yes, I do work for the HP CSY R&D lab, but ALL of
-the software you download from bixby.org is my personal freeware that
-is NOT supported by HP.
-
-=head1 System Requirements for Perl/iX
-
-=over 4
-
-=item *
-
-MPE/iX 5.5 or later. This version of Perl/iX does NOT run on
-MPE/iX 5.0 or earlier, nor does it run on "classic" MPE/V machines.
-
-=item *
-
-If you wish to recompile Perl, you must install both GNUCORE and
-GNUGCC from jazz (L<http://jazz.external.hp.com/src/gnu/gnuframe.html>).
-
-=item *
-
-Perl/iX will be happier on MPE/iX 5.5 if you install the MPEKX40B
-extended POSIX filename characters patch, but this is optional.
-
-=item *
-
-Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to
-prevent Perl/iX from dying with an unresolved external reference
-to _getenv_libc.
-
-=item *
-
-If you will be compiling Perl/iX yourself, you will also need
-Syslog/iX ( L<http://www.bixby.org/mark/syslogix.html> ) and the
-/BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX
-( L<http://www.bixby.org/mark/bindix.html> ).
-
-=back
-
-=head1 How to Obtain Perl/iX
-
-=over 4
-
-=item 1.
-
-Download Perl using either FTP.ARPA.SYS or some other client
-
-=item 2.
-
-Extract the installation script
-
-=item 3.
-
-Edit the installation script
-
-=item 4.
-
-Run the installation script
-
-=item 5.
-
-Convert your *.a system archive libraries to *.sl shared libraries
-
-=back
-
-Download Perl using FTP.ARPA.SYS from your HP 3000 (the preferred
-method).....
-
- :HELLO MANAGER.SYS
- :XEQ FTP.ARPA.SYS
- open ftp.bixby.org
- anonymous
- your@email.address
- bytestream
- cd /pub/mpe
- get perl-5.6.0-mpe.tar.Z /tmp/perl.tar.Z;disc=2147483647
- exit
-
-.....Or download using some other generic web or ftp client (the alternate
-method)
-
-Download the following files (make sure that you use "binary mode" or
-whatever client feature that is 8-bit clean):
-
-=over 4
-
-=item *
-
-Perl from
-
- http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z
-
-or
-
- ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z
-
-=item *
-
-Upload those files to your HP 3000 in an 8-bit clean bytestream manner to:
-
- /tmp/perl.tar.Z
-
-=item *
-
-Then extract the installation script (after both download methods)
-
- :CHDIR /tmp
- :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL'
-
-=item *
-
-Edit the installation script
-
-Examine the accounting structure creation commands and modify if
-necessary (adding additional capabilities, choosing a non-system
-volume set, etc).
-
- :XEQ VI.HPBIN.SYS /tmp/INSTALL
-
-=item *
-
-Run the installation script.
-
-The accounting structure will be created and then all files will be
-extracted from the archive.
-
- :XEQ SH.HPBIN.SYS /tmp/INSTALL
-
-=item *
-
-Convert your *.a system archive libraries to *.sl shared libraries
-
-You only have to do this ONCE on your MPE/iX 5.5 machine in order to
-convert /lib/lib*.a and /usr/lib/lib*.a libraries to their *.sl
-equivalents. This step should not be necessary on MPE/iX 6.0 or later
-machines because the 6.0 or later update process does it for you.
-
- :XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K
-
-=back
-
-=head1 Perl/iX Distribution Contents Highlights
-
-=over 4
-
-=item README
-
-The file you're reading now.
-
-=item INSTALL
-
-Perl/iX Installation script.
-
-=item LIBSHP3K
-
-Script to convert *.a system archive libraries to *.sl shared libraries.
-
-=item PERL
-
-Perl NMPRG executable. A version-numbered backup copy also
-exists. You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl".
-
-=item .cpan/
-
-Much add-on source code downloaded with the CPAN module.
-
-=item lib/
-
-Perl libraries, both core and add-on.
-
-=item man/
-
-Perl man page documentation.
-
-=item public_html/feedback.cgi
-
-Sample feedback CGI form written in Perl.
-
-=item src/perl-5.6.0-mpe
-
-Source code.
-
-=back
-
-=head1 How to Compile Perl/iX
-
-=over 4
-
-=item 1.
-
-cd src/perl-5.6.0-mpe
-
-=item 2.
-
-Read the INSTALL file for the official instructions
-
-=item 3.
-
-./Configure -d
-
-=item 4.
-
-make
-
-=item 5.
-
-./mpeix/relink
-
-=item 6.
-
-make test (expect approximately 15 out of 11306 subtests to fail,
-mostly due to MPE not supporting hard links, UDP socket problems,
-and handling exit() return codes improperly)
-
-=item 7.
-
-make install
-
-=item 8.
-
-Optionally create symbolic links that point to the Perl
-executable, i.e. ln -s /PERL/PUB/PERL /usr/local/bin/perl
-
-=back
-
-The summary test results from "cd t; ./perl -I../lib harness":
-
- Failed Test Status Wstat Total Fail Failed List of failed
- ---------------------------------------------------------------------------
- io/fs.t 29 8 27.59% 2-5, 7-9, 11
- io/openpid.t 10 1 10.00% 7
- lib/io_sock.t 14 1 7.14% 13
- lib/io_udp.t 7 2 28.57% 3, 5
- lib/posix.t 27 1 3.70% 12
- op/lex_assign.t 187 1 0.53% 13
- op/stat.t 58 1 1.72% 3
- 15 tests and 94 subtests skipped.
- Failed 7/236 test scripts, 97.03% okay. 15/11306 subtests failed, 99.87% okay.
-
-=head1 Getting Started with Perl/iX
-
-Create your Perl script files with "#!/PERL/PUB/perl" (or an
-equivalent symbolic link) as the first line. Use the chmod command to
-make sure that your script has execute permission. Run your script!
-
-Be sure to take a look at the CPAN module list
-( L<http://www.cpan.org/CPAN.html> ). A wide variety of free Perl software
-is available. You can automatically download these packages by using
-the CPAN module ( L<http://search.cpan.org/dist/CPAN/> ).
-
-=head1 MPE/iX Implementation Considerations
-
-There some minor functionality issues to be aware of when comparing
-Perl for Unix (Perl/UX) to Perl/iX:
-
-=over 4
-
-=item *
-
-MPE gcc/ld doesn't properly support linking NMPRG executables against
-NMXL dynamic libraries, so you must manually run mpeix/relink after
-each re-build of Perl.
-
-=item *
-
-Perl/iX File::Copy will use MPE's /bin/cp command to copy files by
-name in order to preserve file attributes like file code.
-
-=item *
-
-MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(),
-setpwent(), endpwent().
-
-=item *
-
-MPE (and thus Perl/iX) lacks support for hard links.
-
-=item *
-
-MPE requires GETPRIVMODE() in order to bind() to ports less than 1024.
-Perl/iX will call GETPRIVMODE() automatically on your behalf if you
-attempt to bind() to these low-numbered ports. Note that the Perl/iX
-executable and the PERL account do not normally have CAP=PM, so if you
-will be bind()-ing to these privileged ports, you will manually need
-to add PM capability as appropriate.
-
-=item *
-
-MPE requires that you bind() to an IP address of zero. Perl/iX
-automatically replaces the IP address that you pass to bind() with
-a zero.
-
-=item *
-
-MPE requires GETPRIVMODE() in order to setuid(). There are too many
-calls to setuid() within Perl/iX, so I have not attempted an automatic
-GETPRIVMODE() solution similar to bind().
-
-=back
-
-=head1 Known Perl/iX Bugs Under Investigation
-
-None.
-
-=head1 Perl/iX To-Do List
-
-=over 4
-
-=item *
-
-Make setuid()/setgid() support work.
-
-=item *
-
-Make sure that fcntl() against a socket descriptor is redirected to sfcntl().
-
-=item *
-
-Add support for Berkeley DB once I've finished porting Berkeley DB.
-
-=item *
-
-Write an MPE XS extension library containing miscellaneous important
-MPE functions like GETPRIVMODE(), GETUSERMODE(), and sfcntl().
-
-=back
-
-=head1 Perl/iX Change History
-
-May 6, 1999
-
-=over 4
-
-=item *
-
-Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to prevent
-Perl/iX from dying with an unresolved external reference to _getenv_libc.
-
-=back
-
-April 7, 1999
-
-=over 4
-
-=item *
-
-Updated to version 5.005_03.
-
-=item *
-
-The official source distribution once again compiles "straight out
-of the box" for MPE.
-
-=item *
-
-The current incarnation of the 5.5 POSIX filename extended
-characters patch is now MPEKX40B.
-
-=item *
-
-The LIBSHP3K *.a -> *.sl library conversion script is now included
-as /PERL/PUB/LIBSHP3K.
-
-=back
-
-November 20, 1998
-
-=over 4
-
-=item *
-
-Updated to version 5.005_02.
-
-=item *
-
-Fixed a DynaLoader bug that was unable to load symbols from relative
-path name libraries.
-
-=item *
-
-Fixed a .xs compilation bug where the mpeixish.sh include file wasn't
-being installed into the proper directory.
-
-=item *
-
-All bugfixes will be submitted back to the official Perl developers.
-
-=item *
-
-The current incarnation of the POSIX filename extended characters
-patch is now MPEKXJ3A.
-
-=back
-
-August 14, 1998
-
-=over 4
-
-=item *
-
-The previous POSIX filename extended characters patch MPEKX44C has
-been superseded by MPEKXB5A.
-
-=back
-
-August 7, 1998
-
-=over 4
-
-=item *
-
-The previous POSIX filename extended characters patch MPEKX76A has
-been superseded by MPEKX44C.
-
-=back
-
-July 28, 1998
-
-=over 4
-
-=item *
-
-Updated to version 5.005_01.
-
-=back
-
-July 23, 1998
-
-=over 4
-
-=item *
-
-Updated to version 5.005 (production release). The public
-freeware sources are now 100% MPE-ready "straight out of the box".
-
-=back
-
-July 17, 1998
-
-=over 4
-
-=item *
-
-Updated to version 5.005b1 (public beta release). The public
-freeware sources are now 99.9% MPE-ready. By installing and
-testing this beta on your own HP3000, you will be helping to
-insure that the final release of 5.005 will be 100% MPE-ready and
-100% bug free.
-
-=item *
-
-My MPE binary release is now extracted using my standard INSTALL script.
-
-=back
-
-July 15, 1998
-
-=over 4
-
-=item *
-
-Changed startperl to #!/PERL/PUB/perl so that Perl will recognize
-scripts more easily and efficiently.
-
-=back
-
-July 8, 1998
-
-=over 4
-
-=item *
-
-Updated to version 5.004_70 (internal developer release) which is now
-MPE-ready. The next public freeware release of Perl should compile
-"straight out of the box" on MPE. Note that this version of Perl/iX
-was strictly internal to me and never publicly released. Note that
-[21]BIND/iX is now required (well, the include files and libbind.a) if
-you wish to compile Perl/iX.
-
-=back
-
-November 6, 1997
-
-=over 4
-
-=item *
-
-Updated to version 5.004_04. No changes in MPE-specific functionality.
-
-=back
-
-October 16, 1997
-
-=over 4
-
-=item *
-
-Added Demos section to the Perl/iX home page so you can see some
-sample Perl applications running on my 3000.
-
-=back
-
-October 3, 1997
-
-=over 4
-
-=item *
-
-Added System Requirements section to the Perl/iX home page just so the
-prerequisites stand out more. Various other home page tweaks.
-
-=back
-
-October 2, 1997
-
-=over 4
-
-=item *
-
-Initial public release.
-
-=back
-
-September 1997
-
-=over 4
-
-=item *
-
-Porting begins.
-
-=back
-
-=head1 AUTHOR
-
-Mark Bixby, L<http://www.bixby.org/mark/>
-
diff --git a/ext/DynaLoader/dl_mpeix.xs b/ext/DynaLoader/dl_mpeix.xs
deleted file mode 100644
index be756982be..0000000000
--- a/ext/DynaLoader/dl_mpeix.xs
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Author: Mark Klein (mklein@dis.com)
- * Version: 2.1, 1996/07/25
- * Version: 2.2, 1997/09/25 Mark Bixby (markb@cccd.edu)
- * Version: 2.3, 1998/11/19 Mark Bixby (markb@cccd.edu)
- * Version: 2.4, 2002/03/24 Mark Bixby (mark@bixby.org)
- */
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifdef __GNUC__
-extern void HPGETPROCPLABEL( int parms,
- char * procname,
- void * plabel,
- int * status,
- char * firstfile,
- int casesensitive,
- int symboltype,
- int * datasize,
- int position,
- int searchpath,
- int binding);
-#else
-#pragma intrinsic HPGETPROCPLABEL
-#endif
-#include "dlutils.c" /* for SaveError() etc */
-
-typedef struct {
- char filename[PATH_MAX + 3];
- } t_mpe_dld, *p_mpe_dld;
-
-static void
-dl_private_init(pTHX)
-{
- (void)dl_generic_private_init(aTHX);
-}
-
-MODULE = DynaLoader PACKAGE = DynaLoader
-
-BOOT:
- (void)dl_private_init(aTHX);
-
-void
-dl_load_file(filename, flags=0)
- char * filename
- int flags
- PREINIT:
- char buf[PATH_MAX + 3];
- p_mpe_dld obj = NULL;
-
- CODE:
- DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,
-flags));
- if (flags & 0x01)
- Perl_warn(aTHX_
-"Can't make loaded symbols global on this platform while loading %s",filename);
- obj = (p_mpe_dld) safemalloc(sizeof(t_mpe_dld));
- memzero(obj, sizeof(t_mpe_dld));
- if (filename[0] != '/')
- {
- getcwd(buf,sizeof(buf));
- sprintf(obj->filename," %s/%s ",buf,filename);
- }
- else
- sprintf(obj->filename," %s ",filename);
-
- DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", obj));
-
- ST(0) = sv_newmortal() ;
- if (obj == NULL)
- SaveError(aTHX_"%s",Strerror(errno));
- else
- sv_setiv( ST(0), PTR2IV(obj) );
-
-void
-dl_find_symbol(libhandle, symbolname)
- void * libhandle
- char * symbolname
- CODE:
- int datalen;
- p_mpe_dld obj = (p_mpe_dld) libhandle;
- char symname[PATH_MAX + 3];
- void * symaddr = NULL;
- int status;
- DLDEBUG(2,PerlIO_printf(Perl_debug_log,"dl_find_symbol(handle=%x, symbol=%s)\n",
- libhandle, symbolname));
- ST(0) = sv_newmortal() ;
- errno = 0;
-
- sprintf(symname, " %s ", symbolname);
- HPGETPROCPLABEL(8, symname, &symaddr, &status, obj->filename, 1,
- 0, &datalen, 1, 0, 0);
-
- DLDEBUG(2,PerlIO_printf(Perl_debug_log," symbolref(PROCEDURE) = %x, status=%x\n", symaddr, status));
-
- if (status != 0) {
- SaveError(aTHX_"%s",(errno) ? Strerror(errno) : "Symbol not found") ;
- } else {
- sv_setiv( ST(0), PTR2IV(symaddr) );
- }
-
-void
-dl_undef_symbols()
- CODE:
-
-# These functions should not need changing on any platform:
-
-void
-dl_install_xsub(perl_name, symref, filename="$Package")
- char * perl_name
- void * symref
- const char * filename
- CODE:
- DLDEBUG(2,PerlIO_printf(Perl_debug_log,"dl_install_xsub(name=%s, symref=%x)\n",
- perl_name, symref));
- ST(0) = sv_2mortal(newRV((SV*)newXS_flags(perl_name,
- (void(*)(pTHX_ CV *))symref,
- filename, NULL,
- XS_DYNAMIC_FILENAME)));
-
-char *
-dl_error()
- CODE:
- dMY_CXT;
- RETVAL = dl_last_error ;
- OUTPUT:
- RETVAL
-
-#if defined(USE_ITHREADS)
-
-void
-CLONE(...)
- CODE:
- MY_CXT_CLONE;
-
- /* MY_CXT_CLONE just does a memcpy on the whole structure, so to avoid
- * using Perl variables that belong to another thread, we create our
- * own for this thread.
- */
- MY_CXT.x_dl_last_error = newSVpvn("", 0);
-
-#endif
-
-# end.
diff --git a/ext/File-Glob/t/basic.t b/ext/File-Glob/t/basic.t
index bcd9999621..497241f23c 100644
--- a/ext/File-Glob/t/basic.t
+++ b/ext/File-Glob/t/basic.t
@@ -130,7 +130,7 @@ SKIP: {
# check bad protections
# should return an empty list, and set ERROR
SKIP: {
- skip $^O, 2 if $^O eq 'mpeix' or $^O eq 'MSWin32' or $^O eq 'NetWare'
+ skip $^O, 2 if $^O eq 'MSWin32' or $^O eq 'NetWare'
or $^O eq 'os2' or $^O eq 'VMS' or $^O eq 'cygwin';
skip "AFS", 2 if Cwd::cwd() =~ m#^$Config{'afsroot'}#s;
skip "running as root", 2 if not $>;
diff --git a/ext/POSIX/t/posix.t b/ext/POSIX/t/posix.t
index be804c24a2..a39793333b 100644
--- a/ext/POSIX/t/posix.t
+++ b/ext/POSIX/t/posix.t
@@ -23,7 +23,6 @@ $| = 1;
$Is_W32 = $^O eq 'MSWin32';
$Is_Dos = $^O eq 'dos';
-$Is_MPE = $^O eq 'mpeix';
$Is_MacOS = $^O eq 'MacOS';
$Is_VMS = $^O eq 'VMS';
$Is_OS2 = $^O eq 'os2';
@@ -141,7 +140,6 @@ SKIP: {
}
SKIP: {
- skip("_POSIX_OPEN_MAX is inaccurate on MPE", 1) if $Is_MPE;
skip("_POSIX_OPEN_MAX undefined ($fds[1])", 1) unless &_POSIX_OPEN_MAX;
cmp_ok(&_POSIX_OPEN_MAX, '>=', 16,
diff --git a/ext/re/hints/mpeix.pl b/ext/re/hints/mpeix.pl
deleted file mode 100644
index d1fbb91f8f..0000000000
--- a/ext/re/hints/mpeix.pl
+++ /dev/null
@@ -1,3 +0,0 @@
-# Fall back to -O optimization to avoid known gcc 2.8.0 -O2 problems on MPE/iX.
-# Mark Bixby <markb@cccd.edu>
-$self->{OPTIMIZE} = '-O';
diff --git a/hints/mpeix.sh b/hints/mpeix.sh
deleted file mode 100644
index afa6cf8de1..0000000000
--- a/hints/mpeix.sh
+++ /dev/null
@@ -1,136 +0,0 @@
-# Created for 5.003 by Mark Klein, mklein@dis.com.
-# Substantially revised for 5.004_01 by Mark Bixby, markb@cccd.edu.
-# Revised again for 5.004_69 by Mark Bixby, markb@cccd.edu.
-# Revised for 5.6.0 by Mark Bixby, mbixby@power.net.
-# Revised for 5.7.3 by Mark Bixby, mark@bixby.org.
-# Revised for 5.8.0 by Mark Bixby, mark@bixby.org.
-# Revised for 5.8.8/5.9.3 by Ken Hirsch, kenhirsch@ftml.net
-#
-osname='mpeix'
-osvers=`uname -r | sed -e 's/.[A-Z]\.\([0-9]\)\([0-9]\)\.[0-9][0-9]/\1.\2/'`
-
-#
-# Don't use nm. Instead, we'll use the MPEAUTOCONF environment variable
-# to force error for unresolved externals.
-# This is slower than nm (about 70 minutes instead of 35 minutes),
-# but much more reliable.
-
-usenm='false'
-export AUTOCONF=1 MPEAUTOCONF=1
-
-# Work around the broken inline cat bug that corrupts here docs
-#
-alias -x cat=/bin/cat
-#
-# Various directory locations.
-#
-# Which ones of these does Configure get wrong?
-test -z "$prefix" && prefix="/$HPACCOUNT/$HPGROUP"
-archname='PA-RISC1.1'
-bin="$prefix"
-installman1dir="$prefix/man/man1"
-installman3dir="$prefix/man/man3"
-man1dir="$prefix/man/man1"
-man3dir="$prefix/man/man3"
-perlpath="$prefix/PERL"
-scriptdir="$prefix"
-startperl="#!$prefix/perl"
-startsh='#!/bin/sh'
-
-#
-# Compiling.
-#
-test -z "$cc" && cc='gcc'
-cccdlflags='none'
-ccdlflags='-Xlinker -WL,xl=/usr/lib/libcurses.sl,/lib/libsvipc.sl,/usr/lib/libsocket.sl,/usr/lib/libstr.sl,/lib/libm.sl,/lib/libc.sl'
-ccflags="$ccflags -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -D_POSIX_JOB_CONTROL"
-locincpth="$locincpth /usr/local/include /usr/contrib/include /BIND/CURRENT/include /SYSLOG/PUB"
-test -z "$optimize" && optimize="-O2"
-ranlib='/bin/true'
-# Special compiling options for certain source files.
-# But what if you want -g?
-regcomp_cflags='optimize=-O'
-toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"'
-
-#
-# Linking.
-#
-# Build a fixed sigsetjmp that can be used in dynamic libraries
-# This needs to be compiled with -O2, so I do it here, rather
-# than with make
-gcc -c -O2 mpeix/mpeix_setjmp.c
-lddlflags="-b $PWD/mpeix_setjmp.o"
-
-# Delete bsd and BSD from the library list. Remove other randomly ordered
-# libraries and then re-add them in their proper order (the MPE linker is
-# order-sensitive). Add additional MPE-specific libraries.
-for mpe_remove in bind bsd BSD c curses m socket str svipc syslog; do
- set `echo " $libswanted " | sed -e 's/ / /g' -e "s/ $mpe_remove //"`
- libswanted="$*"
-done
-libswanted="$libswanted bind syslog curses svipc socket str m c"
-loclibpth="$loclibpth /usr/local/lib /usr/contrib/lib /BIND/CURRENT/lib /SYSLOG/PUB"
-#
-# External functions and data items.
-#
-# Q: Does Configure *really* get *all* of these wrong?
-#
-# A: Yes. There are two MPE problems here. The 'undef' functions exist on MPE,
-# but are merely dummy routines that return ENOTIMPL or ESYSERR. Since they're
-# useless, let's just tell Perl to avoid them. Also, a few data items are
-# 'undef' because while they may exist in structures, they are uninitialized.
-
-d_Gconvert='gcvt((x),(n),(b))'
-
-d_inetaton='undef'
-
-# these fields exist, but are uninitialized
-d_pwage='undef'
-d_pwcomment='undef'
-d_pwgecos='undef'
-d_pwpasswd='undef'
-d_statblks='undef'
-
-# These functions exist,
-# but either return ENOSYS/ESYSERR/ENOSYS or work so differently
-# that it is not helpful to include them
-
-d_lchown='undef'
-d_link='undef'
-d_setegid='undef'
-d_seteuid='undef'
-d_setitimer='undef'
-d_setpgid='undef'
-d_setsid='undef'
-
-
-# These are defined in mpeix/mpeix.c
-d_gettimeod='define'
-d_truncate='define'
-
-# Include files.
-#
-#??i_gdbm='undef' # the port is currently incomplete
-
-i_termios='undef' # we have termios, but not the full set (just tcget/setattr)
-
-i_time='define'
-i_systime='undef'
-i_systimek='undef'
-timeincl='/usr/include/time.h'
-#
-# Data types.
-#
-timetype='time_t'
-
-# Functionality.
-#
-uselargefiles="$undef"
-
-# Expected functionality provided in mpeix.c.
-#
-
-# Help gmake find mpeix.c
-test -h mpeix.c || ln -s mpeix/mpeix.c mpeix.c
-
-archobjs='mpeix.o mpeix_setjmp.o'
diff --git a/installperl b/installperl
index c19bff1349..64a94ab48c 100755
--- a/installperl
+++ b/installperl
@@ -299,16 +299,6 @@ if ($Is_VMS) {
chmod(0755, "$installbin/${dbg}a2p$exe_ext");
}
}
-elsif ($^O eq 'mpeix') {
- # MPE lacks hard links and requires that executables with special
- # capabilities reside in the MPE namespace.
- safe_unlink("$installbin/perl$ver$exe_ext", $Config{perlpath});
- # Install the primary executable into the MPE namespace as perlpath.
- copy("perl$exe_ext", $Config{perlpath});
- chmod(0755, $Config{perlpath});
- # Create a backup copy with the version number.
- link($Config{perlpath}, "$installbin/perl$ver$exe_ext");
-}
elsif ($^O ne 'dos') {
if (!$Is_NetWare) {
safe_unlink("$installbin/$perl_verbase$ver$exe_ext");
@@ -389,11 +379,6 @@ elsif ($Is_Cygwin) { # On Cygwin symlink it to CORE to make Makefile happy
# AIX needs perl.exp installed as well.
push(@corefiles,'perl.exp') if $^O eq 'aix';
- if ($^O eq 'mpeix') {
- # MPE needs mpeixish.h installed as well.
- mkpath("$installarchlib/CORE/mpeix", $opts{verbose}, 0777);
- push(@corefiles,'mpeix/mpeixish.h');
- }
}
foreach my $file (@corefiles) {
# HP-UX (at least) needs to maintain execute permissions
@@ -413,11 +398,7 @@ foreach my $file (@corefiles) {
if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VMS && ! $Is_NetWare) {
safe_unlink("$installbin/$perl$exe_ext", "$installbin/suid$perl$exe_ext");
- if ($^O eq 'mpeix') {
- # MPE doesn't support hard links, so use a symlink.
- # We don't want another cloned copy.
- symlink($Config{perlpath}, "$installbin/perl$exe_ext");
- } elsif ($^O eq 'vos') {
+ if ($^O eq 'vos') {
# VOS doesn't support hard links, so use a symlink.
symlink("$installbin/$perl_verbase$ver$exe_ext",
"$installbin/$perl$exe_ext");
@@ -432,11 +413,7 @@ if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VM
if ($archname && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VMS) {
my $archperl = "$perl_verbase$ver-$Config{archname}$exe_ext";
safe_unlink("$installbin/$archperl");
- if ($^O eq 'mpeix') {
- # MPE doesn't support hard links, so use a symlink.
- # We don't want another cloned copy.
- symlink($Config{perlpath}, "$installbin/$archperl");
- } elsif ($^O eq 'vos') {
+ if ($^O eq 'vos') {
# VOS doesn't support hard links, so use a symlink.
symlink("$installbin/$perl_verbase$ver$exe_ext",
"$installbin/$archperl");
diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm
index ef27037c4b..c34670c66b 100644
--- a/lib/File/Copy.pm
+++ b/lib/File/Copy.pm
@@ -22,7 +22,7 @@ sub syscopy;
sub cp;
sub mv;
-$VERSION = '2.24';
+$VERSION = '2.25';
require Exporter;
@ISA = qw(Exporter);
@@ -154,7 +154,6 @@ sub copy {
if (defined &syscopy && !$Syscopy_is_copy
&& !$to_a_handle
&& !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles
- && !($from_a_handle && $^O eq 'mpeix') # and neither can MPE/iX.
&& !($from_a_handle && $^O eq 'MSWin32')
&& !($from_a_handle && $^O eq 'NetWare')
)
@@ -412,13 +411,6 @@ sub mv { _move(@_,\&cp); }
unless (defined &syscopy) {
if ($^O eq 'VMS') {
*syscopy = \&rmscopy;
- } elsif ($^O eq 'mpeix') {
- *syscopy = sub {
- return 0 unless @_ == 2;
- # Use the MPE cp program in order to
- # preserve MPE file attributes.
- return system('/bin/cp', '-f', $_[0], $_[1]) == 0;
- };
} elsif ($^O eq 'MSWin32' && defined &DynaLoader::boot_DynaLoader) {
# Win32::CopyFile() fill only work if we can load Win32.xs
*syscopy = sub {
diff --git a/lib/FileHandle.t b/lib/FileHandle.t
index ddbd94474e..aeae754b0e 100644
--- a/lib/FileHandle.t
+++ b/lib/FileHandle.t
@@ -8,10 +8,6 @@ BEGIN {
print "1..0\n";
exit 0;
}
- if ($^O eq 'mpeix') {
- print "1..0 # Skip: broken on MPE/iX\n";
- exit 0;
- }
}
use FileHandle;
diff --git a/lib/perl5db.pl b/lib/perl5db.pl
index c8596df45f..4f517d0acb 100644
--- a/lib/perl5db.pl
+++ b/lib/perl5db.pl
@@ -523,7 +523,7 @@ BEGIN {
# Debugger for Perl 5.00x; perl5db.pl patch level:
use vars qw($VERSION $header);
-$VERSION = '1.39_03';
+$VERSION = '1.39_04';
$header = "perl5db.pl version $VERSION";
@@ -8276,7 +8276,6 @@ my @pods = qw(
modlib
mod
modstyle
- mpeix
netware
newmod
number
diff --git a/mpeix/mpeix.c b/mpeix/mpeix.c
deleted file mode 100644
index f289a4b09b..0000000000
--- a/mpeix/mpeix.c
+++ /dev/null
@@ -1,802 +0,0 @@
-
-/*
- * gcc long pointer support code for HPPA.
- * Copyright 1998, DIS International, Ltd.
- * This code is free software; you may redistribute it and/or modify
- * it under the same terms as Perl itself. (Relicensed for Perl in
- * in April 2002 by Mark Klein.)
- */
-typedef struct {
- int spaceid;
- unsigned int offset;
- } LONGPOINTER, longpointer;
-
-/*
- * gcc long pointer support code for HPPA.
- * Copyright 1998, DIS International, Ltd.
- * This code is free software; you may redistribute it and/or modify
- * it under the same terms as Perl itself. (Relicensed for Perl in
- * in April 2002 by Mark Klein.)
- */
-
-int __perl_mpe_getspaceid(void *source)
- {
- int val;
- /*
- * Given the short pointer, determine it's space ID.
- */
-
- /*
- * The colons separate output from input parameters. In this case,
- * the output of the instruction (output indicated by the "=" in the
- * constraint) is to a memory location (indicated by the "m"). The
- * input constraint indicates that the source to the instruction
- * is a register reference (indicated by the "r").
- * The general format is:
- * asm("<instruction template>" : <output> : <input> : <clobbers>);
- * where <output> and <input> are:
- * "<constraint>" (<token>)
- * <instruction template> is the PA-RISC instruction in template fmt.
- * <clobbers> indicates those registers clobbered by the instruction
- * and provides hints to the optimizer.
- *
- * Refer to the gcc documentation
- */
- __asm__ __volatile__ (
- " comiclr,= 0,%1,%%r28\n"
- "\t ldsid (%%r0,%1),%%r28\n"
- "\t stw %%r28, %0"
- : "=m" (val) // Output to val
- : "r" (source) // Source must be gen reg
- : "%r28"); // Clobbers %r28
- return (val);
- };
-
-LONGPOINTER __perl_mpe_longaddr(void *source)
- {
- LONGPOINTER lptr;
- /*
- * Return the long pointer for the address in sr5 space.
- */
-
- __asm__ __volatile__ (
- " comiclr,= 0,%2,%%r28\n"
- "\t ldsid (%%r0,%2),%%r28\n"
- "\t stw %%r28, %0\n"
- "\t stw %2, %1"
- : "=m" (lptr.spaceid),
- "=m" (lptr.offset) // Store to lptr
- : "r" (source) // Source must be gen reg
- : "%r28"); // Clobbers %r28
- return (lptr);
- };
-
-LONGPOINTER __perl_mpe_addtopointer(LONGPOINTER source, // %r26 == source offset
- // %r25 == source space
- int len) // %r24 == length in bytes
- {
- /*
- * Increment a longpointer.
- */
-
- __asm__ __volatile__ (
- " copy %0,%%r28\n" // copy space to r28
- "\t add %1,%2,%%r29" // Increment the pointer
- : // No output
- : "r" (source.spaceid), // Source address
- "r" (source.offset),
- "r" (len) // Length
- : "%r28", // Clobbers
- "%r29");
- };
-
-void __perl_mpe_longmove(int len, // %r26 == byte length
- LONGPOINTER source, // %r23 == source space, %r24 == off
- LONGPOINTER target) // sp-#56 == target space, sp-#52== off
- {
- /*
- * Move data between two buffers in long pointer space.
- */
-
- __asm__ __volatile__ (
- " .import $$lr_unk_unk_long,MILLICODE\n"
- "\t mtsp %0,%%sr1\n" // copy source space to sr1
- "\t copy %1,%%r26\n" // load source offset to r26
- "\t copy %4,%%r24\n" // load length to r24
- "\t copy %3,%%r25\n" // load target offset to r25
- "\t bl $$lr_unk_unk_long,%%r31\n" // start branch to millicode
- "\t mtsp %2,%%sr2" // copy target space to sr2
- : // No output
- : "r" (source.spaceid), // Source address
- "r" (source.offset),
- "r" (target.spaceid), // Target address
- "r" (target.offset),
- "r" (len) // Byte length
- : "%r1", // Clobbers
- "%r24",
- "%r25",
- "%r26",
- "%r31");
- };
-
-int __perl_mpe_longpeek(LONGPOINTER source)
- {
- /*
- * Fetch the int in long pointer space.
- */
- unsigned int val;
-
- __asm__ __volatile__ (
- " mtsp %1, %%sr1\n"
- "\t copy %2, %%r28\n"
- "\t ldw 0(%%sr1, %%r28), %%r28\n"
- "\t stw %%r28, %0"
- : "=m" (val) // Output val
- : "r" (source.spaceid), // Source space ID
- "r" (source.offset) // Source offset
- : "%r28"); // Clobbers %r28
-
- return (val);
- };
-
-void __perl_mpe_longpoke(LONGPOINTER target, // %r25 == spaceid, %r26 == offset
- unsigned int val) // %r24 == value
- {
- /*
- * Store the val into long pointer space.
- */
- __asm__ __volatile__ (
- " mtsp %0,%%sr1\n"
- "\t copy %1, %%r28\n"
- "\t stw %2, 0(%%sr1, %%r28)"
- : // No output
- : "r" (target.spaceid), // Target space ID
- "r" (target.offset), // Target offset
- "r" (val) // Value to store
- : "%r28" // Clobbers %r28
- ); // Copy space to %sr1
- };
-
-void __perl_mpe_move_fast(int len, // %r26 == byte length
- void *source, // %r25 == source addr
- void *target) // %r24 == target addr
- {
- /*
- * Move using short pointers.
- */
- __asm__ __volatile__ (
- " .import $$lr_unk_unk,MILLICODE\n"
- "\t copy %1, %%r26\n" // Move source addr into pos
- "\t copy %2, %%r25\n" // Move target addr into pos
- "\t bl $$lr_unk_unk,%%r31\n" // Start branch to millicode
- "\t copy %0, %%r24" // Move length into position
- : // No output
- : "r" (len), // Byte length
- "r" (source), // Source address
- "r" (target) // Target address
- : "%r24", // Clobbers
- "%r25",
- "%r26",
- "%r31");
- };
-
-/*
- * ftruncate - set file size, BSD Style
- *
- * shortens or enlarges the file as neeeded
- * uses some undocumented locking call. It is known to work on SCO unix,
- * other vendors should try.
- * The #error directive prevents unsupported OSes
- *
- * ftruncate/truncate code by Mark Bixby.
- * This code is free software; you may redistribute it and/or modify
- * it under the same terms as Perl itself.
- *
- */
-
-#ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-#endif
-#ifndef _SOCKET_SOURCE
-# define _SOCKET_SOURCE
-#endif
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <limits.h>
-#include <mpe.h>
-
-extern void FCONTROL(short, short, longpointer);
-extern void PRINTFILEINFO(int);
-
-int ftruncate(int fd, long wantsize);
-
-int
-ftruncate(int fd, long wantsize)
-{
- int ccode_return,dummy=0;
-
- if (lseek(fd, wantsize, SEEK_SET) < 0)
- {
- return (-1);
- }
-
- FCONTROL(_mpe_fileno(fd),6,__perl_mpe_longaddr(&dummy)); /* Write new EOF */
- if ((ccode_return=ccode()) != CCE)
- {
- fprintf(stderr,
- "MPE ftruncate failed, ccode=%d, wantsize=%ld\n",
- ccode_return, wantsize);
- PRINTFILEINFO(_mpe_fileno(fd));
- errno = ESYSERR;
- return (-1);
- }
-
- return (0);
-}
-
-/*
- wrapper for truncate():
-
- truncate() is UNIX, not POSIX.
-
- This function requires ftruncate().
-
-
-
- NAME
- truncate -
-
- SYNOPSIS
- #include <unistd.h>
-
- int truncate(const char *pathname, off_t length);
-
- Returns: 0 if OK, -1 on error
-
- from: Stevens' Advanced Programming in the UNIX Environment, p. 92
-
-
-
- ERRORS
- EACCES
- EBADF
- EDQUOT (not POSIX) <- not implemented here
- EFAULT
- EINVAL
- EISDIR
- ELOOP (not POSIX) <- not implemented here
- ENAMETOOLONG
- ENOTDIR
- EROFS
- ETXTBSY (not POSIX) <- not implemented here
-
- from: HP-UX man page
-
-
-
- Compile directives:
- PRINT_ERROR - make this function print an error message to stderr
-*/
-
-
-#include <sys/types.h> /* off_t, required by open() */
-#include <sys/stat.h> /* required by open() */
-#include <fcntl.h> /* open() */
-#include <unistd.h> /* close() */
-#include <stdio.h> /* perror(), sprintf() */
-
-
-
-int
-truncate(const char *pathname, off_t length)
-{
- int fd;
-#ifdef PRINT_ERROR
- char error_msg[80+1];
-#endif
-
- if (length == 0)
- {
- if ( (fd = open(pathname, O_WRONLY | O_TRUNC)) < 0)
- {
- /* errno already set */
-#ifdef PRINT_ERROR
- sprintf(error_msg,
- "truncate(): open(%s, O_WRONLY | OTRUNC)\0",
- pathname);
- perror(error_msg);
-#endif
- return -1;
- }
- }
- else
- {
- if ( (fd = open(pathname, O_WRONLY)) < 0)
- {
- /* errno already set */
-#ifdef PRINT_ERROR
- sprintf(error_msg,
- "truncate(): open(%s, O_WRONLY)\0",
- pathname);
- perror(error_msg);
-#endif
- return -1;
- }
-
- if (ftruncate(fd, length) < 0)
- {
- /* errno already set */
-#ifdef PRINT_ERROR
- perror("truncate(): ftruncate()");
-#endif
- return -1;
- }
- }
-
- if (close(fd) < 0)
- {
- /* errno already set */
-#ifdef PRINT_ERROR
- perror("truncate(): close()");
-#endif
- return -1;
- }
-
- return 0;
-} /* truncate() */
-
-/*
- wrapper for gettimeofday():
- gettimeofday() is UNIX, not POSIX.
- gettimeofday() is a BSD function.
-
- NAME
- gettimeofday -
-
- SYNOPSIS
- #include <sys/time.h>
-
- int gettimeofday(struct timeval *tp, struct timezone *tzp);
-
- DESCRIPTION
- This function returns seconds and microseconds since midnight
- January 1, 1970. The microseconds is actually only accurate to
- the millisecond.
-
- Note: To pick up the definitions of structs timeval and timezone
- from the <time.h> include file, the directive
- _SOCKET_SOURCE must be used.
-
- RETURN VALUE
- A 0 return value indicates that the call succeeded. A -1 return
- value indicates an error occurred; errno is set to indicate the
- error.
-
- ERRORS
- EFAULT not implemented
-
- Changes:
- 2-91 DR. Created.
-*/
-
-
-/* need _SOCKET_SOURCE to pick up structs timeval and timezone in time.h */
-#ifndef _SOCKET_SOURCE
-# define _SOCKET_SOURCE
-#endif
-
-#include <time.h> /* structs timeval & timezone,
- difftime(), localtime(), mktime(), time() */
-
-extern int TIMER();
-
-/*
- * gettimeofday code by Mark Bixby.
- * This code is free software; you may redistribute it and/or modify
- * it under the same terms as Perl itself.
- */
-
-#ifdef __STDC__
-int gettimeofday( struct timeval *tp, struct timezone *tpz )
-#else
-int gettimeofday( tp, tpz )
-struct timeval *tp;
-struct timezone *tpz;
-#endif
-{
- static unsigned long basetime = 0;
- static int dsttime = 0;
- static int minuteswest = 0;
- static int oldtime = 0;
- int newtime;
-
-
- /*-------------------------------------------------------------------*/
- /* Setup a base from which all future time will be computed. */
- /*-------------------------------------------------------------------*/
- if ( basetime == 0 )
- {
- time_t gmt_time;
- time_t loc_time;
- struct tm *loc_time_tm;
-
- gmt_time = time( NULL );
- loc_time_tm = localtime( &gmt_time ) ;
- loc_time = mktime( loc_time_tm );
-
- oldtime = TIMER();
- basetime = (unsigned long) ( loc_time - (oldtime/1000) );
-
- /*----------------------------------------------------------------*/
- /* The calling process must be restarted if timezone or dst */
- /* changes. */
- /*----------------------------------------------------------------*/
- minuteswest = (int) (difftime( loc_time, gmt_time ) / 60);
- dsttime = loc_time_tm->tm_isdst;
- }
-
- /*-------------------------------------------------------------------*/
- /* Get the new time value. The timer value rolls over every 24 days, */
- /* so if the delta is negative, the basetime value is adjusted. */
- /*-------------------------------------------------------------------*/
- newtime = TIMER();
- if ( newtime < oldtime ) basetime += 2073600;
- oldtime = newtime;
-
- /*-------------------------------------------------------------------*/
- /* Return the timestamp info. */
- /*-------------------------------------------------------------------*/
- tp->tv_sec = basetime + newtime/1000;
- tp->tv_usec = (newtime%1000) * 1000; /* only accurate to milli */
- if (tpz)
- {
- tpz->tz_minuteswest = minuteswest;
- tpz->tz_dsttime = dsttime;
- }
-
- return 0;
-
-} /* gettimeofday() */
-
-/*
-** MPE_FCNTL -- shadow function for fcntl()
-**
-** MPE requires sfcntl() for sockets, and fcntl() for everything
-** else. This shadow routine determines the descriptor type and
-** makes the appropriate call.
-**
-** Parameters:
-** same as fcntl().
-**
-** Returns:
-** same as fcntl().
-*/
-
-#include <stdarg.h>
-#include <sys/socket.h>
-
-int
-mpe_fcntl(int fildes, int cmd, ...)
-{
- int len, result;
- struct sockaddr sa;
-
- void *arg;
- va_list ap;
-
- va_start(ap, cmd);
- arg = va_arg(ap, void *);
- va_end(ap);
-
- len = sizeof sa;
- if (getsockname(fildes, &sa, &len) == -1)
- {
- if (errno == EAFNOSUPPORT)
- /* AF_UNIX socket */
- return sfcntl(fildes, cmd, arg);
-
- if (errno == ENOTSOCK)
- /* file or pipe */
- return fcntl(fildes, cmd, arg);
-
- /* unknown getsockname() failure */
- return (-1);
- }
- else
- {
- /* AF_INET socket */
- if ((result = sfcntl(fildes, cmd, arg)) != -1 && cmd == F_GETFL)
- result |= O_RDWR; /* fill in some missing flags */
- return result;
- }
-}
-
-
-
-/*
- * Stuff from here on down is written by Ken Hirsch
- * and you may use it for any purpose.
- * No warranty, express or implied.
- */
-
-#include <stddef.h>
-#include <sys/ioctl.h>
-#include <netinet/in.h>
-
-#ifndef _SOCKLEN_T
-typedef unsigned int socklen_t;
-#define _SOCKLEN_T
-#endif
-
-static int max_io_size(int filedes);
-
-ssize_t
-mpe_read(int filedes, void *buffer, size_t len)
-{
- int maxio;
- if (len > 4096 && (len > (maxio = max_io_size(filedes))))
- len = maxio;
-
- return read(filedes, buffer, len);
-}
-
-ssize_t
-mpe_write(int filedes, const void *buffer, size_t len)
-{
- int written = 0;
- int orig_len = len;
- int maxio = (len>4096)?max_io_size(filedes):INT_MAX;
- const char *buf = (const char *)buffer;
-
- do {
- written = write(filedes, buf, len>maxio?maxio:len);
- if (written < 0)
- break;
- len -= written;
- buf += written;
- } while (len > 0);
-
- if (written < 0 && len == orig_len)
- return -1;
- else
- return orig_len - len;
-}
-
-
-ssize_t
-mpe_send(int socket, const void *buffer, size_t len, int flags)
-{
- int written = 0;
- int orig_len = len;
- int maxio = (len>4096)?max_io_size(socket):INT_MAX;
- const char *buf = (const char *)buffer;
-
- do {
- written = send(socket, buf, len>maxio?maxio:len, flags);
- if (written < 0)
- break;
- len -= written;
- buf += written;
- } while (len > 0);
-
- if (written < 0 && len == orig_len)
- return -1;
- else
- return orig_len - len;
-}
-
-ssize_t
-mpe_sendto(int socket, const void *buffer, size_t len,
- int flags, const struct sockaddr *dest_addr,
- socklen_t dest_len)
-{
- int written = 0;
- int orig_len = len;
- int maxio = (len>4096)?max_io_size(socket):INT_MAX;
- const char *buf = (const char *)buffer;
-
- do {
- written =
- sendto(socket, buf, len>maxio?maxio:len, flags, dest_addr, dest_len);
- if (written < 0)
- break;
- len -= written;
- buf += written;
- } while (len > 0);
-
- if (written < 0 && len == orig_len)
- return -1;
- else
- return orig_len - len;
-}
-
-
-ssize_t
-mpe_recv(int socket, void *buffer, size_t len, int flags)
-{
- int maxio;
- if (len > 4096 && (len > (maxio = max_io_size(socket))))
- len = maxio;
- return recv(socket, buffer, len, flags);
-}
-
-ssize_t
-mpe_recvfrom(int socket, void *buffer, size_t len,
- int flags, struct sockaddr *address,
- socklen_t *address_len)
-{
- int maxio;
- if (len > 4096 && (len > (maxio = max_io_size(socket))))
- len = maxio;
- return recvfrom(socket, buffer, len, flags, address, address_len);
-}
-
-/*
- I didn't do thse two:
-ssize_t mpe_recvmsg(int, struct msghdr *, int);
-ssize_t mpe_sendmsg(int, const struct msghdr *, int);
-*/
-
-/*
- * On MPE/iX (at least version 6.0), a getsockname()
- * performed on a socket that is listening
- * will return INADDR_ANY, even if you used
- * bind to bind it to a particular IP address.
- *
- * (In fact, it appears that the socket always acts as
- * if you used INADDR_ANY.)
- *
- * Here I save the IP address used in bind
- * So I can get it in getsockname()
- *
- */
-
-/* I just save 40. Usually one or two should be enough
- */
-
-int
-mpe_connect(int socket,
- const struct sockaddr *address,
- socklen_t address_len)
-{
- int ret = connect(socket, address, address_len);
- if (ret < 0 && errno == EINPROGRESS)
- {
- /* Need to call getsockopt to clear socket error */
- int socket_error;
- socklen_t err_size = sizeof(socket_error);
- (void)getsockopt(socket, SOL_SOCKET, SO_ERROR,
- &socket_error, &err_size);
- errno = EINPROGRESS;
- }
- return ret;
-}
-
-static struct {
- int fd;
- struct in_addr holdaddr;
-} holdbind[40];
-#define HOLDBINDLAST ((sizeof(holdbind))/(sizeof(holdbind[0])))
-static int nextbind;
-
-/*
- * Fix peculiarities of bind() on MPE
- * 1. call GETPRIVMODE to bind to ports < 1024
- * 2. save IP address for future calls to getsockname
- * 3. set IP address to 0 (INADDR_ANY)
- */
-
-int
-mpe_bind(int socket, const struct sockaddr *address, socklen_t address_len)
-{
- int i;
- int result;
- int mpeprivmode=0;
- extern void GETPRIVMODE(void);
- extern void GETUSERMODE(void);
-
- for (i = 0; i<HOLDBINDLAST; i++) {
- if (holdbind[i].fd == socket)
- break;
- }
- /* If we didn't find previously used slot, use next */
- if (i == HOLDBINDLAST)
- i = nextbind;
-
- holdbind[i].fd = socket;
-
- memset(&holdbind[i].holdaddr, '\0', sizeof(holdbind[i].holdaddr));
- if (address->sa_family == AF_INET
- && address_len >= offsetof(struct sockaddr_in, sin_addr)
- +sizeof(struct in_addr)) {
- holdbind[i].holdaddr = ((struct sockaddr_in *)address)->sin_addr;
- }
- if (i == nextbind)
- {
- if (++nextbind >= HOLDBINDLAST)
- nextbind = 0;
- }
-
- if (address->sa_family == AF_INET)
- {
- /* The address *MUST* stupidly be zero. */
- ((struct sockaddr_in *)address)->sin_addr.s_addr = INADDR_ANY;
- /* PRIV mode is required to bind() to ports < 1024. */
- if (((struct sockaddr_in *)address)->sin_port < 1024 &&
- ((struct sockaddr_in *)address)->sin_port > 0) {
- GETPRIVMODE(); /* If this fails, we are aborted by MPE/iX. */
- mpeprivmode = 1;
- }
- }
- result = bind(socket, address, address_len);
- if (mpeprivmode)
- {
- GETUSERMODE();
- }
- return result;
-
-}
-
-int
-mpe_getsockname(int socket, struct sockaddr *address, socklen_t *address_len)
-{
- int ret;
- ret = getsockname(socket, address, address_len);
- if (ret == 0
- && address->sa_family == AF_INET
- && *address_len >= offsetof(struct sockaddr_in, sin_addr)
- +sizeof(struct in_addr)
- && ((struct sockaddr_in *)address)->sin_addr.s_addr == INADDR_ANY) {
- int i;
- for (i=0; i<HOLDBINDLAST; i++) {
- if (holdbind[i].fd == socket)
- {
- ((struct sockaddr_in *)address)->sin_addr.s_addr
- = holdbind[i].holdaddr.s_addr;
- break;
- }
- }
- }
- return ret;
-}
-
-int
-mpe_getpeername(int socket, struct sockaddr *address, socklen_t *address_len)
-{
- int ret;
- ret = getpeername(socket, address, address_len);
- if (ret == 0)
- {
- /* Try a zero-length write to see if socket really connected */
- int written = write(socket, "", 0);
- if (written < 0)
- ret = -1;
- }
- return ret;
-}
-
-
-static int
-max_io_size(int filedes)
-{
- int save_errno;
- struct sockaddr sa;
- int len;
- int result = INT_MAX; /* all other files */
-
- save_errno = errno;
- len = sizeof sa;
- if (getsockname(filedes, &sa, &len) == -1)
- {
- if (errno == EAFNOSUPPORT) /* AF_UNIX socket */
- result = 4096;
- errno = save_errno;
- } else {
- result = 30000; /* AF_INET sock max */
- }
- return result;
-}
diff --git a/mpeix/mpeix_setjmp.c b/mpeix/mpeix_setjmp.c
deleted file mode 100644
index 491c71664e..0000000000
--- a/mpeix/mpeix_setjmp.c
+++ /dev/null
@@ -1,355 +0,0 @@
-/* Workaround for CR JAGab60546 setjmp/longjmp and
- JAGad55982 sigsetjmp/siglongjmp from shared libraries. */
-
-/*
- * tabstop=4
- *
- * _setjmp/setjmp/sigsetjmp and
- *_longjmp/longjmp/siglongjmp.
- *
- * Written by Mark Klein, 10 October, 2000
- * Updated for gcc 3.x 6 October, 2005
- *
- * These routines are GCC specific and MUST BE COMPILED
- * WITH -O2
- *
- * The existing setjmp/longjmp code in both libc.a and XL.PUB.SYS
- * are not SR4 aware and cause problems when working with shared
- * libraries (XLs), especially when executing a longjmp between
- * XLs. This code preserves SR4 and will successfully handle
- * a cross space longjmp. However, the setjmp code must be
- * bound into each XL from which it will be called as well as
- * being bound into the main program.
- */
-
-/*
- * The following macro takes the contents of the jmpbuf and
- * restores the registers from them. There is other code
- * elsewhere that ensures that __jmpbuf is %r26 at this
- * point in time. If it becomes some other register, that
- * register must be the last restored. At the end will
- * be a branch external that will cause a cross space
- * return if needed.
- */
-#define RESTORE_REGS_AND_RETURN(__jmpbuf, __retval) \
-({ \
- __asm__ __volatile__ ( \
- " ldw 0(%%sr0, %0), %%rp\n" \
- "\t ldw 4(%%sr0, %0), %%sp\n" \
- "\t ldw 16(%%sr0, %0), %%r3\n" \
- "\t ldw 20(%%sr0, %0), %%r4\n" \
- "\t ldw 24(%%sr0, %0), %%r5\n" \
- "\t ldw 28(%%sr0, %0), %%r6\n" \
- "\t ldw 32(%%sr0, %0), %%r7\n" \
- "\t ldw 36(%%sr0, %0), %%r8\n" \
- "\t ldw 40(%%sr0, %0), %%r9\n" \
- "\t ldw 44(%%sr0, %0), %%r10\n" \
- "\t ldw 48(%%sr0, %0), %%r11\n" \
- "\t ldw 52(%%sr0, %0), %%r12\n" \
- "\t ldw 56(%%sr0, %0), %%r13\n" \
- "\t ldw 60(%%sr0, %0), %%r14\n" \
- "\t ldw 64(%%sr0, %0), %%r15\n" \
- "\t ldw 68(%%sr0, %0), %%r16\n" \
- "\t ldw 72(%%sr0, %0), %%r17\n" \
- "\t ldw 76(%%sr0, %0), %%r18\n" \
- "\t ldw 80(%%sr0, %0), %%r19\n" \
- "\t ldw 84(%%sr0, %0), %%r20\n" \
- "\t ldw 88(%%sr0, %0), %%r21\n" \
- "\t ldw 92(%%sr0, %0), %%r22\n" \
- "\t ldw 96(%%sr0, %0), %%r23\n" \
- "\t ldw 100(%%sr0, %0), %%r24\n" \
- "\t ldw 104(%%sr0, %0), %%r25\n" \
- "\t ldw 112(%%sr0, %0), %%r27\n" \
- "\t ldw 116(%%sr0, %0), %%r1\n" \
- "\t mtsp %%r1, %%sr3\n" \
- "\t ldw 120(%%sr0, %0), %%r1\n" \
- "\t mtsp %%r1, %%sr1\n" \
- "\t or,<> %%r0, %1, %%r0\n" \
- "\t ldi 1, %%r28\n" \
- "\t ldw 108(%%sr0, %0), %%r26\n" \
- "\t be 0(%%sr1, %%rp)\n" \
- "\t mtsp %%r1, %%sr4\n" \
- : \
- : "r" (__jmpbuf), \
- "r" (__retval)); \
-})
-
-/*
- * The following macro extracts the signal mask
- * from __jmpbuf from the 3rd and 4th words and
- * if non-zero, calls sigprocmask with that value
- * to set the signal mask. This macro is usually
- * invoked before the registers are restored in
- * the longjmp routines and it can clobber things
- * without needing to spill them as a result.
- * A quick frame is built before making the
- * call and cut back just afterwards.
- * The ldi 2, %r26 is actually SIG_SETMASK from
- * /usr/include/signal.h.
- */
-#define RESTORE_SIGNAL_MASK(__jmpbuf) \
-({ \
- __asm__ __volatile__ ( \
- " ldw 8(%0), %%r26\n" \
- "\t comibt,=,n 0,%%r26,.+36\n" \
- "\t ldo 64(%%sp), %%sp\n" \
- "\t stw %0, -28(%%sp)\n" \
- "\t ldi 0, %%r24\n" \
- "\t ldo 8(%0), %%r25\n" \
- "\t .import sigprocmask,code\n" \
- "\t bl sigprocmask,%%rp\n" \
- "\t ldi 2, %%r26\n" \
- "\t ldw -28(%%sr0, %%sp), %0\n" \
- "\t ldo -64(%%sp), %%sp\n" \
- : \
- : "r" (__jmpbuf)); \
-})
-
-/*
- * This macro saves the current contents of the
- * registers to __jmpbuf. Note that __jmpbuf is
- * guaranteed elsewhere to be in %r26. We do not
- * want it spilled, nor do we want a new frame
- * built.
- */
-#define SAVE_REGS(__jmpbuf) \
-({ \
- __asm__ __volatile__ ( \
- " stw %%rp, 0(%%sr0, %0)\n" \
- "\t stw %%sp, 4(%%sr0, %0)\n" \
- "\t stw %%r0, 8(%%sr0, %0)\n" \
- "\t stw %%r3, 16(%%sr0, %0)\n" \
- "\t stw %%r4, 20(%%sr0, %0)\n" \
- "\t stw %%r5, 24(%%sr0, %0)\n" \
- "\t stw %%r6, 28(%%sr0, %0)\n" \
- "\t stw %%r7, 32(%%sr0, %0)\n" \
- "\t stw %%r8, 36(%%sr0, %0)\n" \
- "\t stw %%r9, 40(%%sr0, %0)\n" \
- "\t stw %%r10, 44(%%sr0, %0)\n" \
- "\t stw %%r11, 48(%%sr0, %0)\n" \
- "\t stw %%r12, 52(%%sr0, %0)\n" \
- "\t stw %%r13, 56(%%sr0, %0)\n" \
- "\t stw %%r14, 60(%%sr0, %0)\n" \
- "\t stw %%r15, 64(%%sr0, %0)\n" \
- "\t stw %%r16, 68(%%sr0, %0)\n" \
- "\t stw %%r17, 72(%%sr0, %0)\n" \
- "\t stw %%r18, 76(%%sr0, %0)\n" \
- "\t stw %%r19, 80(%%sr0, %0)\n" \
- "\t stw %%r20, 84(%%sr0, %0)\n" \
- "\t stw %%r21, 88(%%sr0, %0)\n" \
- "\t stw %%r22, 92(%%sr0, %0)\n" \
- "\t stw %%r23, 96(%%sr0, %0)\n" \
- "\t stw %%r24, 100(%%sr0, %0)\n" \
- "\t stw %%r25, 104(%%sr0, %0)\n" \
- "\t stw %%r26, 108(%%sr0, %0)\n" \
- "\t stw %%r27, 112(%%sr0, %0)\n" \
- "\t mfsp %%sr3, %%r1\n" \
- "\t stw %%r1, 116(%%sr0, %0)\n" \
- "\t mfsp %%sr4, %%r1\n" \
- "\t stw %%r1, 120(%%sr0, %0)\n" \
- : \
- : "r" (__jmpbuf)); \
-})
-
-/*
- * This macro will save the signal mask to the
- * __jmpbuf if __savemask is non-zero. By this
- * point in time, the other resisters have been
- * saved into the __jmpbuf.
- * The ldi 0, %r26 is actually SIG_BLOCK from
- * /usr/include/signal.h. Since the block is
- * an OR of the bits, this does not change the
- * mask, but returns it into the double word at
- * the address in %r24.
- */
-#define SAVE_SIGNAL_MASK(__jmpbuf,__savemask) \
-({ \
- __asm__ __volatile__ ( \
- " comibt,=,n 0,%1,.+36\n" \
- "\t stw %%rp, -20(%%sr0, %%sp)\n" \
- "\t ldo 64(%%sp), %%sp\n" \
- "\t ldo 8(%0), %%r24\n" \
- "\t ldi 0, %%r25\n" \
- "\t .import sigprocmask,code\n" \
- "\t bl sigprocmask,%%rp\n" \
- "\t ldi 0, %%r26\n" \
- "\t ldo -64(%%sp), %%sp\n" \
- "\t ldw -20(%%sr0, %%sp), %%rp\n" \
- : \
- : "r" (__jmpbuf), \
- "r" (__savemask)); \
-})
-
-/*
- * Construct a jump buffer and unconditionally save
- * the signal mask. Return a 0 unconditionally.
- * Care is taken here and in the macros to assume
- * the __jumpbuf is in %r26 and that the return
- * value will be in %r28. It is done this way to
- * prevent a frame from being built and any registers
- * from being spilled.
- */
-int setjmp(register void *jmpbuf)
-{
- register int __jmpbuf asm ("%r26");
-
- SAVE_REGS(__jmpbuf);
- SAVE_SIGNAL_MASK(__jmpbuf, 1);
- return 0;
-}
-
-/*
- * Construct a jump buffer but do not save the
- * signal mask.
- */
-int _setjmp(register void *jmpbuf)
-{
- register int __jmpbuf asm ("%r26");
-
- SAVE_REGS(__jmpbuf);
- return 0;
-}
-
-/*
- * Construct a jump buffer and conditionally save
- * the signal mask. The mask is saved if the
- * savemask parameter is non-zero.
- */
-int sigsetjmp(register void *jmpbuf, register int savemask)
-{
- register int __jmpbuf asm ("%r26");
- register int __savemask asm ("%r25");
-
- SAVE_REGS(__jmpbuf);
- SAVE_SIGNAL_MASK(__jmpbuf, __savemask);
- return 0;
-}
-
-/*
- * Return to the location established in the jmpbuf,
- * and place the value in i2 in %r28. Registers
- * %r4 and %r5 are co-opted to save the address and
- * value of jmpbuf and the return value. The signal
- * mask is re-established if needed, then the
- * address of jmpbuf and value of retval are placed
- * into %r26 and %r28 correspondingly. This routine
- * will never return to its caller and the stack
- * will be cut back to whatever exists in the jmpbuf.
- */
-void longjmp(register void *jmpbuf, register int i2)
-{
- register int __jmpbuf asm ("%r26");
- register int __retval asm ("%r28");
-
- __asm__ __volatile__ (
- " copy %0, %%r4\n"
- "\t copy %1, %%r5\n"
- :
- : "r" (jmpbuf),
- "r" (i2));
-
- RESTORE_SIGNAL_MASK (__jmpbuf);
-
- __asm__ __volatile__ (
- " copy %%r4, %0\n"
- "\t copy %%r5, %1\n"
- : "=r" (__jmpbuf),
- "=r" (__retval));
-
- RESTORE_REGS_AND_RETURN (__jmpbuf, __retval);
-}
-
-/*
- * Return to the location established in the jmpbuf,
- * but do not restore the signal mask.
- */
-void _longjmp(register void *jmpbuf, register int i2)
-{
- register int __retval asm ("%r28");
- register int __jmpbuf asm ("%r26");
-
- __jmpbuf = (int)jmpbuf;
- __retval = i2;
-
- RESTORE_REGS_AND_RETURN (__jmpbuf, __retval);
-}
-
-/*
- * Return to the location established in the jmpbuf,
- * and conditionally re-establish the signal mask.
- */
-void siglongjmp(register void *jmpbuf, register int i2)
-{
- register int __jmpbuf asm ("%r26");
- register int __retval asm ("%r28");
-
- __asm__ __volatile__ (
- " copy %0, %%r4\n"
- "\t copy %1, %%r5\n"
- :
- : "r" (jmpbuf),
- "r" (i2));
-
- RESTORE_SIGNAL_MASK (__jmpbuf);
-
- __asm__ __volatile__ (
- " copy %%r4, %0\n"
- "\t copy %%r5, %1\n"
- : "=r" (__jmpbuf),
- "=r" (__retval));
-
- RESTORE_REGS_AND_RETURN (__jmpbuf, __retval);
-}
-
-#ifdef TEST
-int buf1[50];
-int buf2[50];
-
-foo() {
- printf("In routine foo(). Doing Longjmp.\n");
- longjmp(buf1, 123);
- printf("This is in foo after the longjmp() call. Should not reach here.\n");
-}
-
-bar(int ret) {
- printf("In routine bar(%d). Doing siglongjmp.\n",ret);
- siglongjmp(buf2, ret);
- printf("This is in bar after the siglongjmp() call. Should not reach here.\n");
-}
-
-main() {
- int i;
- if ((i = setjmp(buf1)))
- {
- printf("This is the return from the longjmp. i: %d\n",i);
- }
- else
- {
- printf("Jump buffer established, i: %d. Calling foo()\n",i);
- foo();
- printf("This is in main after the foo() call. Should not reach here.\n ");
- }
-
- if ((i = sigsetjmp(buf2,0)))
- {
- printf("This is the return from the longjmp. i: %d\n",i);
- }
- else
- {
- printf("Jump buffer established, i: %d. Calling bar(456)\n",i);
- bar(456);
- printf("This is in main after the bar(456) call. Should not reach here.\n");
- }
-
- if ((i = sigsetjmp(buf2,1)))
- {
- printf("This is the return from the longjmp. i: %d\n",i);
- }
- else
- {
- printf("Jump buffer established, i: %d. Calling bar(789)\n",i);
- bar(789);
- printf("This is in main after the bar(789) call. Should not reach here.\n");
- }
-}
-#endif
diff --git a/mpeix/mpeixish.h b/mpeix/mpeixish.h
deleted file mode 100644
index f4ce38ebb3..0000000000
--- a/mpeix/mpeixish.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * The following symbols are defined if your operating system supports
- * functions by that name. All Unixes I know of support them, thus they
- * are not checked by the configuration script, but are directly defined
- * here.
- */
-
-/* HAS_IOCTL:
- * This symbol, if defined, indicates that the ioctl() routine is
- * available to set I/O characteristics
- */
-#define HAS_IOCTL /**/
-
-/* HAS_UTIME:
- * This symbol, if defined, indicates that the routine utime() is
- * available to update the access and modification times of files.
- */
-#define HAS_UTIME /**/
-
-/* HAS_GROUP
- * This symbol, if defined, indicates that the getgrnam() and
- * getgrgid() routines are available to get group entries.
- */
-#define HAS_GROUP /**/
-
-/* HAS_PASSWD
- * This symbol, if defined, indicates that the getpwnam() and
- * getpwuid() routines are available to get password entries.
- */
-#define HAS_PASSWD /**/
-
-#define HAS_KILL
-#define HAS_WAIT
-
-/* USEMYBINMODE
- * This symbol, if defined, indicates that the program should
- * use the routine my_binmode(FILE *fp, char iotype, int mode) to insure
- * that a file is in "binary" mode -- that is, that no translation
- * of bytes occurs on read or write operations.
- */
-#undef USEMYBINMODE
-
-/* Stat_t:
- * This symbol holds the type used to declare buffers for information
- * returned by stat(). It's usually just struct stat. It may be necessary
- * to include <sys/stat.h> and <sys/types.h> to get any typedef'ed
- * information.
- */
-#define Stat_t struct stat
-
-/* USE_STAT_RDEV:
- * This symbol is defined if this system has a stat structure declaring
- * st_rdev
- */
-#define USE_STAT_RDEV /**/
-
-/* ACME_MESS:
- * This symbol, if defined, indicates that error messages should be
- * should be generated in a format that allows the use of the Acme
- * GUI/editor's autofind feature.
- */
-#undef ACME_MESS /**/
-
-/* UNLINK_ALL_VERSIONS:
- * This symbol, if defined, indicates that the program should arrange
- * to remove all versions of a file if unlink() is called. This is
- * probably only relevant for VMS.
- */
-/* #define UNLINK_ALL_VERSIONS / **/
-
-/* VMS:
- * This symbol, if defined, indicates that the program is running under
- * VMS. It is currently automatically set by cpps running under VMS,
- * and is included here for completeness only.
- */
-/* #define VMS / **/
-
-/* ALTERNATE_SHEBANG:
- * This symbol, if defined, contains a "magic" string which may be used
- * as the first line of a Perl program designed to be executed directly
- * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
- * begins with a character other then #, then Perl will only treat
- * it as a command line if if finds the string "perl" in the first
- * word; otherwise it's treated as the first line of code in the script.
- * (IOW, Perl won't hand off to another interpreter via an alternate
- * shebang sequence that might be legal Perl code.)
- */
-/* #define ALTERNATE_SHEBANG "#!" / **/
-
-#include <signal.h>
-
-#ifndef SIGABRT
-# define SIGABRT SIGILL
-#endif
-#ifndef SIGILL
-# define SIGILL 6 /* blech */
-#endif
-#define ABORT() kill(PerlProc_getpid(),SIGABRT);
-
-/*
- * fwrite1() should be a routine with the same calling sequence as fwrite(),
- * but which outputs all of the bytes requested as a single stream (unlike
- * fwrite() itself, which on some systems outputs several distinct records
- * if the number_of_items parameter is >1).
- */
-#define fwrite1 fwrite
-
-#define Stat(fname,bufptr) stat((fname),(bufptr))
-#define Fstat(fd,bufptr) fstat((fd),(bufptr))
-#define Fflush(fp) fflush(fp)
-#define Mkdir(path,mode) mkdir((path),(mode))
-
-#ifndef PERL_SYS_INIT_BODY
-# define PERL_SYS_INIT_BODY(c,v) PERL_FPU_INIT; PERLIO_INIT; MALLOC_INIT
-#endif
-
-#ifndef PERL_SYS_TERM_BODY
-#define PERL_SYS_TERM_BODY() PERLIO_TERM; MALLOC_TERM
-#endif
-
-#define BIT_BUCKET "/dev/null"
-
-#define dXSUB_SYS
-
-/* pw_passwd, pw_gecos, pw_age, pw_comment exist in the struct passwd
- * but they contain uninitialized (as in "accessing them will crash perl")
- * pointers. Stay away from them. */
-
-#undef PWGECOS
-#undef PRPASSWD
-#undef PWAGE
-#undef PWCOMMENT
-
-/* various missing external function declarations */
-
-#include <sys/ipc.h>
-extern key_t ftok (char *pathname, char id);
-extern char *gcvt (double value, int ndigit, char *buf);
-extern int isnan (double value);
-extern void srand48(long int seedval);
-extern double drand48(void);
-extern double erand48(unsigned short xsubi[3]);
-extern long jrand48(unsigned short xsubi[3]);
-extern void lcong48(unsigned short param[7]);
-extern long lrand48(void);
-extern long mrand48(void);
-extern long nrand48(unsigned short xsubi[3]);
-extern unsigned short *seed48(unsigned short seed16v[3]);
-
-/* various missing constants -- define 'em */
-
-#define PF_UNSPEC 0
-
-/* declarations for wrappers in mpeix.c */
-
-#include <time.h>
-#include <sys/wait.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-
-extern int ftruncate(int fd, long wantsize);
-extern int gettimeofday( struct timeval *tp, struct timezone *tpz );
-extern int truncate(const char *pathname, off_t length);
-
-extern int mpe_read(int filedes, void *buffer, size_t len);
-extern int mpe_write(int filedes, const void *buffer, size_t len);
-extern int mpe_send(int socket, const void *buffer, size_t len, int flags);
-extern int mpe_sendto(int socket, const void *buffer, size_t len,
- int flags, const struct sockaddr *dest_addr,
- size_t dest_len);
-extern int mpe_recv(int socket, void *buffer, size_t length, int flags);
-extern int mpe_recvfrom(int socket, void *buffer, size_t length,
- int flags, struct sockaddr *address,
- size_t *address_len) ;
-extern int mpe_bind(int socket, const struct sockaddr *address,
- size_t address_len);
-extern int mpe_getsockname(int socket, struct sockaddr *address,
- size_t *address_len);
-extern int mpe_getpeername(int socket, struct sockaddr *address,
- size_t *address_len);
-
-/* Replacements to fix various socket problems -- see mpeix.c */
-#define fcntl mpe_fcntl
-#define read mpe_read
-#define write mpe_write
-#define send mpe_send
-#define sendto mpe_sendto
-#define recv mpe_recv
-#define recvfrom mpe_recvfrom
-#define bind mpe_bind
-#define getsockname mpe_getsockname
-#define getpeername mpe_getpeername
diff --git a/mpeix/nm b/mpeix/nm
deleted file mode 100755
index 64e58be4d8..0000000000
--- a/mpeix/nm
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-# MPE doesn't have a native nm, and the gcc nm isn't quite fully functional.
-#
-# If Perl Configure is calling us, then use the native linker to extract the
-# symbol table and reformat it into something nm-like.
-#
-# Else it must be gcc calling us during the final link phase, so call gcc nm.
-
-if [ "$1" != "-configperl" ]; then
- # Oops, the caller must be expecting gcc nm. Give it to them.
- /usr/local/bin/nm $@
- exit $?
-fi
-
-case $2 in
- *.a) LIST="LISTRL RL=$2;DATA;ENTRYSYM" ;;
- *.sl) LIST="LISTXL XL=$2;DATA;ENTRYSYM" ;;
- *) exit 0 ;;
-esac
-
-# I wanted to pipe this into awk, but it fell victim to a known pipe/streams
-# bug on my multiprocessor machine.
-
-callci xeq linkedit.pub.sys \"$LIST\" >nm.$$
-
-/bin/awk '\
- / data univ / { printf "%-20s|%10s|%-6s|%-7s|%s\n",$1,$5,"extern","data","?"} \
- / entry univ / { printf "%-20s|%10s|%-6s|%-7s|%s\n",$1,$7,"extern","entry","?"}' nm.$$
-
-rm -f nm.$$
-
-exit 0
diff --git a/mpeix/relink b/mpeix/relink
deleted file mode 100755
index 2984bcecfe..0000000000
--- a/mpeix/relink
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-
-# The MPE POSIX libc archive library contains rand(), but this function has
-# been omitted from the libc shared library on the mistaken assumption that
-# the rand() function in the kernel library /SYS/PUB/XL could be used instead.
-# However, rand() in /SYS/PUB/XL is a Fortran function with different semantics
-# from the C version that we expect.
-
-# So in order to get the correct rand() function and to make it available to
-# the dynamically loaded perl extensions, we will build our own mini rand()
-# shared library and add this to the perl NMPRG's XL list.
-
-RAND=/$HPACCOUNT/$HPGROUP/libcrand
-
-echo "Creating $RAND.sl...\n"
-
-TEMP=./perlmpe.$$
-
-rm -f $TEMP $RAND.a $RAND.sl
-
-/bin/cat - >$TEMP <<EOF
-buildrl $RAND.a
-copyrl from=/lib/libc.a;to=$RAND.a;module=rand
-revealrl rl=$RAND.a;all
-buildxl $RAND.sl;limit=1
-addxl from=$RAND.a;to=$RAND.sl;share
-listxl xl=$RAND.sl
-EOF
-
-callci "xeq LINKEDIT.PUB.SYS <$TEMP"
-
-rm -f $TEMP $RAND.a
-
-# MPE/iX as of 5.5 does not yet properly support linking against dynamic
-# libraries via gcc or ld. For now, re-run gcc without the external library
-# list, and then run the native linker with the list of dynamic libraries.
-
-echo "Creating the perl executable NMPRG..."
-
-gcc -o perl perlmain.o \
- lib/auto/DynaLoader/DynaLoader.a \
- libperl.a \
- `cat ext.libs` \
- -L/BINDFW/CURRENT/lib -lbind \
- -L/SYSLOG/PUB -lsyslog
-
-echo "Modifying the perl executable NMPRG XL list...\n"
-
-callci "xeq LINKEDIT.PUB.SYS 'altprog ./perl;xl=/usr/lib/libcurses.sl,/lib/libsvipc.sl,/usr/lib/libsocket.sl,/usr/lib/libstr.sl,/lib/libm.sl,$RAND.sl,/lib/libc.sl'"
diff --git a/perl.c b/perl.c
index 845a70bdfa..f9283db43c 100644
--- a/perl.c
+++ b/perl.c
@@ -3439,10 +3439,6 @@ S_minus_v(pTHX)
PerlIO_printf(PerlIO_stdout(),
"BeOS port Copyright Tom Spindler, 1997-1999\n");
#endif
-#ifdef MPE
- PerlIO_printf(PerlIO_stdout(),
- "MPE/iX port Copyright by Mark Klein and Mark Bixby, 1996-2003\n");
-#endif
#ifdef OEMVS
PerlIO_printf(PerlIO_stdout(),
"MVS (OS390) port by Mortice Kern Systems, 1997-1999\n");
diff --git a/perl.h b/perl.h
index 6e18dbf3ce..2f5e8680d3 100644
--- a/perl.h
+++ b/perl.h
@@ -2574,11 +2574,6 @@ typedef SV PADNAME;
# define ISHISH "plan9"
#endif
-#if defined(MPE)
-# include "mpeix/mpeixish.h"
-# define ISHISH "mpeix"
-#endif
-
#if defined(__VOS__)
# ifdef __GNUC__
# include "./vos/vosish.h"
diff --git a/pod/perl.pod b/pod/perl.pod
index f339c22a7a..e45c9cd7ce 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -242,7 +242,6 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
perllinux Perl notes for Linux
perlmacos Perl notes for Mac OS (Classic)
perlmacosx Perl notes for Mac OS X
- perlmpeix Perl notes for MPE/iX
perlnetware Perl notes for NetWare
perlopenbsd Perl notes for OpenBSD
perlos2 Perl notes for OS/2
diff --git a/pod/perl5005delta.pod b/pod/perl5005delta.pod
index 62661254a2..e73bcebc42 100644
--- a/pod/perl5005delta.pod
+++ b/pod/perl5005delta.pod
@@ -509,7 +509,7 @@ as L<perldos> on some systems).
MiNT is now supported. See F<README.mint>.
-MPE/iX is now supported. See F<README.mpeix>.
+MPE/iX is now supported. See README.mpeix.
MVS (aka OS390, aka Open Edition) is now supported. See F<README.os390>
(installed as L<perlos390> on some systems).
diff --git a/pod/perlport.pod b/pod/perlport.pod
index ac35534c62..110c9a2b77 100644
--- a/pod/perlport.pod
+++ b/pod/perlport.pod
@@ -1433,7 +1433,7 @@ in C<$^O> is "riscos" (because we don't like shouting).
=head2 Other perls
Perl has been ported to many platforms that do not fit into any of
-the categories listed above. Some, such as AmigaOS, BeOS, HP MPE/iX,
+the categories listed above. Some, such as AmigaOS, BeOS,
QNX, Plan 9, and VOS, have been well-integrated into the standard
Perl source code kit. You may need to see the F<ports/> directory
on CPAN for information, and possibly binaries, for the likes of:
@@ -1448,7 +1448,6 @@ in the "OTHER" category include:
------------------------------------------
Amiga DOS amigaos m68k-amigos
BeOS beos
- MPE/iX mpeix PA-RISC1.1
See also:
@@ -1464,11 +1463,6 @@ Be OS, F<README.beos>
=item *
-HP 300 MPE/iX, F<README.mpeix> and Mark Bixby's web page
-L<http://www.bixby.org/mark/porting.html>
-
-=item *
-
A free perl5-based PERL.NLM for Novell Netware is available in
precompiled binary and source code form from L<http://www.novell.com/>
as well as from CPAN.
@@ -1748,11 +1742,11 @@ Not implemented. (S<Plan 9>, Win32, S<RISC OS>)
=item endpwent
-Not implemented. (MPE/iX, Win32)
+Not implemented. (Win32)
=item endgrent
-Not implemented. (MPE/iX, S<RISC OS>, VMS, Win32)
+Not implemented. (S<RISC OS>, VMS, Win32)
=item endhostent
@@ -1819,7 +1813,7 @@ numbers. (VMS)
=item link
-Not implemented. (MPE/iX, S<RISC OS>, VOS)
+Not implemented. (S<RISC OS>, VOS)
Link count not updated because hard links are not quite that hard
(They are sort of half-way between hard and soft links). (AmigaOS)
@@ -1893,7 +1887,7 @@ Not implemented. (Win32, VMS, S<RISC OS>)
=item setgrent
-Not implemented. (MPE/iX, VMS, Win32, S<RISC OS>)
+Not implemented. (VMS, Win32, S<RISC OS>)
=item setpgrp
@@ -1905,7 +1899,7 @@ Not implemented. (Win32, VMS, S<RISC OS>, VOS)
=item setpwent
-Not implemented. (MPE/iX, Win32, S<RISC OS>)
+Not implemented. (Win32, S<RISC OS>)
=item setsockopt
@@ -2316,7 +2310,7 @@ L<http://www.cpan.org/ports/index.html> for binary distributions.
L<perlaix>, L<perlamiga>, L<perlbeos>, L<perlbs2000>,
L<perlce>, L<perlcygwin>, L<perldgux>, L<perldos>, L<perlepoc>,
L<perlebcdic>, L<perlfreebsd>, L<perlhurd>, L<perlhpux>, L<perlirix>,
-L<perlmacos>, L<perlmacosx>, L<perlmpeix>,
+L<perlmacos>, L<perlmacosx>,
L<perlnetware>, L<perlos2>, L<perlos390>, L<perlos400>,
L<perlplan9>, L<perlqnx>, L<perlsolaris>, L<perltru64>,
L<perlunicode>, L<perlvms>, L<perlvos>, L<perlwin32>, and L<Win32>.
diff --git a/pp_sys.c b/pp_sys.c
index 536fb2ecef..2a7f43e777 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1667,7 +1667,7 @@ PP(pp_sysread)
if (PL_op->op_type == OP_RECV) {
Sock_size_t bufsize;
char namebuf[MAXPATHLEN];
-#if (defined(VMS_DO_SOCKETS) && defined(DECCRTL_SOCKETS)) || defined(MPE) || defined(__QNXNTO__)
+#if (defined(VMS_DO_SOCKETS) && defined(DECCRTL_SOCKETS)) || defined(__QNXNTO__)
bufsize = sizeof (struct sockaddr_in);
#else
bufsize = sizeof namebuf;
@@ -2533,7 +2533,7 @@ PP(pp_accept)
IO *nstio;
IO *gstio;
char namebuf[MAXPATHLEN];
-#if (defined(VMS_DO_SOCKETS) && defined(DECCRTL_SOCKETS)) || defined(MPE) || defined(__QNXNTO__)
+#if (defined(VMS_DO_SOCKETS) && defined(DECCRTL_SOCKETS)) || defined(__QNXNTO__)
Sock_size_t len = sizeof (struct sockaddr_in);
#else
Sock_size_t len = sizeof namebuf;
diff --git a/t/io/pipe.t b/t/io/pipe.t
index e41eb18262..8d262bbe9f 100644
--- a/t/io/pipe.t
+++ b/t/io/pipe.t
@@ -176,9 +176,8 @@ SKIP: {
is($!, '', ' errno');
isnt($?, 0, ' status');
- SKIP: {
- skip "Don't work yet", 6 if $^O eq 'mpeix';
-
+ # Former skip block:
+ {
# check that status for the correct process is collected
my $zombie;
unless( $zombie = fork ) {
diff --git a/t/op/die_exit.t b/t/op/die_exit.t
index 390e0c5831..bd9ac28598 100644
--- a/t/op/die_exit.t
+++ b/t/op/die_exit.t
@@ -13,8 +13,6 @@ BEGIN {
use strict;
-skip_all('broken on MPE/iX') if $^O eq 'mpeix';
-
$| = 1;
my @tests = (
diff --git a/t/op/fork.t b/t/op/fork.t
index fbff8fb2d9..0fce881b3e 100644
--- a/t/op/fork.t
+++ b/t/op/fork.t
@@ -11,9 +11,6 @@ BEGIN {
unless ($Config::Config{d_fork} or $Config::Config{d_pseudofork});
}
-skip_all('fork/status problems on MPE/iX')
- if $^O eq 'mpeix';
-
$|=1;
run_multiple_progs('', \*DATA);
diff --git a/t/op/magic.t b/t/op/magic.t
index d3f6a48e18..575dae779d 100644
--- a/t/op/magic.t
+++ b/t/op/magic.t
@@ -55,7 +55,6 @@ $Is_VMS = $^O eq 'VMS';
$Is_Dos = $^O eq 'dos';
$Is_os2 = $^O eq 'os2';
$Is_Cygwin = $^O eq 'cygwin';
-$Is_MPE = $^O eq 'mpeix';
$Is_BeOS = $^O eq 'beos';
$PERL = $ENV{PERL}
@@ -107,7 +106,7 @@ close FOO; # just mention it, squelch used-only-once
SKIP: {
skip('SIGINT not safe on this platform', 5)
- if $Is_MSWin32 || $Is_NetWare || $Is_Dos || $Is_MPE;
+ if $Is_MSWin32 || $Is_NetWare || $Is_Dos;
# 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
diff --git a/t/op/pack.t b/t/op/pack.t
index 34097adaa6..99cb533163 100644
--- a/t/op/pack.t
+++ b/t/op/pack.t
@@ -300,8 +300,6 @@ sub list_eq ($$) {
skip("-- $^O has serious fp indigestion on w-packed infinities", 1)
if (
- ($^O eq 'mpeix')
- ||
($^O eq 'ultrix')
||
($^O =~ /^svr4/ && -f "/etc/issue" && -f "/etc/.relid") # NCR MP-RAS
diff --git a/t/op/stat.t b/t/op/stat.t
index f52f26c4e7..c49aaf4e28 100644
--- a/t/op/stat.t
+++ b/t/op/stat.t
@@ -31,7 +31,6 @@ $Is_Amiga = $^O eq 'amigaos';
$Is_Cygwin = $^O eq 'cygwin';
$Is_Darwin = $^O eq 'darwin';
$Is_Dos = $^O eq 'dos';
-$Is_MPE = $^O eq 'mpeix';
$Is_MSWin32 = $^O eq 'MSWin32';
$Is_NetWare = $^O eq 'NetWare';
$Is_OS2 = $^O eq 'os2';
diff --git a/t/op/sysio.t b/t/op/sysio.t
index ba739f2ff9..25d7197024 100644
--- a/t/op/sysio.t
+++ b/t/op/sysio.t
@@ -14,8 +14,7 @@ $reopen = ($^O eq 'VMS' ||
$^O eq 'os2' ||
$^O eq 'MSWin32' ||
$^O eq 'NetWare' ||
- $^O eq 'dos' ||
- $^O eq 'mpeix');
+ $^O eq 'dos');
$x = 'abc';
diff --git a/win32/Makefile b/win32/Makefile
index 23acd567bc..f0052868a4 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1142,7 +1142,6 @@ utils: $(PERLEXE) $(X2P)
copy ..\README.linux ..\pod\perllinux.pod
copy ..\README.macos ..\pod\perlmacos.pod
copy ..\README.macosx ..\pod\perlmacosx.pod
- copy ..\README.mpeix ..\pod\perlmpeix.pod
copy ..\README.netware ..\pod\perlnetware.pod
copy ..\README.openbsd ..\pod\perlopenbsd.pod
copy ..\README.os2 ..\pod\perlos2.pod
@@ -1255,11 +1254,11 @@ distclean: realclean
perlcygwin.pod perldgux.pod perldos.pod perlepoc.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 perlmpeix.pod \
- perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
- perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
- perlsolaris.pod perlsymbian.pod perltoc.pod perltru64.pod \
- perltw.pod perluniprops.pod perlvos.pod perlwin32.pod
+ perlmacos.pod perlmacosx.pod perlmodlib.pod perlnetware.pod \
+ perlopenbsd.pod perlos2.pod perlos390.pod perlos400.pod \
+ perlplan9.pod perlqnx.pod perlriscos.pod perlsolaris.pod \
+ perlsymbian.pod perltoc.pod perltru64.pod perltw.pod \
+ perluniprops.pod perlvos.pod perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
perldoc perlivp libnetcfg enc2xs piconv cpan *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum corelist config_data zipdetails
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 1f7f72e456..99780066dc 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -1322,7 +1322,6 @@ utils: $(PERLEXE) $(X2P)
copy ..\README.linux ..\pod\perllinux.pod
copy ..\README.macos ..\pod\perlmacos.pod
copy ..\README.macosx ..\pod\perlmacosx.pod
- copy ..\README.mpeix ..\pod\perlmpeix.pod
copy ..\README.netware ..\pod\perlnetware.pod
copy ..\README.openbsd ..\pod\perlopenbsd.pod
copy ..\README.os2 ..\pod\perlos2.pod
@@ -1434,11 +1433,11 @@ distclean: realclean
perlcygwin.pod perldgux.pod perldos.pod perlepoc.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 perlmpeix.pod \
- perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
- perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
- perlsolaris.pod perlsymbian.pod perltoc.pod perltru64.pod \
- perltw.pod perluniprops.pod perlvos.pod perlwin32.pod
+ perlmacos.pod perlmacosx.pod perlmodlib.pod perlnetware.pod \
+ perlopenbsd.pod perlos2.pod perlos390.pod perlos400.pod \
+ perlplan9.pod perlqnx.pod perlriscos.pod perlsolaris.pod \
+ perlsymbian.pod perltoc.pod perltru64.pod perltw.pod \
+ perluniprops.pod perlvos.pod perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
perldoc perlivp libnetcfg enc2xs piconv cpan *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum corelist config_data zipdetails