1/* mksignames.c -- Create and write `signames.h', which contains an array of 2 signal names. */ 3 4/* Copyright (C) 1992-2006 Free Software Foundation, Inc. 5 6 This file is part of GNU Bash, the Bourne Again SHell. 7 8 Bash is free software; you can redistribute it and/or modify it under 9 the terms of the GNU General Public License as published by the Free 10 Software Foundation; either version 2, or (at your option) any later 11 version. 12 13 Bash is distributed in the hope that it will be useful, but WITHOUT ANY 14 WARRANTY; without even the implied warranty of MERCHANTABILITY or 15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 for more details. 17 18 You should have received a copy of the GNU General Public License along 19 with Bash; see the file COPYING. If not, write to the Free Software 20 Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ 21 22#include <config.h> 23 24#include <sys/types.h> 25#include <signal.h> 26 27#include <stdio.h> 28#if defined (HAVE_STDLIB_H) 29# include <stdlib.h> 30#else 31# include "ansi_stdlib.h" 32#endif /* HAVE_STDLIB_H */ 33 34/* Duplicated from signames.c */ 35#if !defined (NSIG) 36# define NSIG 64 37#endif 38 39#define LASTSIG NSIG+2 40 41/* Imported from signames.c */ 42extern void initialize_signames (); 43extern char *signal_names[]; 44 45char *progname; 46 47void 48write_signames (stream) 49 FILE *stream; 50{ 51 register int i; 52 53 fprintf (stream, "/* This file was automatically created by %s.\n", 54 progname); 55 fprintf (stream, " Do not edit. Edit support/signames.c instead. */\n\n"); 56 fprintf (stream, 57 "/* A translation list so we can be polite to our users. */\n"); 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 62 fprintf (stream, "char *signal_names[NSIG + 4] = {\n"); 63 64 for (i = 0; i <= LASTSIG; i++) 65 fprintf (stream, " \"%s\",\n", signal_names[i]); 66 67 fprintf (stream, " (char *)0x0\n"); 68 fprintf (stream, "};\n\n"); 69 fprintf (stream, "#define initialize_signames()\n\n"); 70#endif 71} 72 73int 74main (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 { 101 fprintf (stderr, "%s: %s: cannot open for writing\n", 102 progname, stream_name); 103 exit (2); 104 } 105 106#if !defined (CROSS_COMPILING) 107 initialize_signames (); 108#endif 109 write_signames (stream); 110 exit (0); 111} 112