Mercurial > hg > xemacs-beta
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'); |