comparison lib-src/gnuslib.c @ 108:360340f9fd5f r20-1b6

Import from CVS: tag r20-1b6
author cvs
date Mon, 13 Aug 2007 09:18:39 +0200
parents 131b0175ea99
children 538048ae2ab8
comparison
equal deleted inserted replaced
107:523141596bda 108:360340f9fd5f
31 31
32 #if 0 32 #if 0
33 static char rcsid [] = "!Header: gnuslib.c,v 2.4 95/02/16 11:57:37 arup alpha !"; 33 static char rcsid [] = "!Header: gnuslib.c,v 2.4 95/02/16 11:57:37 arup alpha !";
34 #endif 34 #endif
35 35
36 #include <errno.h>
36 #include "gnuserv.h" 37 #include "gnuserv.h"
37 38
38 #ifdef SYSV_IPC 39 #ifdef SYSV_IPC
39 static int connect_to_ipc_server (void); 40 static int connect_to_ipc_server (void);
40 #endif 41 #endif
214 left -= len; 215 left -= len;
215 msg += len; 216 msg += len;
216 }; /* while */ 217 }; /* while */
217 #endif 218 #endif
218 } /* send_string */ 219 } /* send_string */
220
221 /*
222 read_line -- read a \n terminated line from a socket
223 */
224 int read_line(s,dest)
225 int s;
226 char *dest;
227 {
228 char *index = NULL;
229 int length;
230 int offset=0;
231 char buffer[GSERV_BUFSZ+1];
232
233 while ((length=read(s,buffer+offset,1)>0) && buffer[offset]!='\n'
234 && buffer[offset] != EOT_CHR) {
235 offset += length;
236 if (offset >= GSERV_BUFSZ)
237 break;
238 }
239 buffer[offset] = '\0';
240 strcpy(dest,buffer);
241 return 1;
242 } /* read_line */
219 #endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */ 243 #endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */
220 244
221 245
222 #ifdef UNIX_DOMAIN_SOCKETS 246 #ifdef UNIX_DOMAIN_SOCKETS
223 /* 247 /*
403 buffer[length] = '\0'; 427 buffer[length] = '\0';
404 if (echo) fputs(buffer,stdout); 428 if (echo) fputs(buffer,stdout);
405 add_newline = (buffer[length-1] != '\n'); 429 add_newline = (buffer[length-1] != '\n');
406 }; /* while */ 430 }; /* while */
407 #else 431 #else
408 while ((length = read(s,buffer,GSERV_BUFSZ)) > 0) { 432 while ((length = read(s,buffer,GSERV_BUFSZ)) > 0 ||
409 buffer[length] = '\0'; 433 (length == -1 && errno == EINTR)) {
410 if (echo) { 434 if (length) {
411 fputs(buffer,stdout); 435 buffer[length] = '\0';
412 add_newline = (buffer[length-1] != '\n'); 436 if (echo) {
437 fputs(buffer,stdout);
438 add_newline = (buffer[length-1] != '\n');
439 }; /* if */
413 }; /* if */ 440 }; /* if */
414 }; /* while */ 441 }; /* while */
415 #endif 442 #endif
416 443
417 if (echo && add_newline) putchar('\n'); 444 if (echo && add_newline) putchar('\n');