summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTavis Ormandy <taviso@gentoo.org>2003-05-28 21:24:33 +0000
committerTavis Ormandy <taviso@gentoo.org>2003-05-28 21:24:33 +0000
commit75d22c8e800245cef264c7c7fa7d5d45747191d8 (patch)
tree866f9d709de2de7d3ce4deaf9e4a87e8be621a71 /app-shells/csh
parentVersion bump plus proper ldap.conf file installed. (diff)
downloadgentoo-2-75d22c8e800245cef264c7c7fa7d5d45747191d8.tar.gz
gentoo-2-75d22c8e800245cef264c7c7fa7d5d45747191d8.tar.bz2
gentoo-2-75d22c8e800245cef264c7c7fa7d5d45747191d8.zip
Initial import, Classic C Shell from the NetBSD project.
Diffstat (limited to 'app-shells/csh')
-rw-r--r--app-shells/csh/ChangeLog10
-rw-r--r--app-shells/csh/Manifest5
-rw-r--r--app-shells/csh/csh-1.29.ebuild120
-rw-r--r--app-shells/csh/files/digest-csh-1.293
-rw-r--r--app-shells/csh/files/linux-vs-bsd.diff274
-rw-r--r--app-shells/csh/files/mksignames.c422
6 files changed, 834 insertions, 0 deletions
diff --git a/app-shells/csh/ChangeLog b/app-shells/csh/ChangeLog
new file mode 100644
index 000000000000..09af05733d9a
--- /dev/null
+++ b/app-shells/csh/ChangeLog
@@ -0,0 +1,10 @@
+# ChangeLog for app-shells/csh
+# Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/app-shells/csh/ChangeLog,v 1.1 2003/05/28 21:24:25 taviso Exp $
+
+*csh-1.29 (28 May 2003)
+
+ 28 May 2003; Tavis Ormandy <taviso@gentoo.org> csh-1.29.ebuild:
+ Initial import, the classic C Shell, tricky to write ebuild for.
+ Hope it works.
+
diff --git a/app-shells/csh/Manifest b/app-shells/csh/Manifest
new file mode 100644
index 000000000000..c41256256176
--- /dev/null
+++ b/app-shells/csh/Manifest
@@ -0,0 +1,5 @@
+MD5 6cbedb846fcedeab473455648f92d59c csh-1.29.ebuild 3789
+MD5 55777b960a6a64596e4a5bad592c78af ChangeLog 386
+MD5 49c0a95e6881eb7e2932d149f62f0de2 files/mksignames.c 10722
+MD5 49ee962115384f8a0acedfcf225fd27a files/digest-csh-1.29 148
+MD5 213922a7d6fdee0a89e9a349653be22d files/linux-vs-bsd.diff 7483
diff --git a/app-shells/csh/csh-1.29.ebuild b/app-shells/csh/csh-1.29.ebuild
new file mode 100644
index 000000000000..9a79ff1381e0
--- /dev/null
+++ b/app-shells/csh/csh-1.29.ebuild
@@ -0,0 +1,120 @@
+# Copyright 1999-2003 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-shells/csh/csh-1.29.ebuild,v 1.1 2003/05/28 21:24:25 taviso Exp $
+
+DESCRIPTION="Classic UNIX shell with C like syntax"
+HOMEPAGE="http://www.netbsd.org/"
+
+SRC_URI="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-release-1-6/src/usr.bin/printf/printf.c
+ ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-release-1-6/src/include/vis.h
+ ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-release-1-6/src/lib/libc/gen/vis.c"
+
+RESTRICT="nomirror"
+
+# theres basically a choice of fetching the individual files via
+# ftp, and using nomirror to stop spamming the mirrors, or fetch
+# a tarball of the whole lot and waste bandwidth.
+#
+# the other option is to check it out of cvs, using tags to make
+# sure we get a consistent version.
+#
+# i decided to go with cvs.
+
+inherit cvs flag-o-matic eutils ccc
+
+LICENSE="BSD GPL-2"
+SLOT="0"
+KEYWORDS="~x86 ~alpha"
+IUSE="static doc"
+
+DEPEND="virtual/glibc
+ sys-devel/pmake
+ >=sys-apps/sed-4
+ sys-apps/groff"
+RDEPEND="virtual/glibc"
+
+ECVS_SERVER="anoncvs.netbsd.org:/cvsroot"
+ECVS_MODULE="src/bin/csh"
+ECVS_USER="anoncvs"
+ECVS_PASS="anoncvs"
+ECVS_BRANCH="netbsd-1-6"
+
+S="${WORKDIR}/${ECVS_MODULE}"
+
+src_compile() {
+ # hide some BSDisms, mostly my work, got some hints from the
+ # debian project (they use an older OpenBSD csh, though).
+ cd ${S}; epatch ${FILESDIR}/linux-vs-bsd.diff || die "patching failed."
+
+ # copy some required files over, two from NetBSD
+ # and one provided with the bash shell.
+
+ # The file `mksignames.c` and the product of its execution
+ # is the only reason this ebuild is dual license, without
+ # this code (eg make your own array) this shell will be
+ # 100% BSD. i borrowed it from bash-2.05b, btw.
+
+ cd ${S}; cp ${DISTDIR}/printf.c \
+ ${DISTDIR}/vis.h \
+ ${FILESDIR}/mksignames.c \
+ ${DISTDIR}/vis.c \
+ ${S}
+ # this utility spits out an array of signal names.
+
+ einfo "Making a list of signal names..."
+ ${CC:-gcc} ${CFLAGS} ${LDFLAGS} -o ${T}/mksignames ${S}/mksignames.c
+ ${T}/mksignames > ${S}/signames.h || die "couldnt get a list of signals."
+
+ einfo "Adding flags required for succesful compilation..."
+ # this should be easier than maintaining a patch.
+ for i in {-Dlint,-w,-D__dead="",-D__LIBC12_SOURCE__,-DNODEV="-1",-DTTYHOG=1024,-DMAXPATHLEN=4096,-D_GNU_SOURCE,-D_DIAGASSERT="assert"}
+ do
+ append-flags ${i}
+ done
+
+ einfo "Making some final tweaks..."
+ sed -i 's#sys/tty.h#linux/tty.h#g' ${S}/file.c
+ sed -i 's!\(#include "proc.h"\)!\1\n#include "signames.h"\n!g' ${S}/proc.c
+ sed -i 's#\(strpct.c time.c\)#\1 vis.c#g' ${S}/Makefile
+ sed -i 's!#include "namespace.h"!!g' ${S}/vis.c
+
+ # maybe they dont warn on BSD, but _damn_.
+ export NOGCCERROR=1
+
+ # if csh is a users preferred shell, they may want
+ # a static binary to help on the event of fs emergency.
+ use static && append-ldflags -static
+
+ # pmake is a portage binary as well, so specify full path.
+ # if yours isnt in /usr/bin, you can set PMAKE_PATH.
+ einfo "Starting build..."
+ ${PMAKE_PATH:-/usr/bin/}pmake || die "compile failed."
+
+ # make the c shell guide
+ use doc && {
+ einfo "Making documentation..."
+ cd ${S}/USD.doc
+ ${PMAKE_PATH:-/usr/bin/}pmake
+ }
+ cd ${S}
+}
+
+src_install() {
+ exeinto /bin
+ doexe csh
+ doman csh.1
+ dodoc USD.doc/paper.ps
+}
+
+pkg_postinst() {
+ use doc >/dev/null && {
+ einfo "An Introduction to the C shell by William Joy, a "
+ einfo "postscript document included with this shell has"
+ einfo "been installed in /usr/share/docs/${P}, if you are new"
+ einfo "to the C shell, you may find it interesting."
+ } || {
+ einfo "You didnt have the \`doc\` use flag set, the"
+ einfo "postscript document \"An Introduction to the C"
+ einfo "shell by William Joy\" was not installed."
+ }
+}
diff --git a/app-shells/csh/files/digest-csh-1.29 b/app-shells/csh/files/digest-csh-1.29
new file mode 100644
index 000000000000..71a8e7c61076
--- /dev/null
+++ b/app-shells/csh/files/digest-csh-1.29
@@ -0,0 +1,3 @@
+MD5 d0c13a13ddd3348f2690ebce3ca31197 printf.c 10839
+MD5 1407b2e7112b8fafe35fdf4b922bb6b9 vis.h 3706
+MD5 6d4159b84708bbbc90cf0a6518ef2beb vis.c 9542
diff --git a/app-shells/csh/files/linux-vs-bsd.diff b/app-shells/csh/files/linux-vs-bsd.diff
new file mode 100644
index 000000000000..ac98999f3e88
--- /dev/null
+++ b/app-shells/csh/files/linux-vs-bsd.diff
@@ -0,0 +1,274 @@
+diff --minimal -ruw csh/csh.c csh/csh.c
+--- csh/csh.c 2003-05-28 21:32:36.000000000 +0100
++++ csh/csh.c 2003-05-28 21:31:51.000000000 +0100
+@@ -102,9 +102,9 @@
+
+ extern char **environ;
+
+-static int readf(void *, char *, int);
+-static fpos_t seekf(void *, fpos_t, int);
+-static int writef(void *, const char *, int);
++static ssize_t readf(void *, char *, size_t);
++static int seekf(void *, off_t, int);
++static ssize_t writef(void *, const char *, size_t);
+ static int closef(void *);
+ static int srccat(Char *, Char *);
+ static int srcfile(char *, bool, bool);
+@@ -124,6 +124,7 @@
+ Char *cp;
+ char *tcp, **tempv;
+ const char *ecp;
++ cookie_io_functions_t cookie;
+ sigset_t sigset;
+ int f;
+
+@@ -131,7 +132,7 @@
+ cshout = stdout;
+ csherr = stderr;
+
+- setprogname(argv[0]);
++ /* setprogname(argv[0]); */
+ settimes(); /* Immed. estab. timing base */
+
+ /*
+@@ -215,14 +216,15 @@
+ * Fortunately this is not needed under the current implementation
+ * of stdio.
+ */
+- (void)fclose(cshin);
+- (void)fclose(cshout);
+- (void)fclose(csherr);
+- if (!(cshin = funopen((void *) &SHIN, readf, writef, seekf, closef)))
++ cookie.read = readf;
++ cookie.write = writef;
++ cookie.seek = seekf;
++ cookie.close = closef;
++ if (!(cshin = fopencookie((void *) &SHIN, "r", cookie)))
+ exit(1);
+- if (!(cshout = funopen((void *) &SHOUT, readf, writef, seekf, closef)))
++ if (!(cshout = fopencookie((void *) &SHOUT, "w", cookie)))
+ exit(1);
+- if (!(csherr = funopen((void *) &SHERR, readf, writef, seekf, closef)))
++ if (!(csherr = fopencookie((void *) &SHERR, "w", cookie)))
+ exit(1);
+ (void)setvbuf(cshin, NULL, _IOLBF, 0);
+ (void)setvbuf(cshout, NULL, _IOLBF, 0);
+@@ -1241,21 +1243,21 @@
+ */
+ #define DESC(a) (*((int *) (a)) - (didfds && *((int *) a) >= FSHIN ? FSHIN : 0))
+
+-static int
+-readf(void *oreo, char *buf, int siz)
++static ssize_t
++readf(void *oreo, char *buf, size_t siz)
+ {
+ return read(DESC(oreo), buf, siz);
+ }
+
+
+-static int
+-writef(void *oreo, const char *buf, int siz)
++static ssize_t
++writef(void *oreo, const char *buf, size_t siz)
+ {
+ return write(DESC(oreo), buf, siz);
+ }
+
+-static fpos_t
+-seekf(void *oreo, fpos_t off, int whence)
++static int
++seekf(void *oreo, off_t off, int whence)
+ {
+ return lseek(DESC(oreo), off, whence);
+ }
+diff --minimal -ruw csh/dir.c csh/dir.c
+--- csh/dir.c 2003-05-28 21:32:36.000000000 +0100
++++ csh/dir.c 2003-05-28 21:31:51.000000000 +0100
+@@ -854,7 +854,7 @@
+ if (p1 && *p1 == '/' &&
+ (Strncmp(p1, cp, cc) != 0 || (cp[cc] != '/' && cp[cc] != '\0'))) {
+ static ino_t home_ino;
+- static dev_t home_dev = NODEV;
++ static dev_t home_dev = -1;
+ static Char *home_ptr = NULL;
+ struct stat statbuf;
+
+diff --minimal -ruw csh/extern.h /tmp/csh/extern.h
+--- csh/extern.h 2003-05-28 21:32:36.000000000 +0100
++++ csh/extern.h 2003-05-28 21:31:51.000000000 +0100
+@@ -39,6 +39,13 @@
+ #define _EXTERN_H_
+
+ #include <sys/cdefs.h>
++#include <stdio_ext.h>
++
++#define fpurge __fpurge
++
++size_t strlcpy(char *, const char *, size_t);
++
++extern const char *const sys_signame[];
+
+ /*
+ * csh.c
+diff --minimal -ruw csh/func.c csh/func.c
+--- csh/func.c 2003-05-28 21:32:36.000000000 +0100
++++ csh/func.c 2003-05-28 21:31:51.000000000 +0100
+@@ -50,6 +50,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
++#include <errno.h>
+
+ #if __STDC__
+ # include <stdarg.h>
+@@ -63,6 +64,7 @@
+
+ extern char **environ;
+ extern int progprintf(int, char **);
++extern int errno;
+
+ static void islogin(void);
+ static void reexecute(struct command *);
+@@ -1428,8 +1430,8 @@
+ int ret;
+
+ ret = progprintf(blklen(v), c = short2blk(v));
+- (void)fflush(cshout);
+- (void)fflush(csherr);
++ (void)fflush(stdout);
++ (void)fflush(stderr);
+
+ blkfree((Char **) c);
+ if (ret)
+diff --minimal -ruw csh/glob.c csh/glob.c
+--- csh/glob.c 2003-05-28 21:32:36.000000000 +0100
++++ csh/glob.c 2003-05-28 21:31:51.000000000 +0100
+@@ -402,7 +402,8 @@
+
+ do {
+ ptr = short2qstr(*vl);
+- switch (glob(ptr, gflgs, 0, &globv)) {
++ switch (glob(ptr, nonomatch || glob_pattern_p(ptr, 1)
++ ? gflgs : gflgs | GLOB_NOCHECK, 0, &globv)) {
+ case GLOB_ABORTED:
+ setname(vis_str(*vl));
+ stderror(ERR_NAME | ERR_GLOB);
+@@ -410,17 +411,17 @@
+ case GLOB_NOSPACE:
+ stderror(ERR_NOMEM);
+ /* NOTREACHED */
++ case GLOB_NOMATCH:
++ magic = 1;
++ break;
+ default:
++ match |= globv.gl_flags & GLOB_MAGCHAR;
+ break;
+ }
+- if (globv.gl_flags & GLOB_MAGCHAR) {
+- match |= (globv.gl_matchc != 0);
+- magic = 1;
+- }
+ gflgs |= GLOB_APPEND;
+ }
+ while (*++vl);
+- vl = (globv.gl_pathc == 0 || (magic && !match && !nonomatch)) ?
++ vl = (globv.gl_pathc == 0 || (magic && !match)) ?
+ NULL : blk2short(globv.gl_pathv);
+ globfree(&globv);
+ return (vl);
+diff --minimal -ruw csh/pathnames.h csh/pathnames.h
+--- csh/pathnames.h 2003-05-28 21:32:36.000000000 +0100
++++ csh/pathnames.h 2003-05-28 21:31:51.000000000 +0100
+@@ -42,7 +42,7 @@
+ #define _PATH_DOTCSHRC "/etc/csh.cshrc"
+ #define _PATH_DOTLOGIN "/etc/csh.login"
+ #define _PATH_DOTLOGOUT "/etc/csh.logout"
+-#define _PATH_LOGIN "/usr/bin/login"
++#define _PATH_LOGIN "/bin/login"
+ #define _PATH_USRBIN "/usr/bin"
+
+ #endif /* !_PATHNAMES_H_ */
+diff --minimal -ruw csh/proc.c csh/proc.c
+--- csh/proc.c 2003-05-28 21:32:36.000000000 +0100
++++ csh/proc.c 2003-05-28 21:31:51.000000000 +0100
+@@ -951,13 +951,21 @@
+ stderror(ERR_NAME | ERR_BADSIG);
+ else if (signum == 0)
+ (void)fputc('0', cshout); /* 0's symbolic name is '0' */
++ else if (!sys_signame[signum])
++ (void) fprintf(cshout, "%d", signum);
+ else
+ (void)fprintf(cshout, "%s ", sys_signame[signum]);
+ } else {
+- for (signum = 1; signum < NSIG; signum++) {
+- (void)fprintf(cshout, "%s ", sys_signame[signum]);
+- if (signum == NSIG / 2)
++ int cur = 0, len;
++ for (signum = 1; signum < NSIG; signum++)
++ if (sys_signame[signum]) {
++ len = strlen (sys_signame[signum]) + 1;
++ cur += len;
++ if (cur >= 80 - 1) {
+ (void)fputc('\n', cshout);
++ cur = len;
++ }
++ (void) fprintf(cshout, "%s ", sys_signame[signum]);
+ }
+ }
+ (void)fputc('\n', cshout);
+@@ -979,9 +987,10 @@
+
+ name = short2str(signame);
+ for (signum = 1; signum < NSIG; signum++)
+- if (!strcasecmp(sys_signame[signum], name) ||
+- (!strncasecmp("SIG", name, 3) && /* skip "SIG" prefix */
+- !strcasecmp(sys_signame[signum], name + 3)))
++ if (sys_signame[signum] && \
++ (!strcasecmp(sys_signame[signum], name) ||
++ (strlen(name) > 3 && !strncasecmp("SIG", name, 3) &&
++ !strcasecmp(sys_signame[signum], name + 3))))
+ break;
+
+ if (signum == NSIG) {
+diff --minimal -ruw csh/set.c csh/set.c
+--- csh/set.c 2003-05-28 21:32:36.000000000 +0100
++++ csh/set.c 2003-05-28 21:31:51.000000000 +0100
+@@ -633,7 +633,6 @@
+ Setenv(STRPATH, exppath);
+ }
+
+-#ifndef lint
+ /*
+ * Lint thinks these have null effect
+ */
+@@ -650,19 +649,6 @@
+ ((p)->v_right = t->v_left) ? (t->v_left->v_parent = (p)) : 0,\
+ (t->v_left = (p))->v_parent = t,\
+ (p) = t)
+-#else
+-struct varent *
+-rleft(struct varent *p)
+-{
+- return (p);
+-}
+-struct varent *
+-rright(struct varent *p)
+-{
+- return (p);
+-}
+-#endif /* ! lint */
+-
+
+ /*
+ * Rebalance a tree, starting at p and up.
+@@ -674,10 +660,8 @@
+ {
+ struct varent *pp;
+
+-#ifndef lint
+ struct varent *t; /* used by the rotate macros */
+
+-#endif
+ int ff;
+
+ /*
diff --git a/app-shells/csh/files/mksignames.c b/app-shells/csh/files/mksignames.c
new file mode 100644
index 000000000000..fb6f44360438
--- /dev/null
+++ b/app-shells/csh/files/mksignames.c
@@ -0,0 +1,422 @@
+/* signames.c -- Create and write `signames.h', which contains an array of
+ signal names. */
+
+/* Copyright (C) 1992 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2, or (at your option) any later
+ version.
+
+ Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with Bash; see the file COPYING. If not, write to the Free Software
+ Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <stdlib.h>
+
+#if !defined (NSIG)
+# define NSIG 64
+#endif
+
+/*
+ * Special traps:
+ * EXIT == 0
+ * DEBUG == NSIG
+ * ERR == NSIG+1
+ */
+#define LASTSIG NSIG+1
+
+char *signal_names[2 * NSIG + 3];
+
+#define signal_names_size (sizeof(signal_names)/sizeof(signal_names[0]))
+
+char *progname;
+
+/* AIX 4.3 defines SIGRTMIN and SIGRTMAX as 888 and 999 respectively.
+ I don't want to allocate so much unused space for the intervening signal
+ numbers, so we just punt if SIGRTMAX is past the bounds of the
+ signal_names array (handled in configure). */
+#if defined (SIGRTMAX) && defined (UNUSABLE_RT_SIGNALS)
+# undef SIGRTMAX
+# undef SIGRTMIN
+#endif
+
+#if defined (SIGRTMAX) || defined (SIGRTMIN)
+# define RTLEN 14
+# define RTLIM 256
+#endif
+
+void
+initialize_signames ()
+{
+ register int i;
+#if defined (SIGRTMAX) || defined (SIGRTMIN)
+ int rtmin, rtmax, rtcnt;
+#endif
+
+ for (i = 1; i < signal_names_size; i++)
+ signal_names[i] = (char *)NULL;
+
+ /* `signal' 0 is what we do on exit. */
+ signal_names[0] = "EXIT";
+
+ /* Place signal names which can be aliases for more common signal
+ names first. This allows (for example) SIGABRT to overwrite SIGLOST. */
+
+ /* POSIX 1003.1b-1993 real time signals, but take care of incomplete
+ implementations. Acoording to the standard, both, SIGRTMIN and
+ SIGRTMAX must be defined, SIGRTMIN must be stricly less than
+ SIGRTMAX, and the difference must be at least 7, that is, there
+ must be at least eight distinct real time signals. */
+
+ /* The generated signal names are SIGRTMIN, SIGRTMIN+1, ...,
+ SIGRTMIN+x, SIGRTMAX-x, ..., SIGRTMAX-1, SIGRTMAX. If the number
+ of RT signals is odd, there is an extra SIGRTMIN+(x+1).
+ These names are the ones used by ksh and /usr/xpg4/bin/sh on SunOS5. */
+
+#if defined (SIGRTMIN)
+ rtmin = SIGRTMIN;
+ signal_names[rtmin] = "SIGRTMIN";
+#endif
+
+#if defined (SIGRTMAX)
+ rtmax = SIGRTMAX;
+ signal_names[rtmax] = "SIGRTMAX";
+#endif
+
+#if defined (SIGRTMAX) && defined (SIGRTMIN)
+ if (rtmax > rtmin)
+ {
+ rtcnt = (rtmax - rtmin - 1) / 2;
+ /* croak if there are too many RT signals */
+ if (rtcnt >= RTLIM/2)
+ {
+ rtcnt = RTLIM/2-1;
+ fprintf(stderr, "%s: error: more than %i real time signals, fix `%s'\n",
+ progname, RTLIM, progname);
+ }
+
+ for (i = 1; i <= rtcnt; i++)
+ {
+ signal_names[rtmin+i] = (char *)malloc(RTLEN);
+ if (signal_names[rtmin+i])
+ sprintf (signal_names[rtmin+i], "SIGRTMIN+%d", i);
+ signal_names[rtmax-i] = (char *)malloc(RTLEN);
+ if (signal_names[rtmax-i])
+ sprintf (signal_names[rtmax-i], "SIGRTMAX-%d", i);
+ }
+
+ if (rtcnt < RTLIM/2-1 && rtcnt != (rtmax-rtmin)/2)
+ {
+ /* Need an extra RTMIN signal */
+ signal_names[rtmin+rtcnt+1] = (char *)malloc(RTLEN);
+ if (signal_names[rtmin+rtcnt+1])
+ sprintf (signal_names[rtmin+rtcnt+1], "SIGRTMIN+%d", rtcnt+1);
+ }
+ }
+#endif /* SIGRTMIN && SIGRTMAX */
+
+/* AIX */
+#if defined (SIGLOST) /* resource lost (eg, record-lock lost) */
+ signal_names[SIGLOST] = "SIGLOST";
+#endif
+
+#if defined (SIGMSG) /* HFT input data pending */
+ signal_names[SIGMSG] = "SIGMSG";
+#endif
+
+#if defined (SIGDANGER) /* system crash imminent */
+ signal_names[SIGDANGER] = "SIGDANGER";
+#endif
+
+#if defined (SIGMIGRATE) /* migrate process to another CPU */
+ signal_names[SIGMIGRATE] = "SIGMIGRATE";
+#endif
+
+#if defined (SIGPRE) /* programming error */
+ signal_names[SIGPRE] = "SIGPRE";
+#endif
+
+#if defined (SIGVIRT) /* AIX virtual time alarm */
+ signal_names[SIGVIRT] = "SIGVIRT";
+#endif
+
+#if defined (SIGALRM1) /* m:n condition variables */
+ signal_names[SIGALRM1] = "SIGALRM1";
+#endif
+
+#if defined (SIGWAITING) /* m:n scheduling */
+ signal_names[SIGWAITING] = "SIGWAITING";
+#endif
+
+#if defined (SIGGRANT) /* HFT monitor mode granted */
+ signal_names[SIGGRANT] = "SIGGRANT";
+#endif
+
+#if defined (SIGKAP) /* keep alive poll from native keyboard */
+ signal_names[SIGKAP] = "SIGKAP";
+#endif
+
+#if defined (SIGRETRACT) /* HFT monitor mode retracted */
+ signal_names[SIGRETRACT] = "SIGRETRACT";
+#endif
+
+#if defined (SIGSOUND) /* HFT sound sequence has completed */
+ signal_names[SIGSOUND] = "SIGSOUND";
+#endif
+
+#if defined (SIGSAK) /* Secure Attention Key */
+ signal_names[SIGSAK] = "SIGSAK";
+#endif
+
+/* SunOS5 */
+#if defined (SIGLWP) /* special signal used by thread library */
+ signal_names[SIGLWP] = "SIGLWP";
+#endif
+
+#if defined (SIGFREEZE) /* special signal used by CPR */
+ signal_names[SIGFREEZE] = "SIGFREEZE";
+#endif
+
+#if defined (SIGTHAW) /* special signal used by CPR */
+ signal_names[SIGTHAW] = "SIGTHAW";
+#endif
+
+#if defined (SIGCANCEL) /* thread cancellation signal used by libthread */
+ signal_names[SIGCANCEL] = "SIGCANCEL";
+#endif
+
+/* HP-UX */
+#if defined (SIGDIL) /* DIL signal (?) */
+ signal_names[SIGDIL] = "SIGDIL";
+#endif
+
+/* System V */
+#if defined (SIGCLD) /* Like SIGCHLD. */
+ signal_names[SIGCLD] = "SIGCLD";
+#endif
+
+#if defined (SIGPWR) /* power state indication */
+ signal_names[SIGPWR] = "SIGPWR";
+#endif
+
+#if defined (SIGPOLL) /* Pollable event (for streams) */
+ signal_names[SIGPOLL] = "SIGPOLL";
+#endif
+
+/* Unknown */
+#if defined (SIGWINDOW)
+ signal_names[SIGWINDOW] = "SIGWINDOW";
+#endif
+
+/* Common */
+#if defined (SIGHUP) /* hangup */
+ signal_names[SIGHUP] = "SIGHUP";
+#endif
+
+#if defined (SIGINT) /* interrupt */
+ signal_names[SIGINT] = "SIGINT";
+#endif
+
+#if defined (SIGQUIT) /* quit */
+ signal_names[SIGQUIT] = "SIGQUIT";
+#endif
+
+#if defined (SIGILL) /* illegal instruction (not reset when caught) */
+ signal_names[SIGILL] = "SIGILL";
+#endif
+
+#if defined (SIGTRAP) /* trace trap (not reset when caught) */
+ signal_names[SIGTRAP] = "SIGTRAP";
+#endif
+
+#if defined (SIGIOT) /* IOT instruction */
+ signal_names[SIGIOT] = "SIGIOT";
+#endif
+
+#if defined (SIGABRT) /* Cause current process to dump core. */
+ signal_names[SIGABRT] = "SIGABRT";
+#endif
+
+#if defined (SIGEMT) /* EMT instruction */
+ signal_names[SIGEMT] = "SIGEMT";
+#endif
+
+#if defined (SIGFPE) /* floating point exception */
+ signal_names[SIGFPE] = "SIGFPE";
+#endif
+
+#if defined (SIGKILL) /* kill (cannot be caught or ignored) */
+ signal_names[SIGKILL] = "SIGKILL";
+#endif
+
+#if defined (SIGBUS) /* bus error */
+ signal_names[SIGBUS] = "SIGBUS";
+#endif
+
+#if defined (SIGSEGV) /* segmentation violation */
+ signal_names[SIGSEGV] = "SIGSEGV";
+#endif
+
+#if defined (SIGSYS) /* bad argument to system call */
+ signal_names[SIGSYS] = "SIGSYS";
+#endif
+
+#if defined (SIGPIPE) /* write on a pipe with no one to read it */
+ signal_names[SIGPIPE] = "SIGPIPE";
+#endif
+
+#if defined (SIGALRM) /* alarm clock */
+ signal_names[SIGALRM] = "SIGALRM";
+#endif
+
+#if defined (SIGTERM) /* software termination signal from kill */
+ signal_names[SIGTERM] = "SIGTERM";
+#endif
+
+#if defined (SIGURG) /* urgent condition on IO channel */
+ signal_names[SIGURG] = "SIGURG";
+#endif
+
+#if defined (SIGSTOP) /* sendable stop signal not from tty */
+ signal_names[SIGSTOP] = "SIGSTOP";
+#endif
+
+#if defined (SIGTSTP) /* stop signal from tty */
+ signal_names[SIGTSTP] = "SIGTSTP";
+#endif
+
+#if defined (SIGCONT) /* continue a stopped process */
+ signal_names[SIGCONT] = "SIGCONT";
+#endif
+
+#if defined (SIGCHLD) /* to parent on child stop or exit */
+ signal_names[SIGCHLD] = "SIGCHLD";
+#endif
+
+#if defined (SIGTTIN) /* to readers pgrp upon background tty read */
+ signal_names[SIGTTIN] = "SIGTTIN";
+#endif
+
+#if defined (SIGTTOU) /* like TTIN for output if (tp->t_local&LTOSTOP) */
+ signal_names[SIGTTOU] = "SIGTTOU";
+#endif
+
+#if defined (SIGIO) /* input/output possible signal */
+ signal_names[SIGIO] = "SIGIO";
+#endif
+
+#if defined (SIGXCPU) /* exceeded CPU time limit */
+ signal_names[SIGXCPU] = "SIGXCPU";
+#endif
+
+#if defined (SIGXFSZ) /* exceeded file size limit */
+ signal_names[SIGXFSZ] = "SIGXFSZ";
+#endif
+
+#if defined (SIGVTALRM) /* virtual time alarm */
+ signal_names[SIGVTALRM] = "SIGVTALRM";
+#endif
+
+#if defined (SIGPROF) /* profiling time alarm */
+ signal_names[SIGPROF] = "SIGPROF";
+#endif
+
+#if defined (SIGWINCH) /* window changed */
+ signal_names[SIGWINCH] = "SIGWINCH";
+#endif
+
+/* 4.4 BSD */
+#if defined (SIGINFO) && !defined (_SEQUENT_) /* information request */
+ signal_names[SIGINFO] = "SIGINFO";
+#endif
+
+#if defined (SIGUSR1) /* user defined signal 1 */
+ signal_names[SIGUSR1] = "SIGUSR1";
+#endif
+
+#if defined (SIGUSR2) /* user defined signal 2 */
+ signal_names[SIGUSR2] = "SIGUSR2";
+#endif
+
+#if defined (SIGKILLTHR) /* BeOS: Kill Thread */
+ signal_names[SIGKILLTHR] = "SIGKILLTHR";
+#endif
+
+ for (i = 0; i < NSIG; i++)
+ if (signal_names[i] == (char *)NULL)
+ {
+ signal_names[i] = (char *)malloc (18);
+ if (signal_names[i])
+ sprintf (signal_names[i], "SIGJUNK(%d)", i);
+ }
+
+ signal_names[NSIG] = "DEBUG";
+ signal_names[NSIG+1] = "ERR";
+}
+
+void
+write_signames (stream)
+ FILE *stream;
+{
+ register int i;
+
+ fprintf (stream, "/* This file was generated during the csh build by %s.\n",
+ progname);
+ fprintf (stream, " Do not edit. Edit ${FILESDIR}/mksignames.c instead. */\n\n");
+ fprintf (stream, "const char *const sys_signame[NSIG + 3] = {\n");
+
+ for (i = 0; i <= LASTSIG; i++)
+ fprintf (stream, " \"%s\",\n", signal_names[i]);
+
+ fprintf (stream, " (char *)0x0\n");
+ fprintf (stream, "};\n");
+}
+
+int
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ char *stream_name;
+ FILE *stream;
+
+ progname = argv[0];
+
+ if (argc == 1)
+ {
+ stream_name = "stdout";
+ stream = stdout;
+ }
+ else if (argc == 2)
+ {
+ stream_name = argv[1];
+ stream = fopen (stream_name, "w");
+ }
+ else
+ {
+ fprintf (stderr, "Usage: %s [output-file]\n", progname);
+ exit (1);
+ }
+
+ if (!stream)
+ {
+ fprintf (stderr, "%s: %s: cannot open for writing\n",
+ progname, stream_name);
+ exit (2);
+ }
+
+ initialize_signames ();
+ write_signames (stream);
+ exit (0);
+}