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