| Revision: | 2.4 |
| Committed: | Fri Jun 27 06:53:21 2003 UTC (22 years, 4 months ago) by greg |
| Content type: | text/plain |
| Branch: | MAIN |
| Changes since 2.3: | +3 -3 lines |
| Log Message: | Broke standard.h into rtio.h, rterror.h, rtmath.h, and rtmisc.h |
| # | User | Rev | Content |
|---|---|---|---|
| 1 | greg | 1.1 | #ifndef lint |
| 2 | greg | 2.4 | static const char RCSid[] = "$Id: fgetline.c,v 2.3 2003/02/25 02:47:21 greg Exp $"; |
| 3 | greg | 1.1 | #endif |
| 4 | /* | ||
| 5 | greg | 1.2 | * fgetline.c - read line with escaped newlines. |
| 6 | greg | 1.1 | * |
| 7 | greg | 2.4 | * External symbols declared in rtio.h |
| 8 | greg | 2.2 | */ |
| 9 | |||
| 10 | greg | 2.3 | #include "copyright.h" |
| 11 | greg | 1.1 | |
| 12 | greg | 2.4 | #include "rtio.h" |
| 13 | greg | 1.1 | |
| 14 | |||
| 15 | char * | ||
| 16 | fgetline(s, n, fp) /* read in line with escapes, elide final newline */ | ||
| 17 | char *s; | ||
| 18 | greg | 1.2 | int n; |
| 19 | register FILE *fp; | ||
| 20 | greg | 1.1 | { |
| 21 | greg | 1.2 | register char *cp = s; |
| 22 | register int c = EOF; | ||
| 23 | greg | 1.1 | |
| 24 | greg | 1.2 | while (--n > 0 && (c = getc(fp)) != EOF) { |
| 25 | greg | 2.2 | if (c == '\r') |
| 26 | continue; | ||
| 27 | greg | 1.2 | if (c == '\n' && (cp == s || cp[-1] != '\\')) |
| 28 | break; | ||
| 29 | greg | 1.1 | *cp++ = c; |
| 30 | } | ||
| 31 | greg | 1.2 | if (cp == s && c == EOF) |
| 32 | greg | 1.1 | return(NULL); |
| 33 | greg | 1.2 | *cp = '\0'; |
| 34 | greg | 1.1 | return(s); |
| 35 | } |