diff options
-rw-r--r-- | MANIFEST | 2 | ||||
-rw-r--r-- | README.vms | 44 | ||||
-rw-r--r-- | configure.com | 180 | ||||
-rw-r--r-- | ext/Socket/Socket.pm | 2 | ||||
-rw-r--r-- | ext/Socket/Socket.xs | 46 | ||||
-rw-r--r-- | vms/descrip_mms.template | 96 | ||||
-rw-r--r-- | vms/sockadapt.c | 130 | ||||
-rw-r--r-- | vms/sockadapt.h | 188 | ||||
-rw-r--r-- | vms/vmsish.h | 1 |
9 files changed, 86 insertions, 603 deletions
@@ -5254,8 +5254,6 @@ vms/make_command.com record MM[SK] command used to build Perl vms/mms2make.pl convert descrip.mms to make syntax vms/munchconfig.c performs shell $var substitution for VMS vms/myconfig.com record local configuration info for bug report -vms/sockadapt.c glue for SockshShr socket support -vms/sockadapt.h glue for SockshShr socket support vms/test.com DCL driver for regression tests vms/vms.c VMS-specific C code for Perl core vms/vmsish.h VMS-specific C header for Perl core diff --git a/README.vms b/README.vms index 8d3c8a23da..8195d6af8f 100644 --- a/README.vms +++ b/README.vms @@ -212,10 +212,9 @@ As a handy shortcut, the command: @ Configure "-des" (note the quotation marks and case) will choose reasonable defaults -automatically (it takes DEC C over Gnu C, DEC C sockets over SOCKETSHR -sockets, and either over no sockets). Some options can be given -explicitly on the command line; the following example specifies a -non-default location for where Perl will be installed: +automatically. Some options can be given explicitly on the command line; +the following example specifies a non-default location for where Perl +will be installed: @ Configure "-d" "-Dprefix=dka100:[utils.perl5.]" @@ -254,40 +253,9 @@ change. =head2 Socket Support (optional) for Perl on VMS Perl includes a number of functions for IP sockets, which are available if -you choose to compile Perl with socket support. Since IP networking is an -optional addition to VMS, there are several different IP stacks available. -How well integrated they are into the system depends on the stack, your -version of VMS, and the version of your C compiler. - -The default solution available is to use the socket routines built into DEC -C. Which routines are available depend on the version of VMS you're -running, and require proper UCX emulation by your TCP/IP vendor. -Relatively current versions of Multinet, TCPWare, Pathway, and UCX all -provide the required libraries--check your manuals or release notes to see -if your version is new enough. - -The other solution uses the SOCKETSHR library. Before VAX/VMS 5.5-2 it was -the most portable solution. The SOCKETSHR library has not been maintained -since VAX/VMS 5.5-2, and it is not known if will even compile with the ANSI -C that Perl currently requires. It remains an option for historical reasons, -just in case someone might find it useful. - -In combination with either UCX or NetLib, this supported all the major TCP -stacks (Multinet, Pathways, TCPWare, UCX, and CMU) on all versions of VMS -Perl ran on up to VAX/VMS 6.2 and Alpha VMS 1.5 with all the compilers on -both VAX and Alpha. The portion of the socket interface was also consistent -across versions of VMS and C compilers. - -It has a problem with UDP sockets when used with Multinet, though, so you -should be aware of that. - -As of VAX/VMS 5.5-2 and later, CMU is the only TCP/IP program that requires -socketshr, and the sources have been lost to the most recent CMU bug fixes, -so CMU is limited to OpenVMS/VAX 6.2 or earlier, which is the last release -that binaries for the last released patches are known to exist. - -There is currently no official web site for downloading either CMU or -SOCKETSHR; however, copies may be found in the DECUS archives. +you choose to compile Perl with socket support. It does this via the socket +routines built into the CRTL regarless of which TCP/IP stack your system +has. =head1 Building Perl diff --git a/configure.com b/configure.com index 3078bf646b..c23bdf0106 100644 --- a/configure.com +++ b/configure.com @@ -1933,15 +1933,6 @@ $!: Looking for optional libraries $!: see if nm is to be used to determine whether a symbol is defined or not $!: get list of predefined functions in a handy place $!: see if we have sigaction or sigprocmask -$!: see whether socketshr exists -$ IF (F$SEARCH(F$PARSE("SocketShr","Sys$Share:.Exe")).NES."") -$ THEN -$ Has_socketshr = "T" -$ echo "" -$ echo4 "Hmm... Looks like you have SOCKETSHR Berkeley networking support." -$ ELSE -$ Has_socketshr = "F" -$ ENDIF $ IF (ccname .EQS. "DEC" .AND. Dec_C_Version .GE. 50200000) .OR. (ccname .EQS. "CXX") $ THEN $ Has_Dec_C_Sockets = "T" @@ -1950,20 +1941,14 @@ $ echo4 "Hmm... Looks like you have Dec C Berkeley networking support." $ ELSE $ Has_Dec_C_Sockets = "F" $ ENDIF -$ ! Hey, we've got both. Default to Dec C, then, since it's better -$ IF Has_socketshr .OR. Has_Dec_C_Sockets +$! +$ IF Has_Dec_C_Sockets $ THEN $ echo "" -$ echo "You have sockets available. Which socket stack do you want to" -$ echo "build into Perl?" -$ IF Has_Dec_C_Sockets -$ THEN -$ dflt = "DECC" -$ ELSE -$ dflt = "SOCKETSHR" -$ ENDIF -$ rp = "Choose socket stack (NONE" -$ IF Has_socketshr THEN rp = rp + ",SOCKETSHR" +$ echo "You have sockets available via the C library. Should socket support" +$ echo "be built into Perl?" +$ dflt = "DECC" +$ rp = "Choose socket support option (NONE" $ IF Has_Dec_C_Sockets THEN rp = rp + ",DECC" $ rp = rp + ") [''dflt'] " $ GOSUB myread @@ -1971,7 +1956,6 @@ $ Has_Dec_C_Sockets = "F" $ Has_socketshr = "F" $ ans = F$EDIT(ans,"TRIM,COMPRESS,LOWERCASE") $ IF ans.eqs."decc" THEN Has_Dec_C_Sockets = "T" -$ IF ans.eqs."socketshr" THEN Has_socketshr = "T" $ ENDIF $! $! @@ -2907,7 +2891,7 @@ $ dflt = dflt - "IPC/SysV" ! needs to be ported $ dflt = dflt - "NDBM_File" ! needs porting/special library $ dflt = dflt - "ODBM_File" ! needs porting/special library $ dflt = dflt - "Sys/Syslog" ! needs porting/special library "GDBM_File macro LOG_DEBUG" -$ IF .NOT. Has_socketshr .AND. .NOT. Has_Dec_C_Sockets +$ IF .NOT. Has_Dec_C_Sockets $ THEN $ dflt = dflt - "Socket" ! optional on VMS $ ENDIF @@ -3791,7 +3775,7 @@ $ i_socks = tmp $! $! Check the prototype for select $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" @@ -3800,13 +3784,8 @@ $ WS "#endif" $ WS "#include <stdio.h>" $ WS "#include <types.h>" $ IF i_unistd .EQS. "define" THEN WS "#include <unistd.h>" -$ IF Has_Socketshr -$ THEN -$ WS "#include <socketshr.h>" -$ ELSE -$ WS "#include <time.h>" -$ WS "#include <socket.h>" -$ ENDIF +$ WS "#include <time.h>" +$ WS "#include <socket.h>" $ WS "int main()" $ WS "{" $ WS "fd_set *foo;" @@ -3840,10 +3819,6 @@ $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" $ WS "#include <types.h>" -$ IF Has_Socketshr -$ THEN -$ WS "#include <socketshr.h>" -$ ENDIF $ IF Has_Dec_C_Sockets $ THEN $ WS "#include <time.h>" @@ -4026,7 +4001,7 @@ $ ENDIF $! $! Check to see if gethostname exists $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" @@ -4034,13 +4009,8 @@ $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" $ WS "#include <types.h>" -$ IF Has_Socketshr -$ THEN -$ WS "#include <socketshr.h>" -$ ELSE -$ WS "#include <time.h>" -$ WS "#include <socket.h>" -$ ENDIF +$ WS "#include <time.h>" +$ WS "#include <socket.h>" $ WS "int main()" $ WS "{" $ WS "char name[100];" @@ -4556,7 +4526,7 @@ $ d_setproctitle = tmp $! $! Check for <netinet/in.h> $! -$ IF Has_Dec_C_Sockets .or. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ tmp = "netinet/in.h" $ GOSUB inhdr @@ -4567,7 +4537,7 @@ $ ENDIF $! $! Check for <netinet/tcp.h> $! -$ IF Has_Dec_C_Sockets .or. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ tmp = "netinet/tcp.h" $ GOSUB inhdr @@ -4578,17 +4548,14 @@ $ ENDIF $! $! Check for endhostent $! -$ IF Has_Dec_C_Sockets .or. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "endhostent();" @@ -4604,17 +4571,14 @@ $ ENDIF $! $! Check for endnetent $! -$ IF Has_Dec_C_Sockets .or. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "endnetent();" @@ -4630,17 +4594,14 @@ $ ENDIF $! $! Check for endprotoent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "endprotoent();" @@ -4656,17 +4617,14 @@ $ ENDIF $! $! Check for endservent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "endservent();" @@ -4682,17 +4640,14 @@ $ ENDIF $! $! Check for sethostent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "sethostent(1);" @@ -4708,17 +4663,14 @@ $ ENDIF $! $! Check for setnetent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "setnetent(1);" @@ -4734,17 +4686,14 @@ $ ENDIF $! $! Check for setprotoent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "setprotoent(1);" @@ -4760,17 +4709,14 @@ $ ENDIF $! $! Check for setservent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "setservent(1);" @@ -4786,17 +4732,14 @@ $ ENDIF $! $! Check for gethostent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "gethostent();" @@ -4812,17 +4755,14 @@ $ ENDIF $! $! Check for getnetent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "getnetent();" @@ -4838,17 +4778,14 @@ $ ENDIF $! $! Check for getprotoent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "getprotoent();" @@ -4864,17 +4801,14 @@ $ ENDIF $! $! Check for getservent $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "getservent();" @@ -4892,7 +4826,7 @@ $! $! Check for sa_len $! $ echo4 "Checking the availability of sa_len in the sockaddr struct ..." -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" @@ -4900,12 +4834,7 @@ $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#define _SOCKADDR_LEN" $ WS "#include <types.h>" -$ IF Has_Socketshr -$ THEN -$ WS "#include <socketshr.h>" -$ ELSE -$ WS "#include <socket.h>" -$ ENDIF +$ WS "#include <socket.h>" $ WS "int main() {" $ WS "struct sockaddr sa;" $ WS "return (sa.sa_len);" @@ -4929,16 +4858,11 @@ $! $! Check for sin6_scope_id $! $ echo4 "Checking the availability of sin6_scope_id in the struct sockaddr_in6 ..." -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ OS $ WS "#include <types.h>" -$ IF Has_Socketshr -$ THEN -$ WS "#include <socketshr.h>" -$ ELSE -$ WS "#include <socket.h>" -$ ENDIF +$ WS "#include <socket.h>" $ WS "#include <in.h>" $ WS "int main() {" $ WS "struct sockaddr_in6 sin6;" @@ -4978,7 +4902,7 @@ $ d_nanosleep = tmp $! $! Check for socklen_t $! -$ IF Has_Dec_C_Sockets .OR. Has_Socketshr +$ IF Has_Dec_C_Sockets $ THEN $ echo4 "Checking to see if you have socklen_t..." $ OS @@ -4986,10 +4910,7 @@ $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include <stdlib.h>" $ WS "#endif" $ WS "#include <stdio.h>" -$ IF Has_Socketshr -$ THEN WS "#include <socketshr.h>" -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" -$ ENDIF +$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>" $ WS "int main()" $ WS "{" $ WS "socklen_t x = 16;" @@ -5568,7 +5489,7 @@ $ d_stdio_ptr_lval_nochange_cnt="define" $ usefaststdio="undef" $! $! Sockets? -$ if Has_Socketshr .OR. Has_Dec_C_Sockets +$ if Has_Dec_C_Sockets $ THEN $ d_vms_do_sockets="define" $ d_htonl="define" @@ -7021,8 +6942,6 @@ $ IF (Has_Dec_C_Sockets) $ THEN $ WC "#define VMS_DO_SOCKETS" $ WC "#define DECCRTL_SOCKETS" -$ ELSE -$ IF Has_Socketshr THEN WC "#define VMS_DO_SOCKETS" $ ENDIF $! This is VMS-specific for now $ WC "#''d_setenv' HAS_SETENV" @@ -7089,12 +7008,7 @@ $ IF Has_Dec_C_Sockets $ THEN $ SOCKET_REPLACE = "SOCKET=DECC_SOCKETS=1" $ ELSE -$ IF Has_Socketshr -$ THEN -$ SOCKET_REPLACE = "SOCKET=SOCKETSHR_SOCKETS=1" -$ ELSE -$ SOCKET_REPLACE = "SOCKET=" -$ ENDIF +$ SOCKET_REPLACE = "SOCKET=" $ ENDIF $ IF use_threads $ THEN diff --git a/ext/Socket/Socket.pm b/ext/Socket/Socket.pm index aa3fe3fff8..9ba10bfb82 100644 --- a/ext/Socket/Socket.pm +++ b/ext/Socket/Socket.pm @@ -3,7 +3,7 @@ package Socket; use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); -$VERSION = "1.94"; +$VERSION = "1.94_01"; =head1 NAME diff --git a/ext/Socket/Socket.xs b/ext/Socket/Socket.xs index 9214fc15bb..8bcfa0f476 100644 --- a/ext/Socket/Socket.xs +++ b/ext/Socket/Socket.xs @@ -5,47 +5,43 @@ #include <stddef.h> -#ifndef VMS -# ifdef I_SYS_TYPES +#ifdef I_SYS_TYPES # include <sys/types.h> -# endif -# if !defined(ultrix) /* Avoid double definition. */ +#endif +#if !defined(ultrix) /* Avoid double definition. */ # include <sys/socket.h> -# endif -# if defined(USE_SOCKS) && defined(I_SOCKS) +#endif +#if defined(USE_SOCKS) && defined(I_SOCKS) # include <socks.h> -# endif -# ifdef MPE +#endif +#ifdef MPE # define PF_INET AF_INET # define PF_UNIX AF_UNIX # define SOCK_RAW 3 -# endif -# ifdef I_SYS_UN +#endif +#ifdef I_SYS_UN # include <sys/un.h> -# endif +#endif /* XXX Configure test for <netinet/in_systm.h needed XXX */ -# if defined(NeXT) || defined(__NeXT__) +#if defined(NeXT) || defined(__NeXT__) # include <netinet/in_systm.h> -# endif -# if defined(__sgi) && !defined(AF_LINK) && defined(PF_LINK) && PF_LINK == AF_LNK +#endif +#if defined(__sgi) && !defined(AF_LINK) && defined(PF_LINK) && PF_LINK == AF_LNK # undef PF_LINK -# endif -# if defined(I_NETINET_IN) || defined(__ultrix__) +#endif +#if defined(I_NETINET_IN) || defined(__ultrix__) # include <netinet/in.h> -# endif -# ifdef I_NETDB +#endif +#ifdef I_NETDB # if !defined(ultrix) /* Avoid double definition. */ # include <netdb.h> # endif -# endif -# ifdef I_ARPA_INET +#endif +#ifdef I_ARPA_INET # include <arpa/inet.h> -# endif -# ifdef I_NETINET_TCP +#endif +#ifdef I_NETINET_TCP # include <netinet/tcp.h> -# endif -#else -# include "sockadapt.h" #endif #ifdef NETWARE diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index cef3716f6b..8e5debfa29 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -79,21 +79,6 @@ MALLOC_C = malloc$(C) SOCKET=1 .endif -.ifdef SOCKETSHR_SOCKETS -SOCKET=1 -.endif - -# If they defined SOCKET but didn't choose a stack, default to SOCKETSHR -.ifdef DECC_SOCKETS -.else -.ifdef SOCKETSHR_SOCKETS -.else -.ifdef SOCKET -SOCKETSHR_SOCKETS=1 -.endif -.endif -.endif - ARCHDIR = [.lib.$(ARCHNAME).$(PERL_VERSION)] ARCHCORE = [.lib.$(ARCHNAME).$(PERL_VERSION).CORE] ARCHAUTO = [.lib.$(ARCHNAME).$(PERL_VERSION).auto] @@ -152,35 +137,6 @@ DBGLINKFLAGS = /NoTrace/NoMap DBG = .endif -#: SOCKET: build in support for TCP/IP sockets -#: By default, used SOCKETSHR library; see ReadMe.VMS -#: for information on changing socket support -.ifdef SOCKET -.ifdef DECC_SOCKETS -SOCKDEF = -SOCKLIB = -.else -SOCKDEF = -SOCKLIB = SocketShr/Share -.endif -# N.B. the targets for $(SOCKC) and $(SOCKH) assume that the permanent -# copies live in [.vms], and the `clean' target will delete copies of -# these files in the current default directory. -SOCKC = sockadapt.c -SOCKH = sockadapt.h -SOCKARCH = $(ARCHCORE)$(SOCKH) -SOCKO = sockadapt$(O) -SOCKPM = [.lib]Socket.pm -.else -SOCKDEF = -SOCKLIB = -SOCKC = -SOCKH = -SOCKARCH = -SOCKO = -SOCKPM = -.endif - .ifdef THREADED THREADDEF = THREAD = THREAD @@ -278,14 +234,14 @@ FULLLIBS2 = $(LIBS2)|$(THRLIBS1)|$(THRLIBS2) #### End of system configuration section. #### -c0 = $(MALLOC_C) $(SOCKC) av.c deb.c doio.c doop.c dump.c globals.c gv.c hv.c mro.c +c0 = $(MALLOC_C) av.c deb.c doio.c doop.c dump.c globals.c gv.c hv.c mro.c c1 = mg.c locale.c mathoms.c miniperlmain.c numeric.c op.c pad.c perl.c perlapi.c perlio.c c2 = perly.c pp.c pp_ctl.c pp_hot.c pp_pack.c pp_sort.c pp_sys.c regcomp.c regexec.c reentr.c c3 = run.c scope.c sv.c taint.c toke.c universal.c utf8.c util.c vms.c keywords.c c = $(c0) $(c1) $(c2) $(c3) obj0 = perl$(O) -obj1 = $(MALLOC_O) $(SOCKO) av$(O) deb$(O) doio$(O) doop$(O) dump$(O) mro$(O) globals$(O) gv$(O) hv$(O) +obj1 = $(MALLOC_O) av$(O) deb$(O) doio$(O) doop$(O) dump$(O) mro$(O) globals$(O) gv$(O) hv$(O) obj2 = keywords$(O) locale$(O) mathoms$(O) mg$(O) miniperlmain$(O) numeric$(O) op$(O) pad$(O) perlapi$(O) perlio$(O) obj3 = perly$(O) pp$(O) pp_ctl$(O) pp_hot$(O) reentr$(O) pp_pack$(O) pp_sort$(O) pp_sys$(O) regcomp$(O) obj4 = regexec$(O) run$(O) scope$(O) sv$(O) taint$(O) toke$(O) universal$(O) utf8$(O) util$(O) vms$(O) @@ -300,10 +256,10 @@ h3 = op_reg_common.h opcode.h opnames.h overload.h pad.h parser.h patchlevel.h h4 = perl.h perlapi.h perlio.h perlsdio.h perlvars.h perly.h h5 = pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h h6 = sv.h thread.h utf8.h util.h vmsish.h warnings.h -h7 = xsub.h $(SOCKH) $(THREADH) +h7 = xsub.h $(THREADH) h = $(h0) $(h1) $(h2) $(h3) $(h4) $(h5) $(h6) $(h7) -ac0 = $(ARCHCORE)$(sockh) $(ARCHCORE)av.h +ac0 = $(ARCHCORE)av.h ac1 = $(ARCHCORE)config.h $(ARCHCORE)cop.h $(ARCHCORE)cv.h $(ARCHCORE)embed.h ac2 = $(ARCHCORE)embedvar.h $(ARCHCORE)EXTERN.h $(ARCHCORE)fakethr.h ac3 = $(ARCHCORE)form.h $(ARCHCORE)git_version.h $(ARCHCORE)gv.h $(ARCHCORE)handy.h $(ARCHCORE)hv.h @@ -319,11 +275,7 @@ ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)reentr.h $(ARCHCORE)r ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)regcomp.h .endif ac11 = $(ARCHCORE)regexp.h $(ARCHCORE)regnodes.h $(ARCHCORE)scope.h -.ifdef SOCKARCH -ac12 = $(ARCHCORE)sv.h $(SOCKARCH) -.else ac12 = $(ARCHCORE)sv.h -.endif ac13 = $(ARCHCORE)thread.h $(ARCHCORE)utf8.h $(ARCHCORE)util.h ac14 = $(ARCHCORE)vmsish.h $(ARCHCORE)warnings.h $(ARCHCORE)xsub.h acopt = $(ARCHCORE)perlshr_attr.opt $(ARCHCORE)$(DBG)perlshr_bld.opt @@ -621,7 +573,7 @@ nonxsext : $(LIBPREREQ) preplibrary $(MINIPERL_EXE) # Accommodate buggy cpp in some version of DECC, which chokes on illegal # filespec "y.tab.c", and broken gcc cpp, which doesn't start #include "" # search in same dir as source file -[.x2p]a2p$(O) : [.x2p]a2p.c [.x2p]a2py.c [.x2p]INTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h config.h handy.h vmsish.h $(SOCKH) $(MINIPERL_EXE) +[.x2p]a2p$(O) : [.x2p]a2p.c [.x2p]a2py.c [.x2p]INTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h config.h handy.h vmsish.h $(MINIPERL_EXE) $(MINIPERL) -pe "s/^#line\s+(\d+)\s+\Q""y.tab.c""/#line $1 ""y_tab.c""/;" $(MMS$SOURCE) >$(MMS$TARGET_NAME)_vms.c $(CC) $(X2PCFLAGS) /Object=$(MMS$TARGET)/Include=([.x2p],[]) $(MMS$TARGET_NAME)_vms.c Delete/Log/NoConfirm $(MMS$TARGET_NAME)_vms.c; @@ -654,21 +606,7 @@ install.html : [.pod]perltoc.pod printconfig : @ @[.vms]make_command $(MMS) $(MMSQUALIFIERS) $(MMSTARGETS) - @ @[.vms]myconfig "$(CC)" "$(CFLAGS)" "$(LINKFLAGS)" "$(LIBS1)" "$(FULLLIBS2)" "$(SOCKLIB)" "$(EXT)" "$(DBG)" - -.ifdef SOCKET - -vmsish.h : $(SOCKH) - -$(SOCKO) : $(SOCKC) $(h) - -$(SOCKC) : [.vms]$(SOCKC) - Copy/NoConfirm/Log $(MMS$SOURCE) [] - -$(SOCKH) : [.vms]$(SOCKH) - Copy/NoConfirm/Log $(MMS$SOURCE) [] - -.endif + @ @[.vms]myconfig "$(CC)" "$(CFLAGS)" "$(LINKFLAGS)" "$(LIBS1)" "$(FULLLIBS2)" "$(EXT)" "$(DBG)" # The following files are generated automatically # embed.pl: proto.h embed.h embedvar.h perlapi.h perlapi.c @@ -737,12 +675,6 @@ archify : all @ Write Sys$Output " 2. Delete Miniperl$(E)" # CORE subset for MakeMaker, so we can build Perl without sources -# Should move to VMS installperl when we get one -.ifdef SOCKET -$(SOCKARCH) : $(SOCKH) - @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) - Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) -.endif $(ARCHCORE)av.h : av.h @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) @@ -921,10 +853,6 @@ $(ARCHAUTO)time.stamp : #util$(O) : util.c # $(CC) $(CORECFLAGS) $(MMS$SOURCE) # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE -.ifdef SOCKET -$(SOCKO) : $(SOCKC) $(h) - $(CC) $(CORECFLAGS) $(MMS$SOURCE) -.endif av$(O) : av.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) deb$(O) : deb.c $(h) @@ -1008,16 +936,16 @@ util$(O) : util.c $(h) vms$(O) : vms.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) -[.x2p]hash$(O) : [.x2p]hash.c [.x2p]EXTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(SOCKH) +[.x2p]hash$(O) : [.x2p]hash.c [.x2p]EXTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(CC) $(X2PCFLAGS) $(MMS$SOURCE) -[.x2p]str$(O) : [.x2p]str.c [.x2p]EXTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(SOCKH) +[.x2p]str$(O) : [.x2p]str.c [.x2p]EXTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(CC) $(X2PCFLAGS) $(MMS$SOURCE) -[.x2p]util$(O) : [.x2p]util.c [.x2p]EXTERN.h [.x2p]INTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(SOCKH) +[.x2p]util$(O) : [.x2p]util.c [.x2p]EXTERN.h [.x2p]INTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(CC) $(X2PCFLAGS) $(MMS$SOURCE) -[.x2p]walk$(O) : [.x2p]walk.c [.x2p]EXTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(SOCKH) +[.x2p]walk$(O) : [.x2p]walk.c [.x2p]EXTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h [.x2p]util.h config.h handy.h vmsish.h $(CC) $(X2PCFLAGS) $(MMS$SOURCE) # End of automatically generated make dependencies @@ -1030,7 +958,7 @@ vms.c : [.vms]vms.c Copy/Log/Noconfirm [.vms]vms.c [] $(CRTL) : $(MAKEFILE) - @ @[.vms]genopt "$(CRTL)/Write" "|" "$(LIBS1)|$(FULLLIBS2)|$(SOCKLIB)" + @ @[.vms]genopt "$(CRTL)/Write" "|" "$(LIBS1)|$(FULLLIBS2)" ok : $(utils) $(MINIPERL) lib/perlbug.com -ok -s "(UNINSTALLED)" @@ -1094,8 +1022,6 @@ clean : tidy cleantest - $(MINIPERL) make_ext.pl "MAKE=$(MMS)" "--all" "--target=clean" - If F$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*/Exclude=PerlShr_*.Opt - If F$Search("[...]*$(O);*") .nes."" Then Delete/NoConfirm/Log [...]*$(O);* - - If F$Search(F$Parse("Sys$Disk:[]","$(SOCKH)")).nes."" Then Delete/NoConfirm/Log $(SOCKH);* - - If F$Search(F$Parse("Sys$Disk:[]","$(SOCKC)")).nes."" Then Delete/NoConfirm/Log $(SOCKC);* - If F$Search("vmsish.h").nes."" Then Delete/NoConfirm/Log vmsish.h;* - If F$Search("vms.c") .nes."" Then Delete/NoConfirm/Log vms.c;* - If F$Search("perlmain.c") .nes."" Then Delete/NoConfirm/Log perlmain.c;* diff --git a/vms/sockadapt.c b/vms/sockadapt.c deleted file mode 100644 index e7b207cbdc..0000000000 --- a/vms/sockadapt.c +++ /dev/null @@ -1,130 +0,0 @@ -/* sockadapt.c - * - * Author: Charles Bailey bailey@newman.upenn.edu - * Last Revised: 4-Mar-1997 - * - * This file should contain stubs for any of the TCP/IP functions perl5 - * requires which are not supported by your TCP/IP stack. These stubs - * can attempt to emulate the routine in question, or can just return - * an error status or cause perl to die. - * - * This version is set up for perl5 with UCX (or emulation) via - * the DECCRTL or SOCKETSHR 0.9D. - */ - -#include "EXTERN.h" -#include "perl.h" - -#if defined(__DECC) && defined(__DECC_VER) && (__DECC_VER >= 50200000) -# define __sockadapt_my_hostent_t __struct_hostent_ptr32 -# define __sockadapt_my_netent_t __struct_netent_ptr32 -# define __sockadapt_my_servent_t __struct_servent_ptr32 -# define __sockadapt_my_addr_t __in_addr_t -# define __sockadapt_my_name_t const char * -#else -# define __sockadapt_my_hostent_t struct hostent * -# define __sockadapt_my_netent_t struct netent * -# define __sockadapt_my_servent_t struct servent * -# define __sockadapt_my_addr_t long -# define __sockadapt_my_name_t char * -#endif - -/* We have these on VMS 7.0 and above, or on Dec C 5.6 if it's providing */ -/* the 7.0 DECC RTL */ -#if ((((__VMS_VER >= 70000000) && (__DECC_VER >= 50200000)) || (__CRTL_VER >= 70000000)) && defined(DECCRTL_SOCKETS)) -#else -void setnetent(int stayopen) { - dTHX; - Perl_croak(aTHX_ "Function \"setnetent\" not implemented in this version of perl"); -} -void endnetent() { - dTHX; - Perl_croak(aTHX_ "Function \"endnetent\" not implemented in this version of perl"); -} -#endif - -#if defined(DECCRTL_SOCKETS) - /* Use builtin socket interface in DECCRTL and - * UCX emulation in whatever TCP/IP stack is present. - */ - -#if ((__VMS_VER >= 70000000) && (__DECC_VER >= 50200000)) || (__CRTL_VER >= 70000000) -#else - void sethostent(int stayopen) { - dTHX; - Perl_croak(aTHX_ "Function \"sethostent\" not implemented in this version of perl"); - } - void endhostent() { - dTHX; - Perl_croak(aTHX_ "Function \"endhostent\" not implemented in this version of perl"); - } - void setprotoent(int stayopen) { - dTHX; - Perl_croak(aTHX_ "Function \"setprotoent\" not implemented in this version of perl"); - } - void endprotoent() { - dTHX; - Perl_croak(aTHX_ "Function \"endprotoent\" not implemented in this version of perl"); - } - void setservent(int stayopen) { - dTHX; - Perl_croak(aTHX_ "Function \"setservent\" not implemented in this version of perl"); - } - void endservent() { - dTHX; - Perl_croak(aTHX_ "Function \"endservent\" not implemented in this version of perl"); - } - __sockadapt_my_hostent_t gethostent() { - dTHX; - Perl_croak(aTHX_ "Function \"gethostent\" not implemented in this version of perl"); - return (__sockadapt_my_hostent_t )NULL; /* Avoid MISSINGRETURN warning, not reached */ - } - __sockadapt_my_servent_t getservent() { - dTHX; - Perl_croak(aTHX_ "Function \"getservent\" not implemented in this version of perl"); - return (__sockadapt_my_servent_t )NULL; /* Avoid MISSINGRETURN warning, not reached */ - } -#endif - -#else - /* Work around things missing/broken in SOCKETSHR. */ - -__sockadapt_my_netent_t getnetbyaddr( __sockadapt_my_addr_t net, int type) { - dTHX; - Perl_croak(aTHX_ "Function \"getnetbyaddr\" not implemented in this version of perl"); - return (struct netent *)NULL; /* Avoid MISSINGRETURN warning, not reached */ -} -__sockadapt_my_netent_t getnetbyname( __sockadapt_my_name_t name) { - dTHX; - Perl_croak(aTHX_ "Function \"getnetbyname\" not implemented in this version of perl"); - return (struct netent *)NULL; /* Avoid MISSINGRETURN warning, not reached */ -} -__sockadapt_my_netent_t getnetent() { - dTHX; - Perl_croak(aTHX_ "Function \"getnetent\" not implemented in this version of perl"); - return (__sockadapt_my_netent_t )NULL; /* Avoid MISSINGRETURN warning, not reached */ -} - -/* Some TCP/IP implementations seem to return success, when getpeername() - * is called on a UDP socket, but the port and in_addr are all zeroes. - */ - -int my_getpeername(int sock, struct sockaddr *addr, int *addrlen) { - static char nowhere[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; - int rslt; - - rslt = si_getpeername(sock, addr, addrlen); - - /* Just pass an error back up the line */ - if (rslt) return rslt; - - /* If the call succeeded, make sure we don't have a zeroed port/addr */ - if (addr->sa_family == AF_INET && - !memcmp((char *)addr + sizeof(u_short), nowhere, - sizeof(u_short) + sizeof(struct in_addr))) { - rslt = -1; - SETERRNO(ENOTCONN,SS$_CLEARED); - } - return rslt; -} -#endif /* SOCKETSHR stuff */ diff --git a/vms/sockadapt.h b/vms/sockadapt.h deleted file mode 100644 index 97a49f8917..0000000000 --- a/vms/sockadapt.h +++ /dev/null @@ -1,188 +0,0 @@ -/* sockadapt.h - * - * Authors: Charles Bailey bailey@newman.upenn.edu - * David Denholm denholm@conmat.phys.soton.ac.uk - * Last Revised: 4-Mar-1997 - * - * This file should include any other header files and procide any - * declarations, typedefs, and prototypes needed by perl for TCP/IP - * operations. - * - * This version is set up for perl5 with socketshr 0.9D TCP/IP support. - */ - -#ifndef __SOCKADAPT_INCLUDED -#define __SOCKADAPT_INCLUDED 1 - -#if defined(DECCRTL_SOCKETS) - /* Use builtin socket interface in DECCRTL and - * UCX emulation in whatever TCP/IP stack is present. - * Provide prototypes for missing routines; stubs are - * in sockadapt.c. - */ -# include <socket.h> -# include <inet.h> -# include <in.h> -# include <netdb.h> -#if ((__VMS_VER >= 70000000) && (__DECC_VER >= 50200000)) || (__CRTL_VER >= 70000000) -#else - void sethostent(int); - void endhostent(void); - void setnetent(int); - void endnetent(void); - void setprotoent(int); - void endprotoent(void); - void setservent(int); - void endservent(void); -#endif -# if defined(__DECC) && defined(__DECC_VER) && (__DECC_VER >= 50200000) && !defined(Sock_size_t) -# define Sock_size_t unsigned int -# endif - -#else - /* Pull in SOCKETSHR's header, and set up structures for - * gcc, whose basic header file set doesn't include the - * TCP/IP stuff. - */ - - -#ifdef __GNU_CC__ - -/* we may not have netdb.h etc, so lets just do this here - div */ -/* no harm doing this for all .c files - needed only by pp_sys.c */ - -struct hostent { - char *h_name; /* official name of host */ - char **h_aliases; /* alias list */ - int h_addrtype; /* host address type */ - int h_length; /* length of address */ - char **h_addr_list; /* address */ -}; -#ifdef h_addr -# undef h_addr -#endif -#define h_addr h_addr_list[0] - -struct protoent { - char *p_name; /* official protocol name */ - char **p_aliases; /* alias list */ - int p_proto; /* protocol # */ -}; - -struct servent { - char *s_name; /* official service name */ - char **s_aliases; /* alias list */ - int s_port; /* port # */ - char *s_proto; /* protocol to use */ -}; - -struct in_addr { - unsigned long s_addr; -}; - -struct sockaddr { - unsigned short sa_family; /* address family */ - char sa_data[14]; /* up to 14 bytes of direct address */ -}; - -/* - * Socket address, internet style. - */ -struct sockaddr_in { - short sin_family; - unsigned short sin_port; - struct in_addr sin_addr; - char sin_zero[8]; -}; - -struct timeval { - long tv_sec; - long tv_usec; -}; - -struct netent { - char *n_name; - char **n_aliases; - int n_addrtype; - long n_net; -}; - -/* Since socketshr.h won't declare function prototypes unless it thinks - * the system headers have already been included, we convince it that - * this is the case. - */ - -#ifndef AF_INET -# define AF_INET 2 -#endif -#ifndef IPPROTO_TCP -# define IPPROTO_TCP 6 -#endif -#ifndef __INET_LOADED -# define __INET_LOADED -#endif -#ifndef __NETDB_LOADED -# define __NETDB_LOADED -#endif - -/* Finally, we provide prototypes for routines not supported by SocketShr, - * so that the stubs in sockadapt.c won't cause complaints about - * undeclared routines. - */ - -struct netent *getnetbyaddr( long net, int type); -struct netent *getnetbyname( char *name); -struct netent *getnetent(); -void setnetent(int); -void endnetent(); - -#else /* !__GNU_CC__ */ - -/* DECC and VAXC have socket headers in the system set; they're for UCX, but - * we'll assume that the actual calling sequence is identical across the - * various TCP/IP stacks; these routines are pretty standard. - */ -#include <socket.h> -#include <in.h> -#include <inet.h> - -/* SocketShr doesn't support these routines, but the DECC RTL contains - * stubs with these names, designed to be used with the UCX socket - * library. We avoid linker collisions by substituting new names. - */ -#define getnetbyaddr no_getnetbyaddr -#define getnetbyname no_getnetbyname -#define getnetent no_getnetent -#define setnetent no_setnetent -#define endnetent no_endnetent - -#include <netdb.h> -#endif - -/* We don't have these two in the system headers. */ -void setnetent(int); -void endnetent(); - -#include <socketshr.h> -/* socketshr.h from SocketShr 0.9D doesn't alias fileno; its comments say - * that the CRTL version works OK. This isn't the case, at least with - * VAXC, so we use the SocketShr version. - * N.B. This means that sockadapt.h must be included *after* stdio.h. - * This is presently the case for Perl. - */ -#ifdef fileno -# undef fileno -#endif -#define fileno si_fileno -int si_fileno(FILE *); - - -/* Catch erroneous results for UDP sockets -- see sockadapt.c */ -#ifdef getpeername -# undef getpeername -#endif -#define getpeername my_getpeername -int my_getpeername (int, struct sockaddr *, int *); - -#endif /* SOCKETSHR stuff */ -#endif /* include guard */ diff --git a/vms/vmsish.h b/vms/vmsish.h index e18758d7b6..f66fc5d9a2 100644 --- a/vms/vmsish.h +++ b/vms/vmsish.h @@ -348,7 +348,6 @@ struct interp_intern { __ckvms_sts,__FILE__,__LINE__); lib$signal(__ckvms_sts); } } STMT_END #ifdef VMS_DO_SOCKETS -#include "sockadapt.h" #define PERL_SOCK_SYSREAD_IS_RECV #define PERL_SOCK_SYSWRITE_IS_SEND #endif |