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.5 by greg, Sat Feb 22 02:07:23 2003 UTC vs.
Revision 2.13 by greg, Fri Jan 1 02:10:32 2021 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 7 | Line 7 | static const char      RCSid[] = "$Id$";
7   * External symbols declared in standard.h
8   */
9  
10 < /* ====================================================================
11 < * The Radiance Software License, Version 1.0
12 < *
13 < * Copyright (c) 1990 - 2002 The Regents of the University of California,
14 < * through Lawrence Berkeley National Laboratory.   All rights reserved.
15 < *
16 < * Redistribution and use in source and binary forms, with or without
17 < * modification, are permitted provided that the following conditions
18 < * are met:
19 < *
20 < * 1. Redistributions of source code must retain the above copyright
21 < *         notice, this list of conditions and the following disclaimer.
22 < *
23 < * 2. Redistributions in binary form must reproduce the above copyright
24 < *       notice, this list of conditions and the following disclaimer in
25 < *       the documentation and/or other materials provided with the
26 < *       distribution.
27 < *
28 < * 3. The end-user documentation included with the redistribution,
29 < *           if any, must include the following acknowledgment:
30 < *             "This product includes Radiance software
31 < *                 (http://radsite.lbl.gov/)
32 < *                 developed by the Lawrence Berkeley National Laboratory
33 < *               (http://www.lbl.gov/)."
34 < *       Alternately, this acknowledgment may appear in the software itself,
35 < *       if and wherever such third-party acknowledgments normally appear.
36 < *
37 < * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
38 < *       and "The Regents of the University of California" must
39 < *       not be used to endorse or promote products derived from this
40 < *       software without prior written permission. For written
41 < *       permission, please contact [email protected].
42 < *
43 < * 5. Products derived from this software may not be called "Radiance",
44 < *       nor may "Radiance" appear in their name, without prior written
45 < *       permission of Lawrence Berkeley National Laboratory.
46 < *
47 < * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
48 < * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
49 < * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
50 < * DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
51 < * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
52 < * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
53 < * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
54 < * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
55 < * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
56 < * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
57 < * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58 < * SUCH DAMAGE.
59 < * ====================================================================
60 < *
61 < * This software consists of voluntary contributions made by many
62 < * individuals on behalf of Lawrence Berkeley National Laboratory.   For more
63 < * information on Lawrence Berkeley National Laboratory, please see
64 < * <http://www.lbl.gov/>.
65 < */
10 > #include "copyright.h"
11  
12   #include  <ctype.h>
68 #include  <string.h>
13  
14 < #ifdef  BSD
71 < #define  strchr         index
72 < #endif
14 > #include  "rtio.h"
15  
74
16   char *
17 < atos(rs, nb, s)                 /* get word from string, returning rs */
77 < char  *rs;
78 < register int  nb;
79 < register char  *s;
17 > atos(char *rs, int nb, char *s)         /* get word from string, returning rs */
18   {
19 <        register char  *cp = rs;
19 >        char  *cp = rs;
20  
21          while (isspace(*s))
22                  s++;
# Line 90 | Line 28 | register char  *s;
28  
29  
30   char *
31 < nextword(cp, nb, s)             /* get (quoted) word, returning new s */
94 < register char  *cp;
95 < register int  nb;
96 < register char  *s;
31 > nextword(char *cp, int nb, char *s)     /* get (quoted) word, returning new s */
32   {
33          int     quote = 0;
34  
# Line 117 | Line 52 | register char  *s;
52  
53  
54   char *
55 < sskip(s)                        /* skip word in string, leaving on space */
121 < register char  *s;
55 > sskip(char *s)                  /* skip word in string, leaving on space */
56   {
57          while (isspace(*s))
58                  s++;
# Line 129 | Line 63 | register char  *s;
63  
64  
65   char *
66 < sskip2(s, n)                    /* skip word(s) in string, leaving on word */
133 < register char  *s;
134 < register int    n;
66 > sskip2(char *s, int n)          /* skip word(s) in string, leaving on word */
67   {
68          while (isspace(*s))
69                  s++;
# Line 146 | Line 78 | register int   n;
78  
79  
80   char *
81 < iskip(s)                        /* skip integer in string */
150 < register char  *s;
81 > iskip(char *s)                  /* skip integer in string */
82   {
83          while (isspace(*s))
84                  s++;
85 <        if (*s == '-' || *s == '+')
155 <                s++;
85 >        s += (*s == '-') | (*s == '+');
86          if (!isdigit(*s))
87                  return(NULL);
88          do
# Line 163 | Line 93 | register char  *s;
93  
94  
95   char *
96 < fskip(s)                        /* skip float in string */
167 < register char  *s;
96 > fskip(char *s)                  /* skip float in string */
97   {
98 <        register char  *cp;
98 >        char  *cp;
99  
100          while (isspace(*s))
101                  s++;
102 <        if (*s == '-' || *s == '+')
174 <                s++;
102 >        s += (*s == '-') | (*s == '+');
103          cp = s;
104          while (isdigit(*cp))
105                  cp++;
# Line 182 | Line 110 | register char  *s;
110          }
111          if (cp == s)
112                  return(NULL);
113 <        if (*cp == 'e' || *cp == 'E')
114 <                return(iskip(cp+1));
113 >        if ((*cp == 'e') | (*cp == 'E'))
114 >                return(isspace(*++cp) ? NULL : iskip(cp));
115          return(cp);
116   }
117  
118  
119   int
120 < isint(s)                        /* check integer format */
193 < char  *s;
120 > isint(char *s)                  /* check integer format */
121   {
122 <        register char  *cp;
122 >        char  *cp;
123  
124          cp = iskip(s);
125          return(cp != NULL && *cp == '\0');
# Line 200 | Line 127 | char  *s;
127  
128  
129   int
130 < isintd(s, ds)                   /* check integer format with delimiter set */
204 < char  *s, *ds;
130 > isintd(char *s, char *ds)       /* check integer format with delimiter set */
131   {
132 <        register char  *cp;
132 >        char  *cp;
133  
134          cp = iskip(s);
135          return(cp != NULL && strchr(ds, *cp) != NULL);
# Line 211 | Line 137 | char  *s, *ds;
137  
138  
139   int
140 < isflt(s)                        /* check float format */
215 < char  *s;
140 > isflt(char *s)                  /* check float format */
141   {
142 <        register char  *cp;
142 >        char  *cp;
143  
144          cp = fskip(s);
145          return(cp != NULL && *cp == '\0');
# Line 222 | Line 147 | char  *s;
147  
148  
149   int
150 < isfltd(s, ds)                   /* check integer format with delimiter set */
226 < char  *s, *ds;
150 > isfltd(char *s, char *ds)       /* check integer format with delimiter set */
151   {
152 <        register char  *cp;
152 >        char  *cp;
153  
154          cp = fskip(s);
155          return(cp != NULL && strchr(ds, *cp) != NULL);
156 + }
157 +
158 +
159 + int
160 + isname(char *s)                 /* check for legal identifier name */
161 + {
162 +        while (*s == '_')                       /* skip leading underscores */
163 +                s++;
164 +        if (!isascii(*s) | !isalpha(*s))        /* start with a letter */
165 +                return(0);
166 +        while (isascii(*++s) && isgraph(*s))    /* all visible characters */
167 +                ;
168 +        return(*s == '\0');                     /* ending in nul */
169   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines