xref: /csrg-svn/usr.bin/tn3270/api/astosc.c (revision 31245)
1*31245Sminshall #include <ctype.h>
2*31245Sminshall 
3*31245Sminshall #include "../general/general.h"
4*31245Sminshall 
5*31245Sminshall #include "../ctlr/function.h"
6*31245Sminshall 
731240Sminshall #include "astosc.h"
831240Sminshall #include "state.h"
931240Sminshall 
1031240Sminshall struct astosc astosc[256] = {
1131240Sminshall #include "astosc.out"
1231240Sminshall };
1331240Sminshall 
14*31245Sminshall /* compare two strings, ignoring case */
1531240Sminshall 
16*31245Sminshall static
17*31245Sminshall ustrcmp(string1, string2)
18*31245Sminshall register char *string1;
19*31245Sminshall register char *string2;
20*31245Sminshall {
21*31245Sminshall     register int c1, c2;
22*31245Sminshall 
23*31245Sminshall     while ((c1 = (unsigned char) *string1++) != 0) {
24*31245Sminshall 	if (isupper(c1)) {
25*31245Sminshall 	    c1 = tolower(c1);
26*31245Sminshall 	}
27*31245Sminshall 	if (isupper(c2 = (unsigned char) *string2++)) {
28*31245Sminshall 	    c2 = tolower(c2);
29*31245Sminshall 	}
30*31245Sminshall 	if (c1 < c2) {
31*31245Sminshall 	    return(-1);
32*31245Sminshall 	} else if (c1 > c2) {
33*31245Sminshall 	    return(1);
34*31245Sminshall 	}
35*31245Sminshall     }
36*31245Sminshall     if (*string2) {
37*31245Sminshall 	return(-1);
38*31245Sminshall     } else {
39*31245Sminshall 	return(0);
40*31245Sminshall     }
41*31245Sminshall }
42*31245Sminshall 
43*31245Sminshall 
4431240Sminshall /*
4531240Sminshall  * This routine takes a string and returns an integer.  It may return
4631240Sminshall  * STATE_NULL if there is no other integer which corresponds to the
4731240Sminshall  * string.  STATE_NULL implies an error.
4831240Sminshall  */
4931240Sminshall 
5031240Sminshall int
5131240Sminshall ascii_to_index(string)
5231240Sminshall register char *string;
5331240Sminshall {
5431240Sminshall     register struct astosc *this;
5531240Sminshall 
5631240Sminshall     for (this = astosc; this <= &astosc[highestof(astosc)]; this++) {
57*31245Sminshall 	if (ustrcmp(this->name, string) == 0) {
5831240Sminshall 	    return this-astosc;
5931240Sminshall 	}
6031240Sminshall     }
6131240Sminshall     return STATE_NULL;
6231240Sminshall }
63