Mercurial > hg > xemacs-beta
comparison lib-src/gnuslib.c @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | ec9a17fef872 |
children | 360340f9fd5f |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
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> | |
37 #include "gnuserv.h" | 36 #include "gnuserv.h" |
38 | 37 |
39 #ifdef SYSV_IPC | 38 #ifdef SYSV_IPC |
40 static int connect_to_ipc_server (void); | 39 static int connect_to_ipc_server (void); |
41 #endif | 40 #endif |
215 left -= len; | 214 left -= len; |
216 msg += len; | 215 msg += len; |
217 }; /* while */ | 216 }; /* while */ |
218 #endif | 217 #endif |
219 } /* send_string */ | 218 } /* 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 */ | |
243 #endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */ | 219 #endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */ |
244 | 220 |
245 | 221 |
246 #ifdef UNIX_DOMAIN_SOCKETS | 222 #ifdef UNIX_DOMAIN_SOCKETS |
247 /* | 223 /* |
427 buffer[length] = '\0'; | 403 buffer[length] = '\0'; |
428 if (echo) fputs(buffer,stdout); | 404 if (echo) fputs(buffer,stdout); |
429 add_newline = (buffer[length-1] != '\n'); | 405 add_newline = (buffer[length-1] != '\n'); |
430 }; /* while */ | 406 }; /* while */ |
431 #else | 407 #else |
432 while ((length = read(s,buffer,GSERV_BUFSZ)) > 0 || | 408 while ((length = read(s,buffer,GSERV_BUFSZ)) > 0) { |
433 (length == -1 && errno == EINTR)) { | 409 buffer[length] = '\0'; |
434 if (length) { | 410 if (echo) { |
435 buffer[length] = '\0'; | 411 fputs(buffer,stdout); |
436 if (echo) { | 412 add_newline = (buffer[length-1] != '\n'); |
437 fputs(buffer,stdout); | |
438 add_newline = (buffer[length-1] != '\n'); | |
439 }; /* if */ | |
440 }; /* if */ | 413 }; /* if */ |
441 }; /* while */ | 414 }; /* while */ |
442 #endif | 415 #endif |
443 | 416 |
444 if (echo && add_newline) putchar('\n'); | 417 if (echo && add_newline) putchar('\n'); |