VirtualBox

source: kBuild/trunk/src/kash/bld_signames.c@ 3505

Last change on this file since 3505 was 3410, checked in by bird, 4 years ago

kash: Name the real time signals on linux.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
File size: 3.3 KB
Line 
1
2#include "shinstance.h" /* for MSC */
3#include <string.h>
4#include <stdio.h>
5
6int main(int argc, char **argv)
7{
8 char aszSigName[NSIG][16];
9 FILE *pFile;
10 int i;
11
12 if (argc != 2 || *argv[1] == '\0')
13 {
14 fprintf(stderr, "syntax error: Expected exactly one parameter, the output-file!\n");
15 return 2;
16 }
17
18 /*
19 * Populate the name array.
20 */
21 strcpy(aszSigName[0], "Signal 0");
22 for (i = 1; i < NSIG; ++i)
23 sprintf(aszSigName[i], "%i", i);
24
25#define SET_SIG_STR(sig) strcpy(aszSigName[SIG##sig], #sig);
26
27#if defined(SIGRTMIN) && defined(SIGRTMAX)
28 if (SIGRTMIN < SIGRTMAX && SIGRTMAX < NSIG)
29 {
30 /* lets mimick what bash seems to be doing. */
31 int const iMidWay = SIGRTMIN + (SIGRTMAX - SIGRTMIN) / 2;
32 SET_SIG_STR(RTMIN);
33 SET_SIG_STR(RTMAX);
34
35 for (i = SIGRTMIN + 1; i <= iMidWay; i++)
36 sprintf(aszSigName[i], "RTMIN+%i", (int)(i - SIGRTMIN));
37 for (; i < SIGRTMAX; i++)
38 sprintf(aszSigName[i], "RTMAX%i", (int)(i - SIGRTMAX));
39 }
40 else
41 fprintf(stderr, "warning: SIGRTMIN=%d, SIGRTMAX=%d, NSIG=%d\n", (int)SIGRTMIN, (int)SIGRTMAX, (int)NSIG);
42#endif
43
44#ifdef SIGHUP
45 SET_SIG_STR(HUP);
46#endif
47#ifdef SIGINT
48 SET_SIG_STR(INT);
49#endif
50#ifdef SIGQUIT
51 SET_SIG_STR(QUIT);
52#endif
53#ifdef SIGILL
54 SET_SIG_STR(ILL);
55#endif
56#ifdef SIGTRAP
57 SET_SIG_STR(TRAP);
58#endif
59#ifdef SIGABRT
60 SET_SIG_STR(ABRT);
61#endif
62#ifdef SIGIOT
63 SET_SIG_STR(IOT);
64#endif
65#ifdef SIGBUS
66 SET_SIG_STR(BUS);
67#endif
68#ifdef SIGFPE
69 SET_SIG_STR(FPE);
70#endif
71#ifdef SIGKILL
72 SET_SIG_STR(KILL);
73#endif
74#ifdef SIGUSR1
75 SET_SIG_STR(USR1);
76#endif
77#ifdef SIGSEGV
78 SET_SIG_STR(SEGV);
79#endif
80#ifdef SIGUSR2
81 SET_SIG_STR(USR2);
82#endif
83#ifdef SIGPIPE
84 SET_SIG_STR(PIPE);
85#endif
86#ifdef SIGALRM
87 SET_SIG_STR(ALRM);
88#endif
89#ifdef SIGTERM
90 SET_SIG_STR(TERM);
91#endif
92#ifdef SIGSTKFLT
93 SET_SIG_STR(STKFLT);
94#endif
95#ifdef SIGCHLD
96 SET_SIG_STR(CHLD);
97#endif
98#ifdef SIGCONT
99 SET_SIG_STR(CONT);
100#endif
101#ifdef SIGSTOP
102 SET_SIG_STR(STOP);
103#endif
104#ifdef SIGTSTP
105 SET_SIG_STR(TSTP);
106#endif
107#ifdef SIGTTIN
108 SET_SIG_STR(TTIN);
109#endif
110#ifdef SIGTTOU
111 SET_SIG_STR(TTOU);
112#endif
113#ifdef SIGURG
114 SET_SIG_STR(URG);
115#endif
116#ifdef SIGXCPU
117 SET_SIG_STR(XCPU);
118#endif
119#ifdef SIGXFSZ
120 SET_SIG_STR(XFSZ);
121#endif
122#ifdef SIGVTALRM
123 SET_SIG_STR(VTALRM);
124#endif
125#ifdef SIGPROF
126 SET_SIG_STR(PROF);
127#endif
128#ifdef SIGWINCH
129 SET_SIG_STR(WINCH);
130#endif
131#ifdef SIGIO
132 SET_SIG_STR(IO);
133#endif
134#ifdef SIGPWR
135 SET_SIG_STR(PWR);
136#endif
137#ifdef SIGSYS
138 SET_SIG_STR(SYS);
139#endif
140#ifdef SIGBREAK
141 SET_SIG_STR(BREAK);
142#endif
143#undef SET_SIG_STR
144
145 /*
146 * Write out the list.
147 */
148 pFile = fopen(argv[1], "w");
149 if (!pFile)
150 {
151 fprintf(stderr, "error: failed to open '%s' for writing\n", argv[1]);
152 return 1;
153 }
154 fputs("/* autogenerate */\n"
155 "\n"
156 "#include \"shinstance.h\"\n"
157 "\n"
158 "const char * const sys_signame[NSIG] = \n"
159 "{\n"
160 , pFile);
161 for (i = 0; i < NSIG; i++)
162 fprintf(pFile, " \"%s\",\n", aszSigName[i]);
163 fputs("};\n", pFile);
164
165 if (fclose(pFile) != 0)
166 {
167 fprintf(stderr, "error: error writing/closing '%s' after writing it\n", argv[1]);
168 return 1;
169 }
170 return 0;
171}
172
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette