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 this notice is preserved and that due credit is given 7 * to the University of California at Berkeley. The name of the University 8 * may not be used to endorse or promote products derived from this 9 * software without specific prior written permission. This software 10 * is provided ``as is'' without express or implied warranty. 11 * 12 * @(#)astosc.c 3.2 (Berkeley) 03/28/88 13 */ 14 15 #include <ctype.h> 16 17 #include "../general/general.h" 18 19 #include "../ctlr/function.h" 20 21 #include "astosc.h" 22 23 struct astosc astosc[256] = { 24 #include "astosc.out" 25 }; 26 27 /* compare two strings, ignoring case */ 28 29 static 30 ustrcmp(string1, string2) 31 register char *string1; 32 register char *string2; 33 { 34 register int c1, c2; 35 36 while ((c1 = (unsigned char) *string1++) != 0) { 37 if (isupper(c1)) { 38 c1 = tolower(c1); 39 } 40 if (isupper(c2 = (unsigned char) *string2++)) { 41 c2 = tolower(c2); 42 } 43 if (c1 < c2) { 44 return(-1); 45 } else if (c1 > c2) { 46 return(1); 47 } 48 } 49 if (*string2) { 50 return(-1); 51 } else { 52 return(0); 53 } 54 } 55 56 57 /* 58 * This routine takes a string and returns an integer. It may return 59 * -1 if there is no other integer which corresponds to the 60 * string. -1 implies an error. 61 */ 62 63 int 64 ascii_to_index(string) 65 register char *string; 66 { 67 register struct astosc *this; 68 69 for (this = astosc; this <= &astosc[highestof(astosc)]; this++) { 70 if ((this->name != 0) && (ustrcmp(this->name, string) == 0)) { 71 return this-astosc; 72 } 73 } 74 return -1; 75 } 76