xref: /csrg-svn/usr.bin/tn3270/api/astosc.c (revision 34888)
1 /*
2  * Copyright (c) 1988 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  */
17 
18 #ifndef lint
19 static char sccsid[] = "@(#)astosc.c	3.3 (Berkeley) 06/29/88";
20 #endif /* not lint */
21 
22 #include <ctype.h>
23 
24 #include "../general/general.h"
25 
26 #include "../ctlr/function.h"
27 
28 #include "astosc.h"
29 
30 struct astosc astosc[256] = {
31 #include "astosc.out"
32 };
33 
34 /* compare two strings, ignoring case */
35 
36 static
37 ustrcmp(string1, string2)
38 register char *string1;
39 register char *string2;
40 {
41     register int c1, c2;
42 
43     while ((c1 = (unsigned char) *string1++) != 0) {
44 	if (isupper(c1)) {
45 	    c1 = tolower(c1);
46 	}
47 	if (isupper(c2 = (unsigned char) *string2++)) {
48 	    c2 = tolower(c2);
49 	}
50 	if (c1 < c2) {
51 	    return(-1);
52 	} else if (c1 > c2) {
53 	    return(1);
54 	}
55     }
56     if (*string2) {
57 	return(-1);
58     } else {
59 	return(0);
60     }
61 }
62 
63 
64 /*
65  * This routine takes a string and returns an integer.  It may return
66  * -1 if there is no other integer which corresponds to the
67  * string.  -1 implies an error.
68  */
69 
70 int
71 ascii_to_index(string)
72 register char *string;
73 {
74     register struct astosc *this;
75 
76     for (this = astosc; this <= &astosc[highestof(astosc)]; this++) {
77 	if ((this->name != 0) && (ustrcmp(this->name, string) == 0)) {
78 	    return this-astosc;
79 	}
80     }
81     return -1;
82 }
83