diff options
Diffstat (limited to 'src/interface.c')
-rw-r--r-- | src/interface.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/interface.c b/src/interface.c index 9499d1049..83699e2f0 100644 --- a/src/interface.c +++ b/src/interface.c @@ -84,14 +84,13 @@ void openInterface(Interface * interface, int fd) { assert(interface->open==0); - blockSignals(); interface->bufferLength = 0; interface->fd = fd; /* fcntl(interface->fd,F_SETOWN,(int)getpid()); */ - flags = fcntl(fd,F_GETFL); + while((flags = fcntl(fd,F_GETFL))<0 && errno==EINTR); flags|=O_NONBLOCK; - fcntl(interface->fd,F_SETFL,flags); - interface->fp = fdopen(fd,"rw"); + while(fcntl(interface->fd,F_SETFL,flags)<0 && errno==EINTR); + while((interface->fp = fdopen(fd,"rw"))==NULL && errno==EINTR); interface->open = 1; interface->lastTime = time(NULL); interface->commandList = NULL; @@ -121,8 +120,6 @@ void openInterface(Interface * interface, int fd) { #endif interface->outBuffer = malloc(interface->outBufSize); - unblockSignals(); - myfprintf(interface->fp,"%s %s %s\n",COMMAND_RESPOND_OK,GREETING, VERSION); printInterfaceOutBuffer(interface); |