- if (*cp >= '0' && *cp <= '9')
- {
- attr_list[2*num_attr+1] = atoi (cp);
- attr_clist[num_attr] = 0;
- }
- else
- {
- int len = li->lex_len - (cp - li->lex_buf);
- attr_list[2*num_attr+1] = 0;
- attr_clist[num_attr] = (char *) odr_malloc (o, len+1);
- len = escape_string(attr_clist[num_attr], cp, len);
- attr_clist[num_attr][len] = '\0';
- }
+
+ /* inspect value .. and make it a integer if it appears to be */
+ for (i = cp - li->lex_buf; i < li->lex_len; i++)
+ if (li->lex_buf[i] < '0' || li->lex_buf[i] > '9')
+ {
+ int len = li->lex_len - (cp - li->lex_buf);
+ attr_list[2*num_attr+1] = 0;
+ attr_clist[num_attr] = (char *) odr_malloc(o, len+1);
+ len = escape_string(attr_clist[num_attr], cp, len);
+ attr_clist[num_attr][len] = '\0';
+ return 1;
+ }
+ attr_list[2*num_attr+1] = odr_atoi(cp);
+ attr_clist[num_attr] = 0;