Changeset 876

Show
Ignore:
Timestamp:
04/15/08 11:50:27 (7 months ago)
Author:
michux
Message:

add signal handler, improve error check

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/plugin_fifo.c

    r875 r876  
    152152{ 
    153153    char buf[FIFO_BUFFER_SIZE]; 
    154     int i, bytes = 1; 
     154    unsigned int i; 
     155    int bytes = 1; 
    155156    memset(buf, 0, FIFO_BUFFER_SIZE); 
    156157    strcat(buf, "ERROR"); 
     158 
    157159    if (checkFifo() == 0) { 
    158160  memset(buf, 0, FIFO_BUFFER_SIZE); 
    159   while (bytes > 0 && errno != EINTR) { 
     161 
     162  while (bytes > 0 && errno != EINTR) {  
    160163      bytes = read(fd.input, buf, FIFO_BUFFER_SIZE); 
    161164  } 
    162165   
    163   if (bytes < 0) { 
     166  if (bytes < 0 || errno > 0) { 
    164167      error("[FIFO] Error %i: %s", errno, strerror(errno)); 
    165168  } else { 
     
    173176  } 
    174177    }  
    175  
    176178    /* store result */ 
    177179    SetResult(&result, R_STRING, msg); 
     
    189191  return -1; 
    190192    } 
     193 
     194    /* ignore broken pipe */ 
     195    signal(SIGPIPE, SIG_IGN); 
     196     
    191197    memset(msg, 0, FIFO_BUFFER_SIZE); 
    192198    AddFunction("fifo::read", 0, fiforead);