ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/fgetword.c
Revision: 2.4
Committed: Fri Jun 27 06:53:21 2003 UTC (20 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

File Contents

# Content
1 #ifndef lint
2 static const char RCSid[] = "$Id: fgetword.c,v 2.3 2003/02/25 02:47:21 greg Exp $";
3 #endif
4 /*
5 * Read white space separated words from stream
6 *
7 * External symbols declared in rtio.h
8 */
9
10 #include "copyright.h"
11
12 #include "rtio.h"
13
14 #include <ctype.h>
15
16
17 char *
18 fgetword(s, n, fp) /* get (quoted) word up to n-1 characters */
19 char *s;
20 int n;
21 register FILE *fp;
22 {
23 int quote = '\0';
24 register char *cp;
25 register int c;
26 /* skip initial white space */
27 do
28 c = getc(fp);
29 while (isspace(c));
30 /* check for quote */
31 if ((c == '"' | c == '\'')) {
32 quote = c;
33 c = getc(fp);
34 }
35 /* check for end of file */
36 if (c == EOF)
37 return(NULL);
38 /* get actual word */
39 cp = s;
40 do {
41 if (--n <= 0) /* check length limit */
42 break;
43 *cp++ = c;
44 c = getc(fp);
45 } while (c != EOF && !(quote ? c==quote : isspace(c)));
46 *cp = '\0';
47 if ((c != EOF & !quote)) /* replace space */
48 ungetc(c, fp);
49 return(s);
50 }