source: trunk/third/tcsh/sh.init.c @ 22674

Revision 22674, 27.5 KB checked in by ghudson, 17 years ago (diff)
Check in top of vendor branch to head to repair ill-conceived CVS hack.
Line 
1/* $Header: /afs/dev.mit.edu/source/repository/third/tcsh/sh.init.c,v 1.3 2007-10-26 18:25:36 ghudson Exp $ */
2/*
3 * sh.init.c: Function and signal tables
4 */
5/*-
6 * Copyright (c) 1980, 1991 The Regents of the University of California.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the University nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33#include "sh.h"
34
35RCSID("$Id: sh.init.c,v 1.3 2007-10-26 18:25:36 ghudson Exp $")
36
37#include "ed.h"
38#include "tw.h"
39
40/*
41 * C shell
42 */
43
44#define INF     0x7fffffff
45
46struct  biltins bfunc[] = {
47    { ":",              dozip,          0,      INF     },
48    { "@",              dolet,          0,      INF     },
49    { "alias",          doalias,        0,      INF     },
50#ifdef OBSOLETE
51    { "aliases",        doaliases,      0,      1,      },
52#endif /* OBSOLETE */
53    { "alloc",          showall,        0,      1       },
54#if defined(_CX_UX)
55    { "att",            doatt,          0,      INF     },
56#endif /* _CX_UX */
57    { "bg",             dobg,           0,      INF     },
58#ifdef OBSOLETE
59    { "bind",           dobind,         0,      2       },
60#endif /* OBSOLETE */
61    { "bindkey",        dobindkey,      0,      8       },
62    { "break",          dobreak,        0,      0       },
63    { "breaksw",        doswbrk,        0,      0       },
64#ifdef _OSD_POSIX
65    { "bs2cmd",         dobs2cmd,       1,      INF     },
66#endif /* OBSOLETE */
67    { "builtins",       dobuiltins,     0,      0       },
68#ifdef KAI
69    { "bye",            goodbye,        0,      0       },
70#endif /* KAI */
71    { "case",           dozip,          0,      1       },
72    { "cd",             dochngd,        0,      INF     },
73    { "chdir",          dochngd,        0,      INF     },
74    { "complete",       docomplete,     0,      INF     },
75    { "continue",       docontin,       0,      0       },
76    { "default",        dozip,          0,      0       },
77    { "dirs",           dodirs,         0,      INF     },
78#if defined(_CRAY) && !defined(_CRAYMPP)
79    { "dmmode",         dodmmode,       0,      1       },
80#endif /* _CRAY && !_CRAYMPP */
81    { "echo",           doecho,         0,      INF     },
82    { "echotc",         doechotc,       0,      INF     },
83    { "else",           doelse,         0,      INF     },
84    { "end",            doend,          0,      0       },
85    { "endif",          dozip,          0,      0       },
86    { "endsw",          dozip,          0,      0       },
87    { "eval",           doeval,         0,      INF     },
88    { "exec",           execash,        1,      INF     },
89    { "exit",           doexit,         0,      INF     },
90    { "fg",             dofg,           0,      INF     },
91    { "filetest",       dofiletest,     2,      INF     },
92    { "foreach",        doforeach,      3,      INF     },
93#ifdef TCF
94    { "getspath",       dogetspath,     0,      0       },
95    { "getxvers",       dogetxvers,     0,      0       },
96#endif /* TCF */
97    { "glob",           doglob,         0,      INF     },
98    { "goto",           dogoto,         1,      1       },
99    { "hashstat",       hashstat,       0,      0       },
100    { "history",        dohist,         0,      2       },
101    { "hup",            dohup,          0,      INF     },
102    { "if",             doif,           1,      INF     },
103#ifdef apollo
104    { "inlib",          doinlib,        1,      INF     },
105#endif /* apollo */
106    { "jobs",           dojobs,         0,      1       },
107    { "kill",           dokill,         1,      INF     },
108#ifndef HAVENOLIMIT
109    { "limit",          dolimit,        0,      3       },
110#endif /* !HAVENOLIMIT */
111#ifdef OBSOLETE
112    { "linedit",        doecho,         0,      INF     },
113#endif /* OBSOLETE */
114#if !defined(HAVENOUTMP) && !defined(KAI)
115    { "log",            dolog,          0,      0       },
116#endif /* !HAVENOUTMP && !KAI */
117    { "login",          dologin,        0,      1       },
118    { "logout",         dologout,       0,      0       },
119    { "ls-F",           dolist,         0,      INF     },
120#ifdef TCF
121    { "migrate",        domigrate,      1,      INF     },
122#endif /* TCF */
123#ifdef NEWGRP
124    { "newgrp",         donewgrp,       0,      2       },
125#endif /* NEWGRP */
126    { "nice",           donice,         0,      INF     },
127    { "nohup",          donohup,        0,      INF     },
128    { "notify",         donotify,       0,      INF     },
129    { "onintr",         doonintr,       0,      2       },
130    { "popd",           dopopd,         0,      INF     },
131    { "printenv",       doprintenv,     0,      1       },
132    { "pushd",          dopushd,        0,      INF     },
133    { "rehash",         dohash,         0,      3       },
134    { "repeat",         dorepeat,       2,      INF     },
135#ifdef apollo
136    { "rootnode",       dorootnode,     1,      1       },
137#endif /* apollo */
138    { "sched",          dosched,        0,      INF     },
139    { "set",            doset,          0,      INF     },
140    { "setenv",         dosetenv,       0,      2       },
141#ifdef MACH
142    { "setpath",        dosetpath,      0,      INF     },
143#endif  /* MACH */
144#ifdef TCF
145    { "setspath",       dosetspath,     1,      INF     },
146#endif /* TCF */
147    { "settc",          dosettc,        2,      2       },
148    { "setty",          dosetty,        0,      INF     },
149#ifdef TCF
150    { "setxvers",       dosetxvers,     0,      1       },
151#endif /* TCF */
152    { "shift",          shift,          0,      1       },
153    { "source",         dosource,       1,      INF     },
154    { "stop",           dostop,         1,      INF     },
155    { "suspend",        dosuspend,      0,      0       },
156    { "switch",         doswitch,       1,      INF     },
157    { "telltc",         dotelltc,       0,      INF     },
158#ifndef WINNT_NATIVE
159    { "termname",       dotermname,     0,      1       },
160#endif
161    { "time",           dotime,         0,      INF     },
162#if defined(_CX_UX)
163    { "ucb",            doucb,          0,      INF     },
164#endif /* _CX_UX */
165    { "umask",          doumask,        0,      1       },
166    { "unalias",        unalias,        1,      INF     },
167    { "uncomplete",     douncomplete,   1,      INF     },
168    { "unhash",         dounhash,       0,      0       },
169#if defined(masscomp) || defined(_CX_UX)
170    { "universe",       douniverse,     0,      INF     },
171#endif /* masscomp || _CX_UX */
172#ifndef HAVENOLIMIT
173    { "unlimit",        dounlimit,      0,      INF     },
174#endif /* !HAVENOLIMIT */
175    { "unset",          unset,          1,      INF     },
176    { "unsetenv",       dounsetenv,     1,      INF     },
177#ifdef apollo
178    { "ver",            dover,          0,      INF     },
179#endif /* apollo */
180    { "wait",           dowait,         0,      0       },
181#ifdef WARP
182    { "warp",           dowarp,         0,      2       },
183#endif /* WARP */
184#if !defined(HAVENOUTMP) && defined(KAI)
185    { "watchlog",       dolog,          0,      0       },
186#endif /* !HAVENOUTMP && KAI */
187    { "where",          dowhere,        1,      INF     },
188    { "which",          dowhich,        1,      INF     },
189    { "while",          dowhile,        1,      INF     }
190};
191int nbfunc = sizeof bfunc / sizeof *bfunc;
192
193struct srch srchn[] = {
194    { "@",              TC_LET          },
195    { "break",          TC_BREAK        },
196    { "breaksw",        TC_BRKSW        },
197    { "case",           TC_CASE         },
198    { "default",        TC_DEFAULT      },
199    { "else",           TC_ELSE         },
200    { "end",            TC_END          },
201    { "endif",          TC_ENDIF        },
202    { "endsw",          TC_ENDSW        },
203    { "exit",           TC_EXIT         },
204    { "foreach",        TC_FOREACH      },
205    { "goto",           TC_GOTO         },
206    { "if",             TC_IF           },
207    { "label",          TC_LABEL        },
208    { "set",            TC_SET          },
209    { "switch",         TC_SWITCH       },
210    { "while",          TC_WHILE        }
211};
212int nsrchn = sizeof srchn / sizeof *srchn;
213
214
215/*
216 * Note: For some machines, (hpux eg.)
217 * NSIG = number of signals + 1...
218 * so we define 33 or 65 (POSIX) signals for
219 * everybody
220 */
221
222/* We define NUMSIG to avoid changing NSIG or MAXSIG */
223#if defined(POSIX) && !defined(__CYGWIN__)
224# define NUMSIG 65
225#else /* !POSIX */
226# define NUMSIG 33
227#endif /* POSIX */
228
229int     nsig = NUMSIG - 1;      /* This should be the number of real signals */
230                                /* not counting signal 0 */
231struct mesg mesg[NUMSIG];       /* Arrays start at [0] so we initialize from */
232                                /* 0 to 32 or 64, the max real signal number */
233
234void
235mesginit()
236{
237
238#ifdef NLS_CATALOGS
239    int i;
240
241    for (i = 0; i < NUMSIG; i++) {
242        xfree((ptr_t) mesg[i].pname);
243        mesg[i].pname = NULL;
244    }
245#endif /* NLS_CATALOGS */
246
247#if defined(SIGNULL) || defined(DECOSF1)
248# ifndef SIGNULL
249#  define SIGNULL 0
250# endif /* !SIGNULL */
251    if (mesg[SIGNULL].pname == NULL) {
252        mesg[SIGNULL].iname = "NULL";
253        mesg[SIGNULL].pname = CSAVS(2, 1, "Null signal");
254    }
255#endif /* SIGNULL || DECOSF1 */
256
257#ifdef SIGHUP
258    if (mesg[SIGHUP].pname == NULL) {
259        mesg[SIGHUP].iname = "HUP";
260        mesg[SIGHUP].pname = CSAVS(2, 2, "Hangup");
261    }
262#endif /* SIGHUP */
263
264#ifdef SIGINT
265    if (mesg[SIGINT].pname == NULL) {
266        mesg[SIGINT].iname = "INT";
267        mesg[SIGINT].pname = CSAVS(2, 3, "Interrupt");
268    }
269#endif /* SIGINT */
270
271#ifdef SIGQUIT
272    if (mesg[SIGQUIT].pname == NULL) {
273        mesg[SIGQUIT].iname = "QUIT";
274        mesg[SIGQUIT].pname = CSAVS(2, 4, "Quit");
275    }
276#endif /* SIGQUIT */
277
278#ifdef SIGILL
279    if (mesg[SIGILL].pname == NULL) {
280        mesg[SIGILL].iname = "ILL";
281        mesg[SIGILL].pname = CSAVS(2, 5, "Illegal instruction");
282    }
283#endif /* SIGILL */
284
285#ifdef SIGTRAP
286    if (mesg[SIGTRAP].pname == NULL) {
287        mesg[SIGTRAP].iname = "TRAP";
288        mesg[SIGTRAP].pname = CSAVS(2, 6, "Trace/BPT trap");
289    }
290#endif /* SIGTRAP */
291
292#ifdef SIGABRT
293    if (mesg[SIGABRT].pname == NULL) {
294        mesg[SIGABRT].iname = "ABRT";
295        mesg[SIGABRT].pname = CSAVS(2, 7, "Abort");
296    }
297#endif /* SIGABRT */
298
299#ifdef SIGIOT
300    if (mesg[SIGIOT].pname == NULL) {
301        mesg[SIGIOT].iname = "IOT";
302        mesg[SIGIOT].pname = CSAVS(2, 8, "IOT trap");
303    }
304#endif /* SIGIOT */
305
306#ifdef SIGDANGER
307    /* aiws */
308    if (mesg[SIGDANGER].pname == NULL) {
309        mesg[SIGDANGER].iname = "DANGER";
310        mesg[SIGDANGER].pname = CSAVS(2, 9, "System Crash Imminent");
311    }
312#endif /* SIGDANGER */
313
314#ifdef SIGERR
315    /* _CRAY */
316    if (mesg[SIGERR].pname == NULL) {
317        mesg[SIGERR].iname = "ERR";
318        mesg[SIGERR].pname = CSAVS(2, 10, "Error exit");
319    }
320#endif /* SIGERR */
321
322#ifdef SIGEMT
323    if (mesg[SIGEMT].pname == NULL) {
324        mesg[SIGEMT].iname = "EMT";
325        mesg[SIGEMT].pname = CSAVS(2, 11, "EMT trap");
326    }
327#endif /* SIGEMT */
328
329#ifdef SIGFPE
330    if (mesg[SIGFPE].pname == NULL) {
331        mesg[SIGFPE].iname = "FPE";
332        mesg[SIGFPE].pname = CSAVS(2, 12, "Floating exception");
333    }
334#endif /* SIGFPE */
335
336#ifdef SIGKILL
337    if (mesg[SIGKILL].pname == NULL) {
338        mesg[SIGKILL].iname = "KILL";
339        mesg[SIGKILL].pname = CSAVS(2, 13, "Killed");
340    }
341#endif /* SIGKILL */
342
343#ifdef SIGUSR1
344    if (mesg[SIGUSR1].pname == NULL) {
345        mesg[SIGUSR1].iname = "USR1";
346        mesg[SIGUSR1].pname = CSAVS(2, 14, "User signal 1");
347    }
348#endif /* SIGUSR1 */
349
350#ifdef SIGUSR2
351    if (mesg[SIGUSR2].pname == NULL) {
352        mesg[SIGUSR2].iname = "USR2";
353        mesg[SIGUSR2].pname = CSAVS(2, 15, "User signal 2");
354    }
355#endif /* SIGUSR2 */
356
357#ifdef SIGSEGV
358    if (mesg[SIGSEGV].pname == NULL) {
359        mesg[SIGSEGV].iname = "SEGV";
360        mesg[SIGSEGV].pname = CSAVS(2, 16, "Segmentation fault");
361    }
362#endif /* SIGSEGV */
363
364#ifdef SIGBUS
365    if (mesg[SIGBUS].pname == NULL) {
366        mesg[SIGBUS].iname = "BUS";
367        mesg[SIGBUS].pname = CSAVS(2, 17, "Bus error");
368    }
369#endif /* SIGBUS */
370
371#ifdef SIGPRE
372    /* _CRAY || IBMAIX */
373    if (mesg[SIGPRE].pname == NULL) {
374        mesg[SIGPRE].iname = "PRE";
375        mesg[SIGPRE].pname = CSAVS(2, 18, "Program range error");
376    }
377#endif /* SIGPRE */
378
379#ifdef SIGORE
380    /* _CRAY */
381    if (mesg[SIGORE].pname == NULL) {
382        mesg[SIGORE].iname = "ORE";
383        mesg[SIGORE].pname = CSAVS(2, 19, "Operand range error");
384    }
385#endif /* SIGORE */
386
387#ifdef SIGSYS
388    if (mesg[SIGSYS].pname == NULL) {
389        mesg[SIGSYS].iname = "SYS";
390        mesg[SIGSYS].pname = CSAVS(2, 20, "Bad system call");
391    }
392#endif /* SIGSYS */
393
394#ifdef SIGPIPE
395    if (mesg[SIGPIPE].pname == NULL) {
396        mesg[SIGPIPE].iname = "PIPE";
397        mesg[SIGPIPE].pname = CSAVS(2, 21, "Broken pipe");
398    }
399#endif /* SIGPIPE */
400
401#ifdef SIGALRM
402    if (mesg[SIGALRM].pname == NULL) {
403        mesg[SIGALRM].iname = "ALRM";
404        mesg[SIGALRM].pname = CSAVS(2, 22, "Alarm clock");
405    }
406#endif /* SIGALRM */
407
408#ifdef SIGTERM
409    if (mesg[SIGTERM].pname == NULL) {
410        mesg[SIGTERM].iname = "TERM";
411        mesg[SIGTERM].pname = CSAVS(2, 23, "Terminated");
412    }
413#endif /* SIGTERM */
414
415/* SIGCLD vs SIGCHLD */
416#if !defined(SIGCHLD) || defined(SOLARIS2) || defined(apollo) || defined(__EMX__)
417    /* If we don't define SIGCHLD, or our OS prefers SIGCLD to SIGCHLD, */
418    /* check for SIGCLD */
419# ifdef SIGCLD
420    if (mesg[SIGCLD].pname == NULL) {
421        mesg[SIGCLD].iname = "CLD";
422#  ifdef BSDJOBS
423        mesg[SIGCLD].pname = CSAVS(2, 24, "Child status change");
424#  else /* !BSDJOBS */
425        mesg[SIGCLD].pname = CSAVS(2, 25, "Death of child");
426#  endif /* BSDJOBS */
427    }
428# endif /* SIGCLD */
429#else /* !(!SIGCHLD || SOLARIS2 || apollo || __EMX__) */
430    /* We probably define SIGCHLD */
431# ifdef SIGCHLD
432    if (mesg[SIGCHLD].pname == NULL) {
433        mesg[SIGCHLD].iname = "CHLD";
434#  ifdef BSDJOBS
435        mesg[SIGCHLD].pname = CSAVS(2, 27, "Child stopped or exited");
436#  else /* !BSDJOBS */
437        mesg[SIGCHLD].pname = CSAVS(2, 28, "Child exited");
438#  endif /* BSDJOBS */
439    }
440# endif /* SIGCHLD */
441#endif /* !SIGCHLD || SOLARIS2 || apollo || __EMX__ */
442
443#ifdef SIGAPOLLO
444    /* apollo */
445    if (mesg[SIGAPOLLO].pname == NULL) {
446        mesg[SIGAPOLLO].iname = "APOLLO";
447        mesg[SIGAPOLLO].pname = CSAVS(2, 26, "Apollo-specific fault");
448    }
449#endif /* SIGAPOLLO */
450
451#ifdef SIGPWR
452    if (mesg[SIGPWR].pname == NULL) {
453        mesg[SIGPWR].iname = "PWR";
454        mesg[SIGPWR].pname = CSAVS(2, 29, "Power failure");
455    }
456#endif /* SIGPWR */
457
458#ifdef SIGLOST
459    if (mesg[SIGLOST].pname == NULL) {
460        mesg[SIGLOST].iname = "LOST";
461        mesg[SIGLOST].pname = CSAVS(2, 30, "Resource Lost");
462    }
463#endif /* SIGLOST */
464
465#ifdef SIGBREAK
466    /* __EMX__ */
467    if (mesg[SIGBREAK].pname == NULL) {
468        mesg[SIGBREAK].iname = "BREAK";
469        mesg[SIGBREAK].pname = CSAVS(2, 31, "Break (Ctrl-Break)");
470    }
471#endif /* SIGBREAK */
472
473#ifdef SIGIO
474# if !defined(SIGPOLL) || SIGPOLL != SIGIO
475    if (mesg[SIGIO].pname == NULL) {
476        mesg[SIGIO].iname = "IO";
477#  ifdef cray
478        mesg[SIGIO].pname = CSAVS(2, 32, "Input/output possible signal");
479#  else /* !cray */
480        mesg[SIGIO].pname = CSAVS(2, 33, "Asynchronous I/O (select)");
481#  endif /* cray */
482    }
483# endif /* !SIGPOLL || SIGPOLL != SIGIO */
484#endif /* SIGIO */
485
486#ifdef SIGURG
487    if (mesg[SIGURG].pname == NULL) {
488        mesg[SIGURG].iname = "URG";
489        mesg[SIGURG].pname = CSAVS(2, 34, "Urgent condition on I/O channel");
490    }
491#endif /* SIGURG */
492
493#ifdef SIGMT
494    /* cray */
495    if (mesg[SIGMT].pname == NULL) {
496        mesg[SIGMT].iname = "MT";
497        mesg[SIGMT].pname = CSAVS(2, 35, "Multitasking wake-up");
498    }
499#endif /* SIGMT */
500
501#ifdef SIGMTKILL
502    /* cray */
503    if (mesg[SIGMTKILL].pname == NULL) {
504        mesg[SIGMTKILL].iname = "MTKILL";
505        mesg[SIGMTKILL].pname = CSAVS(2, 36, "Multitasking kill");
506    }
507#endif /* SIGMTKILL */
508
509#ifdef SIGBUFIO
510    /* _CRAYCOM */
511    if (mesg[SIGBUFIO].pname == NULL) {
512        mesg[SIGBUFIO].iname = "BUFIO";
513        mesg[SIGBUFIO].pname = CSAVS(2, 37,
514                                    "Fortran asynchronous I/O completion");
515    }
516#endif /* SIGBUFIO */
517
518#ifdef SIGRECOVERY
519    /* _CRAYCOM */
520    if (mesg[SIGRECOVERY].pname == NULL) {
521        mesg[SIGRECOVERY].iname = "RECOVERY";
522        mesg[SIGRECOVERY].pname = CSAVS(2, 38, "Recovery");
523    }
524#endif /* SIGRECOVERY */
525
526#ifdef SIGUME
527    /* _CRAYCOM */
528    if (mesg[SIGUME].pname == NULL) {
529        mesg[SIGUME].iname = "UME";
530        mesg[SIGUME].pname = CSAVS(2, 39, "Uncorrectable memory error");
531    }
532#endif /* SIGUME */
533
534#ifdef SIGCPULIM
535    /* _CRAYCOM */
536    if (mesg[SIGCPULIM].pname == NULL) {
537        mesg[SIGCPULIM].iname = "CPULIM";
538        mesg[SIGCPULIM].pname = CSAVS(2, 40, "CPU time limit exceeded");
539    }
540#endif /* SIGCPULIM */
541
542#ifdef SIGSHUTDN
543    /* _CRAYCOM */
544    if (mesg[SIGSHUTDN].pname == NULL) {
545        mesg[SIGSHUTDN].iname = "SHUTDN";
546        mesg[SIGSHUTDN].pname = CSAVS(2, 41, "System shutdown imminent");
547    }
548#endif /* SIGSHUTDN */
549
550#ifdef SIGNOWAK
551    /* _CRAYCOM */
552    if (mesg[SIGNOWAK].pname == NULL) {
553        mesg[SIGNOWAK].iname = "NOWAK";
554        mesg[SIGNOWAK].pname = CSAVS(2, 42,
555                                    "Micro-tasking group-no wakeup flag set");
556    }
557#endif /* SIGNOWAK */
558
559#ifdef SIGTHERR
560    /* _CRAYCOM */
561    if (mesg[SIGTHERR].pname == NULL) {
562        mesg[SIGTHERR].iname = "THERR";
563        mesg[SIGTHERR].pname = CSAVS(2, 43,
564                            "Thread error - (use cord -T for detailed info)");
565    }
566#endif /* SIGTHERR */
567
568#ifdef SIGRPE
569    /* cray */
570    if (mesg[SIGRPE].pname == NULL) {
571        mesg[SIGRPE].pname = CSAVS(2, 44, "CRAY Y-MP register parity error");
572        mesg[SIGRPE].iname = "RPE";
573    }
574#endif /* SIGRPE */
575
576#ifdef SIGINFO
577    if (mesg[SIGINFO].pname == NULL) {
578        mesg[SIGINFO].iname = "INFO";
579        mesg[SIGINFO].pname = CSAVS(2, 45, "Information request");
580    }
581#endif /* SIGINFO */
582
583#ifdef SIGSTOP
584    if (mesg[SIGSTOP].pname == NULL) {
585        mesg[SIGSTOP].iname = "STOP";
586# ifdef SUSPENDED
587        mesg[SIGSTOP].pname = CSAVS(2, 46, "Suspended (signal)");
588# else /* !SUSPENDED */
589        mesg[SIGSTOP].pname = CSAVS(2, 47, "Stopped (signal)");
590# endif /* SUSPENDED */
591    }
592#endif /* SIGSTOP */
593
594#ifdef SIGTSTP
595    if (mesg[SIGTSTP].pname == NULL) {
596        mesg[SIGTSTP].iname = "TSTP";
597# ifdef SUSPENDED
598        mesg[SIGTSTP].pname = CSAVS(2, 48, "Suspended");
599# else /* !SUSPENDED */
600        mesg[SIGTSTP].pname = CSAVS(2, 49, "Stopped");
601# endif /* SUSPENDED */
602    }
603#endif /* SIGTSTP */
604
605#ifdef SIGCONT
606    if (mesg[SIGCONT].pname == NULL) {
607        mesg[SIGCONT].iname = "CONT";
608        mesg[SIGCONT].pname = CSAVS(2, 50, "Continued");
609    }
610#endif /* SIGCONT */
611
612#ifdef SIGTTIN
613    if (mesg[SIGTTIN].pname == NULL) {
614        mesg[SIGTTIN].iname = "TTIN";
615# ifdef SUSPENDED
616        mesg[SIGTTIN].pname = CSAVS(2, 51, "Suspended (tty input)");
617# else /* !SUSPENDED */
618        mesg[SIGTTIN].pname = CSAVS(2, 52, "Stopped (tty input)");
619# endif /* SUSPENDED */
620    }
621#endif /* SIGTTIN */
622
623#ifdef SIGTTOU
624    if (mesg[SIGTTOU].pname == NULL) {
625        mesg[SIGTTOU].iname = "TTOU";
626# ifdef SUSPENDED
627        mesg[SIGTTOU].pname = CSAVS(2, 53, "Suspended (tty output)");
628# else /* SUSPENDED */
629        mesg[SIGTTOU].pname = CSAVS(2, 54, "Stopped (tty output)");
630# endif /* SUSPENDED */
631    }
632#endif /* SIGTTOU */
633
634#ifdef SIGWIND
635    /* UNIXPC */
636    if (mesg[SIGWIND].pname == NULL) {
637        mesg[SIGWIND].iname = "WIND";
638        mesg[SIGWIND].pname = CSAVS(2, 55, "Window status changed");
639    }
640#endif /* SIGWIND */
641
642#ifdef SIGWINDOW
643    if (mesg[SIGWINDOW].pname == NULL) {
644        mesg[SIGWINDOW].iname = "WINDOW";
645        mesg[SIGWINDOW].pname = CSAVS(2, 56, "Window size changed");
646    }
647#endif /* SIGWINDOW */
648
649#ifdef SIGWINCH
650    if (mesg[SIGWINCH].pname == NULL) {
651        mesg[SIGWINCH].iname = "WINCH";
652        mesg[SIGWINCH].pname = CSAVS(2, 56, "Window size changed");
653    }
654#endif /* SIGWINCH */
655
656#ifdef SIGPHONE
657    /* UNIXPC */
658    if (mesg[SIGPHONE].pname == NULL) {
659        mesg[SIGPHONE].iname = "PHONE";
660        mesg[SIGPHONE].pname = CSAVS(2, 57, "Phone status changed");
661    }
662# endif /* SIGPHONE */
663
664#ifdef SIGXCPU
665    if (mesg[SIGXCPU].pname == NULL) {
666        mesg[SIGXCPU].iname = "XCPU";
667        mesg[SIGXCPU].pname = CSAVS(2, 58, "Cputime limit exceeded");
668    }
669#endif /* SIGXCPU */
670
671#ifdef SIGXFSZ
672    if (mesg[SIGXFSZ].pname == NULL) {
673        mesg[SIGXFSZ].iname = "XFSZ";
674        mesg[SIGXFSZ].pname = CSAVS(2, 59, "Filesize limit exceeded");
675    }
676#endif /* SIGXFSZ */
677
678#ifdef SIGVTALRM
679    if (mesg[SIGVTALRM].pname == NULL) {
680        mesg[SIGVTALRM].iname = "VTALRM";
681        mesg[SIGVTALRM].pname = CSAVS(2, 60, "Virtual time alarm");
682    }
683#endif /* SIGVTALRM */
684
685#ifdef SIGPROF
686    if (mesg[SIGPROF].pname == NULL) {
687        mesg[SIGPROF].iname = "PROF";
688        mesg[SIGPROF].pname = CSAVS(2, 61, "Profiling time alarm");
689    }
690#endif /* SIGPROF */
691
692#ifdef SIGDIL
693    /* hpux */
694    if (mesg[SIGDIL].pname == NULL) {
695        mesg[SIGDIL].iname = "DIL";
696        mesg[SIGDIL].pname = CSAVS(2, 62, "DIL signal");
697    }
698#endif /* SIGDIL */
699
700#ifdef SIGPOLL
701    if (mesg[SIGPOLL].pname == NULL) {
702        mesg[SIGPOLL].iname = "POLL";
703        mesg[SIGPOLL].pname = CSAVS(2, 63, "Pollable event occured");
704    }
705#endif /* SIGPOLL */
706
707#ifdef SIGWAITING
708    /* solaris */
709    if (mesg[SIGWAITING].pname == NULL) {
710        mesg[SIGWAITING].iname = "WAITING";
711        mesg[SIGWAITING].pname = CSAVS(2, 64, "Process's lwps are blocked");
712    }
713#endif /* SIGWAITING */
714
715#ifdef SIGLWP
716    /* solaris */
717    if (mesg[SIGLWP].pname == NULL) {
718        mesg[SIGLWP].iname = "LWP";
719        mesg[SIGLWP].pname = CSAVS(2, 65, "Special LWP signal");
720    }
721#endif /* SIGLWP */
722
723#ifdef SIGFREEZE
724    /* solaris */
725    if (mesg[SIGFREEZE].pname == NULL) {
726        mesg[SIGFREEZE].iname = "FREEZE";
727        mesg[SIGFREEZE].pname = CSAVS(2, 66, "Special CPR Signal");
728    }
729#endif /* SIGFREEZE */
730
731#ifdef SIGTHAW
732    /* solaris */
733    if (mesg[SIGTHAW].pname == NULL) {
734        mesg[SIGTHAW].iname = "THAW";
735        mesg[SIGTHAW].pname = CSAVS(2, 67, "Special CPR Signal");
736    }
737#endif /* SIGTHAW */
738
739#ifdef SIGCANCEL
740    /* solaris */
741    if (mesg[SIGCANCEL].pname == NULL) {
742        mesg[SIGCANCEL].iname = "CANCEL";
743        mesg[SIGCANCEL].pname = CSAVS(2, 109,
744            "Thread cancellation signal used by libthread");
745    }
746#endif /* SIGCANCEL */
747
748/*
749 * Careful, some OS's (HP/UX 10.0) define these as -1
750 */
751#ifdef SIGRTMIN
752    /*
753     * Cannot do this at compile time; Solaris2 uses _sysconf for these
754     */
755    if (SIGRTMIN > 0 && SIGRTMIN < NUMSIG) {
756        if (mesg[SIGRTMIN].pname == NULL) {
757            mesg[SIGRTMIN].iname = "RTMIN";
758            mesg[SIGRTMIN].pname = CSAVS(2, 68, "First Realtime Signal");
759        }
760
761        if (mesg[SIGRTMIN+1].pname == NULL) {
762            mesg[SIGRTMIN+1].iname = "RTMIN+1";
763            mesg[SIGRTMIN+1].pname = CSAVS(2, 69, "Second Realtime Signal");
764        }
765
766        if (mesg[SIGRTMIN+2].pname == NULL) {
767            mesg[SIGRTMIN+2].iname = "RTMIN+2";
768            mesg[SIGRTMIN+2].pname = CSAVS(2, 70, "Third Realtime Signal");
769        }
770
771        if (mesg[SIGRTMIN+3].pname == NULL) {
772            mesg[SIGRTMIN+3].iname = "RTMIN+3";
773            mesg[SIGRTMIN+3].pname = CSAVS(2, 71, "Fourth Realtime Signal");
774        }
775    }
776#endif /* SIGRTMIN */
777
778#ifdef SIGRTMAX
779    /*
780     * Cannot do this at compile time; Solaris2 uses _sysconf for these
781     */
782    if (SIGRTMAX > 0 && SIGRTMAX < NUMSIG) {
783        if (mesg[SIGRTMAX-3].pname == NULL) {
784            mesg[SIGRTMAX-3].iname = "RTMAX-3";
785            mesg[SIGRTMAX-3].pname = CSAVS(2, 72,
786                                           "Fourth Last Realtime Signal");
787        }
788
789        if (mesg[SIGRTMAX-2].pname == NULL) {
790            mesg[SIGRTMAX-2].iname = "RTMAX-2";
791            mesg[SIGRTMAX-2].pname = CSAVS(2, 73,
792                                           "Third Last Realtime Signal");
793        }
794
795        if (mesg[SIGRTMAX-1].pname == NULL) {
796            mesg[SIGRTMAX-1].iname = "RTMAX-1";
797            mesg[SIGRTMAX-1].pname = CSAVS(2, 74,
798                                           "Second Last Realtime Signal");
799        }
800
801        if (mesg[SIGRTMAX].pname == NULL) {
802            mesg[SIGRTMAX].iname = "RTMAX";
803            mesg[SIGRTMAX].pname = CSAVS(2, 75,
804                                         "Last Realtime Signal");
805        }
806    }
807#endif /* SIGRTMAX */
808
809
810#ifdef SIGAIO
811    /* aiws */
812    if (mesg[SIGAIO].pname == NULL) {
813        mesg[SIGAIO].iname = "AIO";
814        mesg[SIGAIO].pname = CSAVS(2, 76, "LAN Asyncronous I/O");
815    }
816#endif /* SIGAIO */
817
818#ifdef SIGPTY
819    /* aiws */
820    if (mesg[SIGPTY].pname == NULL) {
821        mesg[SIGPTY].iname = "PTY";
822        mesg[SIGPTY].pname = CSAVS(2, 77, "PTY read/write availability");
823    }
824#endif /* SIGPTY */
825
826#ifdef SIGIOINT
827    /* aiws */
828    if (mesg[SIGIOINT].pname == NULL) {
829        mesg[SIGIOINT].iname = "IOINT";
830        mesg[SIGIOINT].pname = CSAVS(2, 78, "I/O intervention required");
831    }
832#endif /* SIGIOINT */
833
834#ifdef SIGGRANT
835    /* aiws */
836    if (mesg[SIGGRANT].pname == NULL) {
837        mesg[SIGGRANT].iname = "GRANT";
838        mesg[SIGGRANT].pname = CSAVS(2, 79, "HFT monitor mode granted");
839    }
840#endif /* SIGGRANT */
841
842#ifdef SIGRETRACT
843    /* aiws */
844    if (mesg[SIGRETRACT].pname == NULL) {
845        mesg[SIGRETRACT].iname = "RETRACT";
846        mesg[SIGRETRACT].pname = CSAVS(2, 80,
847                                  "HFT monitor mode should be relinguished");
848    }
849#endif /* SIGRETRACT */
850
851#ifdef SIGSOUND
852    /* aiws */
853    if (mesg[SIGSOUND].pname == NULL) {
854        mesg[SIGSOUND].iname = "SOUND";
855        mesg[SIGSOUND].pname = CSAVS(2, 81, "HFT sound control has completed");
856    }
857#endif /* SIGSOUND */
858
859#ifdef SIGSMSG
860    /* aiws */
861    if (mesg[SIGSMSG].pname == NULL) {
862        mesg[SIGSMSG].iname = "SMSG";
863        mesg[SIGSMSG].pname = CSAVS(2, 82, "Data in HFT ring buffer");
864    }
865#endif /* SIGMSG */
866
867#ifdef SIGMIGRATE
868    /* IBMAIX */
869    if (mesg[SIGMIGRATE].pname == NULL) {
870        mesg[SIGMIGRATE].iname = "MIGRATE";
871        mesg[SIGMIGRATE].pname = CSAVS(2, 83, "Migrate process");
872    }
873#endif /* SIGMIGRATE */
874
875#ifdef SIGSAK
876    /* IBMAIX */
877    if (mesg[SIGSAK].pname == NULL) {
878        mesg[SIGSAK].iname = "SAK";
879        mesg[SIGSAK].pname = CSAVS(2, 84, "Secure attention key");
880    }
881#endif /* SIGSAK */
882
883#ifdef SIGRESCHED
884    /* CX/UX */
885    if (mesg[SIGRESCHED].pname == NULL) {
886        mesg[SIGRESCHED].iname = "RESCHED";
887        mesg[SIGRESCHED].pname = CSAVS(2, 85, "Reschedule");
888    }
889#endif /* SIGRESCHED */
890
891#ifdef SIGDEBUG
892    /* VMS_POSIX */
893    if (mesg[SIGDEBUG].pname == NULL) {
894        mesg[SIGDEBUG].iname = "DEBUG";
895        mesg[SIGDEBUG].pname = CSAVS(2, 86, "Signaling SS$_DEBUG");
896    }
897#endif /* SIGDEBUG */
898
899#ifdef SIGPRIO
900    /* Lynx */
901    if (mesg[SIGPRIO].pname == NULL) {
902        mesg[SIGPRIO].iname = "PRIO";
903        mesg[SIGPRIO].pname = CSAVS(2, 87, "Priority changed");
904    }
905#endif /* SIGPRIO */
906
907#ifdef SIGDLK
908    /* cray */
909    if (mesg[SIGDLK].pname == NULL) {
910        mesg[SIGDLK].iname = "DLK";
911        mesg[SIGDLK].pname = CSAVS(2, 88, "True deadlock detected");
912    }
913#endif /* SIGDLK */
914
915#ifdef SIGTINT
916    /* masscomp */
917    if (mesg[SIGTINT].pname == NULL) {
918        mesg[SIGTINT].iname = "TINT";
919        mesg[SIGTINT].pname = CSAVS(2, 89, "New input character");
920    }
921#endif /* SIGTINT */
922
923#ifdef SIGSTKFLT
924    if (mesg[SIGSTKFLT].pname == NULL) {
925        mesg[SIGSTKFLT].iname = "STKFLT";
926        mesg[SIGSTKFLT].pname = CSAVS(2, 90, "Stack limit exceeded");
927    }
928#endif /* SIGSTKFLT */
929
930#ifdef SIGUNUSED
931    if (mesg[SIGUNUSED].pname == NULL) {
932        mesg[SIGUNUSED].iname = "UNUSED";
933        mesg[SIGUNUSED].pname = CSAVS(2, 91, "Unused signal");
934    }
935#endif /* SIGUNUSED */
936
937#ifdef SIGOVLY
938    /* SX-4 */
939    if (mesg[SIGOVLY].pname == NULL) {
940        mesg[SIGOVLY].iname = "OVLY";
941        mesg[SIGOVLY].pname = CSAVS(2, 92, "LM overlay");
942    }
943#endif /* SIGOVLY */
944
945#ifdef SIGFRZ
946    /* SX-4 */
947    if (mesg[SIGFRZ].pname == NULL) {
948        mesg[SIGFRZ].iname = "FRZ";
949        mesg[SIGFRZ].pname = CSAVS(2, 93, "system freeze");
950    }
951#endif /* SIGFRZ */
952
953#ifdef SIGDFRZ
954    /* SX-4 */
955    if (mesg[SIGDFRZ].pname == NULL) {
956        mesg[SIGDFRZ].iname = "DFRZ";
957        mesg[SIGDFRZ].pname = CSAVS(2, 94, "system defreeze");
958    }
959#endif /* SIGDFRZ */
960
961#ifdef SIGDEAD
962    /* SX-4 */
963    if (mesg[SIGDEAD].pname == NULL) {
964        mesg[SIGDEAD].iname = "DEAD";
965        mesg[SIGDEAD].pname = CSAVS(2, 95, "dead lock");
966    }
967#endif /* SIGDEAD */
968
969#ifdef SIGXMEM
970    /* SX-4 */
971    if (mesg[SIGXMEM].pname == NULL) {
972        mesg[SIGXMEM].iname = "XMEM";
973        mesg[SIGXMEM].pname = CSAVS(2, 96, "exceeded memory size limit");
974    }
975#endif /* SIGXMEM */
976
977#ifdef SIGXDSZ
978    /* SX-4 */
979    if (mesg[SIGXDSZ].pname == NULL) {
980        mesg[SIGXDSZ].iname = "XDSZ";
981        mesg[SIGXDSZ].pname = CSAVS(2, 97, "exceeded data size limit");
982    }
983#endif /* SIGXDSZ */
984
985#ifdef SIGMEM32
986    /* SX-4 */
987    if (mesg[SIGMEM32].pname == NULL) {
988        mesg[SIGMEM32].iname = "MEM32";
989        mesg[SIGMEM32].pname = CSAVS(2, 98, "exceeded memory size limit of 32KB");
990    }
991#endif /* SIGMEM32 */
992
993#ifdef SIGNMEM
994    /* SX-4 */
995    if (mesg[SIGNMEM].pname == NULL) {
996        mesg[SIGNMEM].iname = "NMEM";
997        mesg[SIGNMEM].pname = CSAVS(2, 99, "exce error for no memory");
998    }
999#endif /* SIGNMEM */
1000
1001#ifdef SIGCHKP
1002    /* SX-4 */
1003    if (mesg[SIGCHKP].pname == NULL) {
1004        mesg[SIGCHKP].iname = "CHKP";
1005        mesg[SIGCHKP].pname = CSAVS(2, 100, "check point start");
1006    }
1007#endif /* SIGCHKP */
1008
1009#ifdef SIGKCHKP
1010#if 0
1011    /* SX-4 */
1012    if (mesg[SIGKCHKP].pname == NULL) {
1013        mesg[SIGKCHKP].iname = "KCHKP";
1014        mesg[SIGKCHKP].pname = CSAVS(2, 101, "check point start of kernel");
1015    }
1016#endif
1017#endif /* SIGKCHKP */
1018
1019#ifdef SIGRSTA
1020    /* SX-4 */
1021    if (mesg[SIGRSTA].pname == NULL) {
1022        mesg[SIGRSTA].iname = "RSTA";
1023        mesg[SIGRSTA].pname = CSAVS(2, 102, "restart start");
1024    }
1025#endif /* SIGRSTA */
1026
1027#ifdef SIGKRSTA
1028#if 0
1029    /* SX-4 */
1030    if (mesg[SIGKRSTA].pname == NULL) {
1031        mesg[SIGKRSTA].iname = "KRSTA";
1032        mesg[SIGKRSTA].pname = CSAVS(2, 103, "restart of kernel");
1033    }
1034#endif
1035#endif /* SIGKRSTA */
1036
1037#ifdef SIGXXMU
1038    /* SX-4 */
1039    if (mesg[SIGXXMU].pname == NULL) {
1040        mesg[SIGXXMU].iname = "XXMU";
1041        mesg[SIGXXMU].pname = CSAVS(2, 104, "exeeded XMU size limit");
1042    }
1043#endif /* SIGXXMU */
1044
1045#ifdef SIGXRLG0
1046    /* SX-4 */
1047    if (mesg[SIGXRLG0].pname == NULL) {
1048        mesg[SIGXRLG0].iname = "XRLG0";
1049        mesg[SIGXRLG0].pname = CSAVS(2, 105, "exeeded RLG0 limit");
1050    }
1051#endif /* SIGXRLG0 */
1052
1053#ifdef SIGXRLG1
1054    /* SX-4 */
1055    if (mesg[SIGXRLG1].pname == NULL) {
1056        mesg[SIGXRLG1].iname = "XRLG1";
1057        mesg[SIGXRLG1].pname = CSAVS(2, 106, "exeeded RLG1 limit");
1058    }
1059#endif /* SIGXRLG1 */
1060
1061#ifdef SIGXRLG2
1062    /* SX-4 */
1063    if (mesg[SIGXRLG2].pname == NULL) {
1064        mesg[SIGXRLG2].iname = "XRLG2";
1065        mesg[SIGXRLG2].pname = CSAVS(2, 107, "exeeded RLG2 limit");
1066    }
1067#endif /* SIGXRLG2 */
1068
1069#ifdef SIGXRLG3
1070    /* SX-4 */
1071    if (mesg[SIGXRLG3].pname == NULL) {
1072        mesg[SIGXRLG3].iname = "XRLG3";
1073        mesg[SIGXRLG3].pname = CSAVS(2, 108, "exeeded RLG3 limit");
1074    }
1075#endif /* SIGXRLG3 */
1076}
Note: See TracBrowser for help on using the repository browser.