• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**************************************************************************
2  ** Licensed under the Apache License, Version 2.0 (the "License");
3  ** you may not use this file except in compliance with the License.
4  ** You may obtain a copy of the License at
5  ** http://www.apache.org/licenses/LICENSE-2.0
6  ** Unless required by applicable law or agreed to in writing, software
7  ** distributed under the License is distributed on an "AS IS" BASIS,
8  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9  ** See the License for the specific language governing permissions and
10  ** limitations under the License.
11 **************************************************************************/
12 #include <string.h>
13 #include <ctype.h>
14 
15 /*chartoname(name,c,dir) converts c into a useful filename*/
chartoname(register char * name,char c,const char * dir)16 void chartoname(register char *name,  /*result */
17                 char c,               /*char to convert */
18                 const char *dir) {    /*directory to use */
19   char file[3];                  /*filename */
20   int index;                     /*index of namelist */
21   static const char *namelist[] = {
22     "!bang",
23     "\"doubleq",
24     "#hash",
25     "$dollar",
26     "%percent",
27     "&and",
28     "'quote",
29     "(lround",
30     ")rround",
31     "*asterisk",
32     "+plus",
33     ",comma",
34     "-minus",
35     ".dot",
36     "/slash",
37     ":colon",
38     ";semic",
39     "<less",
40     "=equal",
41     ">greater",
42     "?question",
43     "@at",
44     "[lsquare",
45     "\\backsl",
46     "]rsquare",
47     "^uparr",
48     "_unders",
49     "`grave",
50     "{lbrace",
51     "|bar",
52     "}rbrace",
53     "~tilde"
54   };
55 
56   strcpy(name, dir);  /*add specific directory */
57   for (index = 0; index < sizeof namelist / sizeof (char *)
58     && c != namelist[index][0]; index++);
59   if (index < sizeof namelist / sizeof (char *))
60                                  /*add text name */
61     strcat (name, &namelist[index][1]);
62   else {
63     if (isupper (c)) {
64       file[0] = 'c';             /*direct a-z or A-Z */
65       file[1] = c;               /*direct a-z or A-Z */
66       file[2] = '\0';
67     }
68     else {
69       file[0] = c;               /*direct a-z or A-Z */
70       file[1] = '\0';
71     }
72     strcat(name, file);  /*append filename */
73   }
74 }
75