int missing_space(NODE *name) { NODE *str = strnode__caseobj(name); char *s = getstrptr(str); FIXNUM len = getstrlen(str); char *t; char ch; char alpha[100], numer[100]; int i; NODE *first; t = s+len-1; ch = *t; if (!isdigit(ch)) return 0; i = 1; while ((t>s) && (isdigit(*--t))) i++; if (t<=s) return 0; strncpy(numer,t+1,i); numer[i] = '\0'; strncpy(alpha,s,len-i); alpha[len-i] = '\0'; first = intern(make_strnode(alpha, 0, len-i, STRING, strnzcpy)); check_library(first); if (procnode__caseobj(first) == UNDEFINED) return 0; missing_alphabetic = first; missing_numeric = make_intnode(atoi(numer)); err_logo(MISSING_SPACE, cons_list(0, cons_list(0, missing_alphabetic, missing_numeric, END_OF_LIST), name, END_OF_LIST)); return 1; }
NODE *cnv_node_to_strnode(NODE *nd) { char s[MAX_NUMBER]; if (nd == UNBOUND || aggregate(nd)) { return (UNBOUND); } switch (nodetype(nd)) { case STRING: case BACKSLASH_STRING: case VBAR_STRING: return (nd); case CASEOBJ: return strnode__caseobj(nd); case QUOTE: nd = valref(cnv_node_to_strnode(node__quote(nd))); nd = reref(nd, make_strnode(getstrptr(nd), (char *) NULL, getstrlen(nd) + 1, nodetype(nd), quote_strnzcpy)); unref(nd); return (nd); case COLON: nd = valref(cnv_node_to_strnode(node__colon(nd))); nd = reref(nd, make_strnode(getstrptr(nd), (char *) NULL, getstrlen(nd) + 1, nodetype(nd), colon_strnzcpy)); unref(nd); return (nd); case INT: sprintf(s, "%ld", getint(nd)); return (make_strnode(s, (char *) NULL, (int) strlen(s), STRING, strnzcpy)); case FLOAT: sprintf(s, "%0.15g", getfloat(nd)); return (make_strnode(s, (char *) NULL, (int) strlen(s), STRING, strnzcpy)); } /*NOTREACHED*/ return (NIL); }