diff options
author | Paul Green <Paul.Green@stratus.com> | 2002-03-28 02:46:00 -0500 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-03-28 13:47:14 +0000 |
commit | a5f25d7aeb90fd429ad81529bb602f402d5f9724 (patch) | |
tree | 378c53bb9463aa9c9a15e5459c90bb41b3adc7d2 | |
parent | bc45ce41590a23464acf3b62efacccf60e155a7c (diff) | |
download | perl-a5f25d7aeb90fd429ad81529bb602f402d5f9724.tar.gz |
Neuter socketpair on Stratus VOS
Message-Id: <200203281246.HAA14426@mailhub1.stratus.com>
p4raw-id: //depot/perl@15582
-rw-r--r-- | ext/Socket/socketpair.t | 3 | ||||
-rw-r--r-- | hints/vos.sh | 3 | ||||
-rw-r--r-- | vos/vos.c | 21 | ||||
-rw-r--r-- | vos/vosish.h | 3 |
4 files changed, 26 insertions, 4 deletions
diff --git a/ext/Socket/socketpair.t b/ext/Socket/socketpair.t index d70f1642c4..6549eae062 100644 --- a/ext/Socket/socketpair.t +++ b/ext/Socket/socketpair.t @@ -57,7 +57,8 @@ if( !$Config{d_alarm} ) { } else { # This should fail but not die if there is real socketpair eval {socketpair LEFT, RIGHT, -1, -1, -1}; - if ($@ =~ /^Unsupported socket function "socketpair" called/) { + if ($@ =~ /^Unsupported socket function "socketpair" called/ || + $! =~ /^The operation requested is not supported./) { # Stratus VOS plan skip_all => 'No socketpair (real or emulated)'; } else { eval {AF_UNIX}; diff --git a/hints/vos.sh b/hints/vos.sh index f3bd74d7e3..f9b9a88986 100644 --- a/hints/vos.sh +++ b/hints/vos.sh @@ -91,3 +91,6 @@ dont_use_nlink=define # Tell Configure where to find the hosts file. hostcat="cat /system/stcp/hosts" + +# VOS does not have socketpair() but we supply one in vos.c +d_sockpair="define" @@ -1,14 +1,17 @@ /* Beginning of modification history */ /* Written 02-01-02 by Nick Ing-Simmons (nick@ing-simmons.net) */ +/* Modified 02-03-27 by Paul Green (Paul.Green@stratus.com) to + add socketpair() dummy. */ /* End of modification history */ -/* VOS doesn't supply a truncate function, so we build one up - from the available POSIX functions. */ - +#include <errno.h> #include <fcntl.h> #include <sys/types.h> #include <unistd.h> +/* VOS doesn't supply a truncate function, so we build one up + from the available POSIX functions. */ + int truncate(const char *path, off_t len) { @@ -20,3 +23,15 @@ truncate(const char *path, off_t len) } return code; } + +/* VOS doesn't implement AF_UNIX (AF_LOCAL) style sockets, and + the perl emulation of them hangs on VOS (due to stcp-1257), + so we supply this version that always fails. */ + +int +socketpair (int family, int type, int protocol, int fd[2]) { + fd[0] = 0; + fd[1] = 0; + errno = ENOSYS; + return -1; +} diff --git a/vos/vosish.h b/vos/vosish.h index 5befc6586a..dfddd31fd7 100644 --- a/vos/vosish.h +++ b/vos/vosish.h @@ -9,3 +9,6 @@ extern int ioctl (int fd, int request, ...); /* Specify a prototype for truncate() since we are supplying one. */ extern int truncate (const char *path, off_t len); + +/* Specify a prototype for socketpair() since we supplying one. */ +extern int socketpair (int family, int type, int protocol, int fd[2]); |