ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/words.c
(Generate patch)

Comparing ray/src/common/words.c (file contents):
Revision 2.7 by greg, Mon Mar 10 17:26:26 2003 UTC vs.
Revision 2.10 by greg, Fri Feb 18 00:40:25 2011 UTC

# Line 1 | Line 1
1   #ifndef lint
2 < static const char RCSid[] = "$Id";
2 > static const char RCSid[] = "$Id$";
3   #endif
4   /*
5   * Routines for recognizing and moving about words in strings.
# Line 12 | Line 12 | static const char RCSid[] = "$Id";
12   #include  <ctype.h>
13   #include  <string.h>
14  
15 + #include  "rtio.h"
16  
17   char *
18 < atos(rs, nb, s)                 /* get word from string, returning rs */
18 < char  *rs;
19 < register int  nb;
20 < register char  *s;
18 > atos(char *rs, int nb, char *s)         /* get word from string, returning rs */
19   {
20          register char  *cp = rs;
21  
# Line 31 | Line 29 | register char  *s;
29  
30  
31   char *
32 < nextword(cp, nb, s)             /* get (quoted) word, returning new s */
35 < register char  *cp;
36 < register int  nb;
37 < register char  *s;
32 > nextword(char *cp, int nb, char *s)     /* get (quoted) word, returning new s */
33   {
34          int     quote = 0;
35  
# Line 58 | Line 53 | register char  *s;
53  
54  
55   char *
56 < sskip(s)                        /* skip word in string, leaving on space */
62 < register char  *s;
56 > sskip(char *s)                  /* skip word in string, leaving on space */
57   {
58          while (isspace(*s))
59                  s++;
# Line 70 | Line 64 | register char  *s;
64  
65  
66   char *
67 < sskip2(s, n)                    /* skip word(s) in string, leaving on word */
74 < register char  *s;
75 < register int    n;
67 > sskip2(char *s, int n)          /* skip word(s) in string, leaving on word */
68   {
69          while (isspace(*s))
70                  s++;
# Line 87 | Line 79 | register int   n;
79  
80  
81   char *
82 < iskip(s)                        /* skip integer in string */
91 < register char  *s;
82 > iskip(char *s)                  /* skip integer in string */
83   {
84          while (isspace(*s))
85                  s++;
# Line 104 | Line 95 | register char  *s;
95  
96  
97   char *
98 < fskip(s)                        /* skip float in string */
108 < register char  *s;
98 > fskip(char *s)                  /* skip float in string */
99   {
100          register char  *cp;
101  
# Line 130 | Line 120 | register char  *s;
120  
121  
122   int
123 < isint(s)                        /* check integer format */
134 < char  *s;
123 > isint(char *s)                  /* check integer format */
124   {
125          register char  *cp;
126  
# Line 141 | Line 130 | char  *s;
130  
131  
132   int
133 < isintd(s, ds)                   /* check integer format with delimiter set */
145 < char  *s, *ds;
133 > isintd(char *s, char *ds)       /* check integer format with delimiter set */
134   {
135          register char  *cp;
136  
# Line 152 | Line 140 | char  *s, *ds;
140  
141  
142   int
143 < isflt(s)                        /* check float format */
156 < char  *s;
143 > isflt(char *s)                  /* check float format */
144   {
145          register char  *cp;
146  
# Line 163 | Line 150 | char  *s;
150  
151  
152   int
153 < isfltd(s, ds)                   /* check integer format with delimiter set */
167 < char  *s, *ds;
153 > isfltd(char *s, char *ds)       /* check integer format with delimiter set */
154   {
155          register char  *cp;
156  
157          cp = fskip(s);
158          return(cp != NULL && strchr(ds, *cp) != NULL);
159 + }
160 +
161 +
162 + int
163 + isname(char *s)                 /* check for legal identifier name */
164 + {
165 +        while (*s == '_')                       /* skip leading underscores */
166 +                s++;
167 +        if (!isascii(*s) || !isalpha(*s))       /* start with a letter */
168 +                return(0);
169 +        while (isascii(*++s) && isgraph(*s))    /* all visible characters */
170 +                ;
171 +        return(*s == '\0');                     /* ending in nul */
172   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines