Remove the MPE/iX port.
authorNicholas Clark <nick@ccl4.org>
Thu, 20 Sep 2012 10:04:24 +0000 (12:04 +0200)
committerNicholas Clark <nick@ccl4.org>
Fri, 21 Sep 2012 08:01:42 +0000 (10:01 +0200)
MPE/iX was a business-oriented minicomputer operating system made by
Hewlett-Packard. Support from HP terminated at the end of 2010.

33 files changed:
MANIFEST
Porting/exec-bit.txt
Porting/perlhist_calculate.pl
README.mpeix [deleted file]
ext/DynaLoader/dl_mpeix.xs [deleted file]
ext/File-Glob/t/basic.t
ext/POSIX/t/posix.t
ext/re/hints/mpeix.pl [deleted file]
hints/mpeix.sh [deleted file]
installperl
lib/File/Copy.pm
lib/FileHandle.t
lib/perl5db.pl
mpeix/mpeix.c [deleted file]
mpeix/mpeix_setjmp.c [deleted file]
mpeix/mpeixish.h [deleted file]
mpeix/nm [deleted file]
mpeix/relink [deleted file]
perl.c
perl.h
pod/perl.pod
pod/perl5005delta.pod
pod/perlport.pod
pp_sys.c
t/io/pipe.t
t/op/die_exit.t
t/op/fork.t
t/op/magic.t
t/op/pack.t
t/op/stat.t
t/op/sysio.t
win32/Makefile
win32/makefile.mk

index cceb00e..9aa1045 100644 (file)
--- 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
index 05a8967..ce7bd91 100644 (file)
@@ -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
index 8cbc3d9..bd49507 100755 (executable)
@@ -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 (file)
index c382c46..0000000
+++ /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 (file)
index be75698..0000000
+++ /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.
index bcd9999..497241f 100644 (file)
@@ -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 $>;
index be804c2..a397933 100644 (file)
@@ -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 (file)
index d1fbb91..0000000
+++ /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 (file)
index afa6cf8..0000000
+++ /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'
index c19bff1..64a94ab 100755 (executable)
@@ -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");
index ef27037..c34670c 100644 (file)
@@ -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 {
index ddbd944..aeae754 100644 (file)
@@ -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;
index c8596df..4f517d0 100644 (file)
@@ -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 (file)
index f289a4b..0000000
+++ /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 (file)
index 491c716..0000000
+++ /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 (file)
index f4ce38e..0000000
+++ /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 (executable)
index 64e58be..0000000
--- 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 (executable)
index 2984bce..0000000
+++ /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 845a70b..f9283db 100644 (file)
--- 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 6e18dbf..2f5e868 100644 (file)
--- 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"
index f339c22..e45c9cd 100644 (file)
@@ -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
index 6266125..e73bceb 100644 (file)
@@ -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).
index ac35534..110c9a2 100644 (file)
@@ -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>.
index 536fb2e..2a7f43e 100644 (file)
--- 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;
index e41eb18..8d262bb 100644 (file)
@@ -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 ) {
index 390e0c5..bd9ac28 100644 (file)
@@ -13,8 +13,6 @@ BEGIN {
 
 use strict;
 
-skip_all('broken on MPE/iX') if $^O eq 'mpeix';
-
 $| = 1;
 
 my @tests = (
index fbff8fb..0fce881 100644 (file)
@@ -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);
index d3f6a48..575dae7 100644 (file)
@@ -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
index 34097ad..99cb533 100644 (file)
@@ -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
index f52f26c..c49aaf4 100644 (file)
@@ -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';
index ba739f2..25d7197 100644 (file)
@@ -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';
 
index 23acd56..f005286 100644 (file)
@@ -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
index 1f7f72e..9978006 100644 (file)
@@ -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