]>
Commit | Line | Data |
---|---|---|
0628567a | 1 | /* mksignames.c -- Create and write `signames.h', which contains an array of |
726f6388 JA |
2 | signal names. */ |
3 | ||
0628567a | 4 | /* Copyright (C) 1992-2006 Free Software Foundation, Inc. |
726f6388 JA |
5 | |
6 | This file is part of GNU Bash, the Bourne Again SHell. | |
7 | ||
3185942a JA |
8 | Bash is free software: you can redistribute it and/or modify |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation, either version 3 of the License, or | |
11 | (at your option) any later version. | |
12 | ||
13 | Bash is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with Bash. If not, see <http://www.gnu.org/licenses/>. | |
20 | */ | |
726f6388 | 21 | |
7117c2d2 | 22 | #include <config.h> |
f73dda09 | 23 | |
726f6388 JA |
24 | #include <sys/types.h> |
25 | #include <signal.h> | |
0628567a JA |
26 | |
27 | #include <stdio.h> | |
726f6388 JA |
28 | #if defined (HAVE_STDLIB_H) |
29 | # include <stdlib.h> | |
30 | #else | |
31 | # include "ansi_stdlib.h" | |
32 | #endif /* HAVE_STDLIB_H */ | |
33 | ||
0628567a | 34 | /* Duplicated from signames.c */ |
726f6388 JA |
35 | #if !defined (NSIG) |
36 | # define NSIG 64 | |
37 | #endif | |
38 | ||
b80f6443 | 39 | #define LASTSIG NSIG+2 |
f73dda09 | 40 | |
0628567a JA |
41 | /* Imported from signames.c */ |
42 | extern void initialize_signames (); | |
43 | extern char *signal_names[]; | |
28ef6c31 | 44 | |
726f6388 JA |
45 | char *progname; |
46 | ||
ccc6cda3 | 47 | void |
726f6388 JA |
48 | write_signames (stream) |
49 | FILE *stream; | |
50 | { | |
51 | register int i; | |
52 | ||
53 | fprintf (stream, "/* This file was automatically created by %s.\n", | |
54 | progname); | |
0628567a | 55 | fprintf (stream, " Do not edit. Edit support/signames.c instead. */\n\n"); |
726f6388 JA |
56 | fprintf (stream, |
57 | "/* A translation list so we can be polite to our users. */\n"); | |
0628567a JA |
58 | #if defined (CROSS_COMPILING) |
59 | fprintf (stream, "extern char *signal_names[];\n\n"); | |
60 | fprintf (stream, "extern void initialize_signames __P((void));\n\n"); | |
61 | #else | |
b80f6443 | 62 | fprintf (stream, "char *signal_names[NSIG + 4] = {\n"); |
726f6388 | 63 | |
f73dda09 | 64 | for (i = 0; i <= LASTSIG; i++) |
726f6388 JA |
65 | fprintf (stream, " \"%s\",\n", signal_names[i]); |
66 | ||
f73dda09 | 67 | fprintf (stream, " (char *)0x0\n"); |
0628567a JA |
68 | fprintf (stream, "};\n\n"); |
69 | fprintf (stream, "#define initialize_signames()\n\n"); | |
70 | #endif | |
726f6388 JA |
71 | } |
72 | ||
ccc6cda3 | 73 | int |
726f6388 JA |
74 | main (argc, argv) |
75 | int argc; | |
76 | char **argv; | |
77 | { | |
78 | char *stream_name; | |
79 | FILE *stream; | |
80 | ||
81 | progname = argv[0]; | |
82 | ||
83 | if (argc == 1) | |
84 | { | |
85 | stream_name = "stdout"; | |
86 | stream = stdout; | |
87 | } | |
88 | else if (argc == 2) | |
89 | { | |
90 | stream_name = argv[1]; | |
91 | stream = fopen (stream_name, "w"); | |
92 | } | |
93 | else | |
94 | { | |
95 | fprintf (stderr, "Usage: %s [output-file]\n", progname); | |
96 | exit (1); | |
97 | } | |
98 | ||
99 | if (!stream) | |
100 | { | |
ccc6cda3 | 101 | fprintf (stderr, "%s: %s: cannot open for writing\n", |
726f6388 JA |
102 | progname, stream_name); |
103 | exit (2); | |
104 | } | |
105 | ||
0628567a | 106 | #if !defined (CROSS_COMPILING) |
726f6388 | 107 | initialize_signames (); |
0628567a | 108 | #endif |
726f6388 JA |
109 | write_signames (stream); |
110 | exit (0); | |
111 | } |