Revision: | 2.4 |
Committed: | Fri Jun 27 06:53:21 2003 UTC (21 years, 10 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 | } |