From 151d4531b87fc8d27902e7d81c4f22405a044cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Mon, 19 May 1997 02:42:29 -0700 Subject: [PATCH] pike_make_pipe added Rev: src/modules/files/configure.in:1.15 Rev: src/modules/files/file.c:1.38 --- src/modules/files/configure.in | 41 +++++++++++++++++++++++++++++++++- src/modules/files/file.c | 9 ++++++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/modules/files/configure.in b/src/modules/files/configure.in index 5f0033be19..8d3b02504c 100644 --- a/src/modules/files/configure.in +++ b/src/modules/files/configure.in @@ -8,7 +8,7 @@ AC_HAVE_HEADERS(arpa/inet.h sys/socketvar.h netinet/in.h \ AC_HEADER_DIRENT AC_CHECK_LIB(socket, socket) -AC_HAVE_FUNCS(socketpair getwd perror fork1 readdir_r) +AC_HAVE_FUNCS(getwd perror fork1 readdir_r) if test x$ac_cv_func_readdir_r = xyes ; then AC_MSG_CHECKING(if readdir_r takes 2(Solaris & HPUX) or 3(Posix) arguments) @@ -127,6 +127,45 @@ else AC_MSG_RESULT(no) fi +AC_MSG_CHECKING(for select on AF_UNIX sockets) +AC_CACHE_VAL(pike_cv_select_on_unix_sockets, +[ +AC_TRY_RUN([ +#include <stdio.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <signal.h> +#include <netinet/in.h> +#include <errno.h> +#ifdef HAVE_SYS_SELECT_H +#include <sys/select.h> +#endif + +int main() +{ + fd_set tmp; + int fds[2]; + if(socketpair(AF_UNIX, SOCK_STREAM, 0, fds)<0) + exit(1); + + while(write(fds[0],"foo",3)<0 && errno==EINTR); + + FD_ZERO(&tmp); + FD_SET(fds[1], &tmp); + alarm(5); + if(select(fds[1]+1,&tmp, 0,0,0)>0 && FD_ISSET(fds[1])) + exit(0); + exit(1); +} + +],pike_cv_select_on_unix_sockets=yes,pike_cv_select_on_unix_sockets=no) +]) + +AC_MSG_RESULT($pike_cv_select_on_unix_sockets) +if test x$pike_cv_select_on_unix_sockets = xyes ; then + AC_DEFINE(HAVE_SOCKETPAIR) +fi + AC_MSG_CHECKING(size of socket buffers) AC_CACHE_VAL(pike_cv_socket_buffer_max, diff --git a/src/modules/files/file.c b/src/modules/files/file.c index c1cba2ced7..aa3d9881b5 100644 --- a/src/modules/files/file.c +++ b/src/modules/files/file.c @@ -6,7 +6,7 @@ #define READ_BUFFER 8192 #include "global.h" -RCSID("$Id: file.c,v 1.37 1997/05/05 05:29:37 nisse Exp $"); +RCSID("$Id: file.c,v 1.38 1997/05/19 09:42:29 hubbe Exp $"); #include "types.h" #include "interpret.h" #include "svalue.h" @@ -1465,7 +1465,7 @@ void pike_module_init() add_function("open",file_open,"function(string,string:int)",0); add_function("close",file_close,"function(string|void:int)",0); - add_function("read",file_read,"function(int,int|void:int|string)",0); + add_function("read",file_read,"function(int|void,int|void:int|string)",0); add_function("write",file_write,"function(string:int)",0); add_function("seek",file_seek,"function(int:int)",0); @@ -1511,3 +1511,8 @@ void pike_module_init() add_gc_callback(mark_ids, 0, 0); } +/* Used from backend */ +int pike_make_pipe(int *fds) +{ + return socketpair(AF_UNIX, SOCK_STREAM, 0, fds); +} -- GitLab