181 |
static int |
static int |
182 |
make_new_var (char name[]) |
make_new_var (char name[]) |
183 |
{ |
{ |
184 |
|
char *cp; |
185 |
|
|
186 |
|
/* Trim trailing spaces. */ |
187 |
|
cp = strchr (name, '\0'); |
188 |
|
while (cp > name && isspace ((unsigned char) cp[-1])) |
189 |
|
*--cp = '\0'; |
190 |
|
|
191 |
/* Fix invalid characters. */ |
/* Fix invalid characters. */ |
192 |
{ |
for (cp = name; *cp && cp < name + SHORT_NAME_LEN; cp++) |
193 |
char *cp; |
if (cp == name) |
|
|
|
|
for (cp = name; *cp && !isspace (*cp); cp++) |
|
194 |
{ |
{ |
195 |
*cp = toupper ((unsigned char) *cp); |
if (!CHAR_IS_ID1 (*cp) || *cp == '$') |
196 |
if (!isalpha (*cp) && *cp != '@' && *cp != '#' |
*cp = 'V'; |
|
&& (cp == name || (*cp != '.' && *cp != '$' && *cp != '_' |
|
|
&& !isdigit (*cp)))) |
|
|
{ |
|
|
if (cp == name) |
|
|
*cp = 'V'; /* _ not valid in first position. */ |
|
|
else |
|
|
*cp = '_'; |
|
|
} |
|
197 |
} |
} |
198 |
*cp = 0; |
else |
199 |
} |
{ |
200 |
|
if (!CHAR_IS_IDN (*cp)) |
201 |
|
*cp = '_'; |
202 |
|
} |
203 |
|
*cp = '\0'; |
204 |
|
st_uppercase (name); |
205 |
|
|
206 |
if (dict_create_var (default_dict, name, 0)) |
if (dict_create_var (default_dict, name, 0)) |
207 |
return 1; |
return 1; |
325 |
{ |
{ |
326 |
char name[INT_DIGITS + 2]; |
char name[INT_DIGITS + 2]; |
327 |
sprintf (name, "V%d", (int) f); |
sprintf (name, "V%d", (int) f); |
328 |
strncpy (v->name, name, SHORT_NAME_LEN); |
st_trim_copy (v->name, name, sizeof v->name); |
|
name[SHORT_NAME_LEN] = 0; |
|
329 |
} |
} |
330 |
} |
} |
331 |
else |
else |