diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c
index 664bcfe76999b2b82e58aac7af1efe8c0e79454e..058ec9e270ced3682e97bc62b0b5c2d731fa34ea 100644
--- a/src/modules/files/efuns.c
+++ b/src/modules/files/efuns.c
@@ -162,7 +162,7 @@ void f_mkdir(INT32 args)
   push_int(i);
 }
 
-#undef HAVE_REDDIR_R
+#undef HAVE_READDIR_R
 #if defined(HAVE_SOLARIS_READDIR_R) || defined(HAVE_SOLARIS_HPUX_R) || \
     defined(HAVE_POSIX_R)
 #define HAVE_READDIR_R
@@ -349,6 +349,7 @@ void f_getcwd(INT32 args)
 
 void f_fork(INT32 args)
 {
+  do_set_close_on_exec();
   pop_n_elems(args);
 #if defined(HAVE_FORK1) && defined(_REENTRANT)
   push_int(fork1());
@@ -438,9 +439,11 @@ void f_exece(INT32 args)
     env=environ;
   }
 
-  set_close_on_exec(0,0);
-  set_close_on_exec(1,0);
-  set_close_on_exec(2,0);
+  my_set_close_on_exec(0,0);
+  my_set_close_on_exec(1,0);
+  my_set_close_on_exec(2,0);
+
+  do_set_close_on_exec();
 
   execve(argv[0],argv,env);
 
diff --git a/src/modules/files/socket.c b/src/modules/files/socket.c
index 3ebf4a9b1a79b6ebea9b822768d69f97ca7ec73a..1d85a1faf66fc59febf15d580aeeca415f4683ca 100644
--- a/src/modules/files/socket.c
+++ b/src/modules/files/socket.c
@@ -191,7 +191,7 @@ static void port_bind(INT32 args)
     return;
   }
 
-  set_close_on_exec(fd,1);
+  my_set_close_on_exec(fd,1);
 
   MEMSET((char *)&addr,0,sizeof(struct sockaddr_in));
 
@@ -298,10 +298,7 @@ static void port_accept(INT32 args)
     return;
   }
 
-  tmp=1;
-  setsockopt(fd,SOL_SOCKET, SO_KEEPALIVE, (char *)&tmp, sizeof(tmp));
-
-  set_close_on_exec(fd,1);
+  my_set_close_on_exec(fd,1);
   o=file_make_object_from_fd(fd,FILE_READ | FILE_WRITE);
   
   pop_n_elems(args);