/* * Init the elst depending on the locale */ void errinit(void) { #ifdef NLS_CATALOGS size_t i; for (i = 0; i < NO_ERRORS; i++) xfree((char *)(intptr_t)elst[i]); # if defined(__FreeBSD__) || defined(hpux) || defined(__MidnightBSD__) # define NLS_MAXSET 30 for (i = 1; i <= NLS_MAXSET; i++) CGETS(i, 1, "" ); # endif #endif elst[ERR_SYNTAX] = CSAVS(1, 1, "Syntax Error"); elst[ERR_NOTALLOWED] = CSAVS(1, 2, "%s is not allowed"); elst[ERR_WTOOLONG] = CSAVS(1, 3, "Word too long"); elst[ERR_LTOOLONG] = CSAVS(1, 4, "$< line too long"); elst[ERR_DOLZERO] = CSAVS(1, 5, "No file for $0"); elst[ERR_INCBR] = CSAVS(1, 6, "Incomplete [] modifier"); elst[ERR_EXPORD] = CSAVS(1, 7, "$ expansion must end before ]"); elst[ERR_BADMOD] = CSAVS(1, 8, "Bad : modifier in $ (%c)"); elst[ERR_SUBSCRIPT] = CSAVS(1, 9, "Subscript error"); elst[ERR_BADNUM] = CSAVS(1, 10, "Badly formed number"); elst[ERR_NOMORE] = CSAVS(1, 11, "No more words"); elst[ERR_FILENAME] = CSAVS(1, 12, "Missing file name"); elst[ERR_GLOB] = CSAVS(1, 13, "Internal glob error"); elst[ERR_COMMAND] = CSAVS(1, 14, "Command not found"); elst[ERR_TOOFEW] = CSAVS(1, 15, "Too few arguments"); elst[ERR_TOOMANY] = CSAVS(1, 16, "Too many arguments"); elst[ERR_DANGER] = CSAVS(1, 17, "Too dangerous to alias that"); elst[ERR_EMPTYIF] = CSAVS(1, 18, "Empty if"); elst[ERR_IMPRTHEN] = CSAVS(1, 19, "Improper then"); elst[ERR_NOPAREN] = CSAVS(1, 20, "Words not parenthesized"); elst[ERR_NOTFOUND] = CSAVS(1, 21, "%s not found"); elst[ERR_MASK] = CSAVS(1, 22, "Improper mask"); elst[ERR_LIMIT] = CSAVS(1, 23, "No such limit"); elst[ERR_TOOLARGE] = CSAVS(1, 24, "Argument too large"); elst[ERR_SCALEF] = CSAVS(1, 25, "Improper or unknown scale factor"); elst[ERR_UNDVAR] = CSAVS(1, 26, "Undefined variable"); elst[ERR_DEEP] = CSAVS(1, 27, "Directory stack not that deep"); elst[ERR_BADSIG] = CSAVS(1, 28, "Bad signal number"); elst[ERR_UNKSIG] = CSAVS(1, 29, "Unknown signal; kill -l lists signals"); elst[ERR_VARBEGIN] = CSAVS(1, 30, "Variable name must begin with a letter"); elst[ERR_VARTOOLONG] = CSAVS(1, 31, "Variable name too long"); elst[ERR_VARALNUM] = CSAVS(1, 32, "Variable name must contain alphanumeric characters"); elst[ERR_JOBCONTROL] = CSAVS(1, 33, "No job control in this shell"); elst[ERR_EXPRESSION] = CSAVS(1, 34, "Expression Syntax"); elst[ERR_NOHOMEDIR] = CSAVS(1, 35, "No home directory"); elst[ERR_CANTCHANGE] = CSAVS(1, 36, "Can't change to home directory"); elst[ERR_NULLCOM] = CSAVS(1, 37, "Invalid null command"); elst[ERR_ASSIGN] = CSAVS(1, 38, "Assignment missing expression"); elst[ERR_UNKNOWNOP] = CSAVS(1, 39, "Unknown operator"); elst[ERR_AMBIG] = CSAVS(1, 40, "Ambiguous"); elst[ERR_EXISTS] = CSAVS(1, 41, "%s: File exists"); elst[ERR_ARGC] = CSAVS(1, 42, "Argument for -c ends in backslash"); elst[ERR_INTR] = CSAVS(1, 43, "Interrupted"); elst[ERR_RANGE] = CSAVS(1, 44, "Subscript out of range"); elst[ERR_OVERFLOW] = CSAVS(1, 45, "Line overflow"); elst[ERR_NOSUCHJOB] = CSAVS(1, 46, "No such job"); elst[ERR_TERMINAL] = CSAVS(1, 47, "Can't from terminal"); elst[ERR_NOTWHILE] = CSAVS(1, 48, "Not in while/foreach"); elst[ERR_NOPROC] = CSAVS(1, 49, "No more processes"); elst[ERR_NOMATCH] = CSAVS(1, 50, "No match"); elst[ERR_MISSING] = CSAVS(1, 51, "Missing %c"); elst[ERR_UNMATCHED] = CSAVS(1, 52, "Unmatched %c"); elst[ERR_NOMEM] = CSAVS(1, 53, "Out of memory"); elst[ERR_PIPE] = CSAVS(1, 54, "Can't make pipe"); elst[ERR_SYSTEM] = CSAVS(1, 55, "%s: %s"); elst[ERR_STRING] = CSAVS(1, 56, "%s"); elst[ERR_JOBS] = CSAVS(1, 57, "Usage: jobs [ -l ]"); elst[ERR_JOBARGS] = CSAVS(1, 58, "Arguments should be jobs or process id's"); elst[ERR_JOBCUR] = CSAVS(1, 59, "No current job"); elst[ERR_JOBPREV] = CSAVS(1, 60, "No previous job"); elst[ERR_JOBPAT] = CSAVS(1, 61, "No job matches pattern"); elst[ERR_NESTING] = CSAVS(1, 62, "Fork nesting > %d; maybe `...` loop"); elst[ERR_JOBCTRLSUB] = CSAVS(1, 63, "No job control in subshells"); elst[ERR_SYNC] = CSAVS(1, 64, "Sync fault: Process %d not found"); elst[ERR_STOPPED] = #ifdef SUSPENDED CSAVS(1, 65, "%sThere are suspended jobs"); #else CSAVS(1, 66, "%sThere are stopped jobs"); #endif /* SUSPENDED */ elst[ERR_NODIR] = CSAVS(1, 67, "No other directory"); elst[ERR_EMPTY] = CSAVS(1, 68, "Directory stack empty"); elst[ERR_BADDIR] = CSAVS(1, 69, "Bad directory"); elst[ERR_DIRUS] = CSAVS(1, 70, "Usage: %s [-%s]%s"); elst[ERR_HFLAG] = CSAVS(1, 71, "No operand for -h flag"); elst[ERR_NOTLOGIN] = CSAVS(1, 72, "Not a login shell"); elst[ERR_DIV0] = CSAVS(1, 73, "Division by 0"); elst[ERR_MOD0] = CSAVS(1, 74, "Mod by 0"); elst[ERR_BADSCALE] = CSAVS(1, 75, "Bad scaling; did you mean \"%s\"?"); elst[ERR_SUSPLOG] = CSAVS(1, 76, "Can't suspend a login shell (yet)"); elst[ERR_UNKUSER] = CSAVS(1, 77, "Unknown user: %s"); elst[ERR_NOHOME] = CSAVS(1, 78, "No $home variable set"); elst[ERR_HISTUS] = CSAVS(1, 79, "Usage: history [-%s] [# number of events]"); elst[ERR_SPDOLLT] = CSAVS(1, 80, "$, ! or < not allowed with $# or $?"); elst[ERR_NEWLINE] = CSAVS(1, 81, "Newline in variable name"); elst[ERR_SPSTAR] = CSAVS(1, 82, "* not allowed with $# or $?"); elst[ERR_DIGIT] = CSAVS(1, 83, "$?<digit> or $#<digit> not allowed"); elst[ERR_VARILL] = CSAVS(1, 84, "Illegal variable name"); elst[ERR_NLINDEX] = CSAVS(1, 85, "Newline in variable index"); elst[ERR_EXPOVFL] = CSAVS(1, 86, "Expansion buffer overflow"); elst[ERR_VARSYN] = CSAVS(1, 87, "Variable syntax"); elst[ERR_BADBANG] = CSAVS(1, 88, "Bad ! form"); elst[ERR_NOSUBST] = CSAVS(1, 89, "No previous substitute"); elst[ERR_BADSUBST] = CSAVS(1, 90, "Bad substitute"); elst[ERR_LHS] = CSAVS(1, 91, "No previous left hand side"); elst[ERR_RHSLONG] = CSAVS(1, 92, "Right hand side too long"); elst[ERR_BADBANGMOD] = CSAVS(1, 93, "Bad ! modifier: %c"); elst[ERR_MODFAIL] = CSAVS(1, 94, "Modifier failed"); elst[ERR_SUBOVFL] = CSAVS(1, 95, "Substitution buffer overflow"); elst[ERR_BADBANGARG] = CSAVS(1, 96, "Bad ! arg selector"); elst[ERR_NOSEARCH] = CSAVS(1, 97, "No prev search"); elst[ERR_NOEVENT] = CSAVS(1, 98, "%s: Event not found"); elst[ERR_TOOMANYRP] = CSAVS(1, 99, "Too many )'s"); elst[ERR_TOOMANYLP] = CSAVS(1, 100, "Too many ('s"); elst[ERR_BADPLP] = CSAVS(1, 101, "Badly placed ("); elst[ERR_MISRED] = CSAVS(1, 102, "Missing name for redirect"); elst[ERR_OUTRED] = CSAVS(1, 103, "Ambiguous output redirect"); elst[ERR_REDPAR] = CSAVS(1, 104, "Can't << within ()'s"); elst[ERR_INRED] = CSAVS(1, 105, "Ambiguous input redirect"); elst[ERR_BADPLPS] = CSAVS(1, 106, "Badly placed ()'s"); elst[ERR_ALIASLOOP] = CSAVS(1, 107, "Alias loop"); elst[ERR_NOWATCH] = CSAVS(1, 108, "No $watch variable set"); elst[ERR_NOSCHED] = CSAVS(1, 109, "No scheduled events"); elst[ERR_SCHEDUSAGE] = CSAVS(1, 110, "Usage: sched -<item#>.\nUsage: sched [+]hh:mm <command>"); elst[ERR_SCHEDEV] = CSAVS(1, 111, "Not that many scheduled events"); elst[ERR_SCHEDCOM] = CSAVS(1, 112, "No command to run"); elst[ERR_SCHEDTIME] = CSAVS(1, 113, "Invalid time for event"); elst[ERR_SCHEDREL] = CSAVS(1, 114, "Relative time inconsistent with am/pm"); elst[ERR_TCNOSTR] = CSAVS(1, 115, "Out of termcap string space"); elst[ERR_SETTCUS] = CSAVS(1, 116, "Usage: settc %s [yes|no]"); elst[ERR_TCCAP] = CSAVS(1, 117, "Unknown capability `%s'"); elst[ERR_TCPARM] = CSAVS(1, 118, "Unknown termcap parameter `%%%c'"); elst[ERR_TCARGS] = CSAVS(1, 119, "Too many arguments for `%s' (%d)"); elst[ERR_TCNARGS] = CSAVS(1, 120, "`%s' requires %d arguments"); elst[ERR_TCUSAGE] = CSAVS(1, 121, "Usage: echotc [-v|-s] [<capability> [<args>]]"); elst[ERR_ARCH] = CSAVS(1, 122, "%s: %s. Binary file not executable"); elst[ERR_HISTLOOP] = CSAVS(1, 123, "!# History loop"); elst[ERR_FILEINQ] = CSAVS(1, 124, "Malformed file inquiry"); elst[ERR_SELOVFL] = CSAVS(1, 125, "Selector overflow"); #ifdef apollo elst[ERR_TCSHUSAGE] = CSAVS(1, 126, "Unknown option: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX -Dname[=value] ] [ argument ... ]"); #else /* !apollo */ # ifdef convex elst[ERR_TCSHUSAGE] = CSAVS(1, 127, "Unknown option: `-%s'\nUsage: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]"); # else /* rest */ elst[ERR_TCSHUSAGE] = CSAVS(1, 128, "Unknown option: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX ] [ argument ... ]"); # endif /* convex */ #endif /* apollo */ elst[ERR_COMPCOM] = CSAVS(1, 129, "\nInvalid completion: \"%s\""); elst[ERR_COMPINV] = CSAVS(1, 130, "\nInvalid %s: '%c'"); elst[ERR_COMPMIS] = CSAVS(1, 131, "\nMissing separator '%c' after %s \"%s\""); elst[ERR_COMPINC] = CSAVS(1, 132, "\nIncomplete %s: \"%s\""); elst[ERR_MFLAG] = CSAVS(1, 133, "No operand for -m flag"); elst[ERR_ULIMUS] = CSAVS(1, 134, "Usage: unlimit [-fh] [limits]"); elst[ERR_READONLY] = CSAVS(1, 135, "$%S is read-only"); elst[ERR_BADJOB] = CSAVS(1, 136, "No such job (badjob)"); elst[ERR_BADCOLORVAR] = CSAVS(1, 137, "Unknown colorls variable `%c%c'"); elst[ERR_EOF] = CSAVS(1, 138, "Unexpected end of file"); }
void mesginit(void) { #ifdef NLS_CATALOGS int i; for (i = 0; i < NUMSIG; i++) { xfree((char *)(intptr_t)mesg[i].pname); mesg[i].pname = NULL; } #endif /* NLS_CATALOGS */ #if defined(SIGNULL) || defined(DECOSF1) # ifndef SIGNULL # define SIGNULL 0 # endif /* !SIGNULL */ if (mesg[SIGNULL].pname == NULL) { mesg[SIGNULL].iname = "NULL"; mesg[SIGNULL].pname = CSAVS(2, 1, "Null signal"); } #endif /* SIGNULL || DECOSF1 */ #ifdef SIGHUP if (mesg[SIGHUP].pname == NULL) { mesg[SIGHUP].iname = "HUP"; mesg[SIGHUP].pname = CSAVS(2, 2, "Hangup"); } #endif /* SIGHUP */ #ifdef SIGINT if (mesg[SIGINT].pname == NULL) { mesg[SIGINT].iname = "INT"; mesg[SIGINT].pname = CSAVS(2, 3, "Interrupt"); } #endif /* SIGINT */ #ifdef SIGQUIT if (mesg[SIGQUIT].pname == NULL) { mesg[SIGQUIT].iname = "QUIT"; mesg[SIGQUIT].pname = CSAVS(2, 4, "Quit"); } #endif /* SIGQUIT */ #ifdef SIGILL if (mesg[SIGILL].pname == NULL) { mesg[SIGILL].iname = "ILL"; mesg[SIGILL].pname = CSAVS(2, 5, "Illegal instruction"); } #endif /* SIGILL */ #ifdef SIGTRAP if (mesg[SIGTRAP].pname == NULL) { mesg[SIGTRAP].iname = "TRAP"; mesg[SIGTRAP].pname = CSAVS(2, 6, "Trace/BPT trap"); } #endif /* SIGTRAP */ #ifdef SIGABRT if (mesg[SIGABRT].pname == NULL) { mesg[SIGABRT].iname = "ABRT"; mesg[SIGABRT].pname = CSAVS(2, 7, "Abort"); } #endif /* SIGABRT */ #ifdef SIGIOT if (mesg[SIGIOT].pname == NULL) { mesg[SIGIOT].iname = "IOT"; mesg[SIGIOT].pname = CSAVS(2, 8, "IOT trap"); } #endif /* SIGIOT */ #ifdef SIGDANGER /* aiws */ if (mesg[SIGDANGER].pname == NULL) { mesg[SIGDANGER].iname = "DANGER"; mesg[SIGDANGER].pname = CSAVS(2, 9, "System Crash Imminent"); } #endif /* SIGDANGER */ #ifdef SIGERR /* _CRAY */ if (mesg[SIGERR].pname == NULL) { mesg[SIGERR].iname = "ERR"; mesg[SIGERR].pname = CSAVS(2, 10, "Error exit"); } #endif /* SIGERR */ #ifdef SIGEMT if (mesg[SIGEMT].pname == NULL) { mesg[SIGEMT].iname = "EMT"; mesg[SIGEMT].pname = CSAVS(2, 11, "EMT trap"); } #endif /* SIGEMT */ #ifdef SIGFPE if (mesg[SIGFPE].pname == NULL) { mesg[SIGFPE].iname = "FPE"; mesg[SIGFPE].pname = CSAVS(2, 12, "Floating exception"); } #endif /* SIGFPE */ #ifdef SIGKILL if (mesg[SIGKILL].pname == NULL) { mesg[SIGKILL].iname = "KILL"; mesg[SIGKILL].pname = CSAVS(2, 13, "Killed"); } #endif /* SIGKILL */ #ifdef SIGUSR1 if (mesg[SIGUSR1].pname == NULL) { mesg[SIGUSR1].iname = "USR1"; mesg[SIGUSR1].pname = CSAVS(2, 14, "User signal 1"); } #endif /* SIGUSR1 */ #ifdef SIGUSR2 if (mesg[SIGUSR2].pname == NULL) { mesg[SIGUSR2].iname = "USR2"; mesg[SIGUSR2].pname = CSAVS(2, 15, "User signal 2"); } #endif /* SIGUSR2 */ #ifdef SIGSEGV if (mesg[SIGSEGV].pname == NULL) { mesg[SIGSEGV].iname = "SEGV"; mesg[SIGSEGV].pname = CSAVS(2, 16, "Segmentation fault"); } #endif /* SIGSEGV */ #ifdef SIGBUS if (mesg[SIGBUS].pname == NULL) { mesg[SIGBUS].iname = "BUS"; mesg[SIGBUS].pname = CSAVS(2, 17, "Bus error"); } #endif /* SIGBUS */ #ifdef SIGPRE /* _CRAY || IBMAIX */ if (mesg[SIGPRE].pname == NULL) { mesg[SIGPRE].iname = "PRE"; mesg[SIGPRE].pname = CSAVS(2, 18, "Program range error"); } #endif /* SIGPRE */ #ifdef SIGORE /* _CRAY */ if (mesg[SIGORE].pname == NULL) { mesg[SIGORE].iname = "ORE"; mesg[SIGORE].pname = CSAVS(2, 19, "Operand range error"); } #endif /* SIGORE */ #ifdef SIGSYS if (mesg[SIGSYS].pname == NULL) { mesg[SIGSYS].iname = "SYS"; mesg[SIGSYS].pname = CSAVS(2, 20, "Bad system call"); } #endif /* SIGSYS */ #ifdef SIGPIPE if (mesg[SIGPIPE].pname == NULL) { mesg[SIGPIPE].iname = "PIPE"; mesg[SIGPIPE].pname = CSAVS(2, 21, "Broken pipe"); } #endif /* SIGPIPE */ #ifdef SIGALRM if (mesg[SIGALRM].pname == NULL) { mesg[SIGALRM].iname = "ALRM"; mesg[SIGALRM].pname = CSAVS(2, 22, "Alarm clock"); } #endif /* SIGALRM */ #ifdef SIGTERM if (mesg[SIGTERM].pname == NULL) { mesg[SIGTERM].iname = "TERM"; mesg[SIGTERM].pname = CSAVS(2, 23, "Terminated"); } #endif /* SIGTERM */ /* SIGCLD vs SIGCHLD */ #if !defined(SIGCHLD) || defined(SOLARIS2) || defined(apollo) || defined(__EMX__) /* If we don't define SIGCHLD, or our OS prefers SIGCLD to SIGCHLD, */ /* check for SIGCLD */ # ifdef SIGCLD if (mesg[SIGCLD].pname == NULL) { mesg[SIGCLD].iname = "CLD"; # ifdef BSDJOBS mesg[SIGCLD].pname = CSAVS(2, 24, "Child status change"); # else /* !BSDJOBS */ mesg[SIGCLD].pname = CSAVS(2, 25, "Death of child"); # endif /* BSDJOBS */ } # endif /* SIGCLD */ #else /* !(!SIGCHLD || SOLARIS2 || apollo || __EMX__) */ /* We probably define SIGCHLD */ # ifdef SIGCHLD if (mesg[SIGCHLD].pname == NULL) { mesg[SIGCHLD].iname = "CHLD"; # ifdef BSDJOBS mesg[SIGCHLD].pname = CSAVS(2, 27, "Child stopped or exited"); # else /* !BSDJOBS */ mesg[SIGCHLD].pname = CSAVS(2, 28, "Child exited"); # endif /* BSDJOBS */ } # endif /* SIGCHLD */ #endif /* !SIGCHLD || SOLARIS2 || apollo || __EMX__ */ #ifdef SIGAPOLLO /* apollo */ if (mesg[SIGAPOLLO].pname == NULL) { mesg[SIGAPOLLO].iname = "APOLLO"; mesg[SIGAPOLLO].pname = CSAVS(2, 26, "Apollo-specific fault"); } #endif /* SIGAPOLLO */ #ifdef SIGPWR if (mesg[SIGPWR].pname == NULL) { mesg[SIGPWR].iname = "PWR"; mesg[SIGPWR].pname = CSAVS(2, 29, "Power failure"); } #endif /* SIGPWR */ #ifdef SIGLOST if (mesg[SIGLOST].pname == NULL) { mesg[SIGLOST].iname = "LOST"; mesg[SIGLOST].pname = CSAVS(2, 30, "Resource Lost"); } #endif /* SIGLOST */ #ifdef SIGBREAK /* __EMX__ */ if (mesg[SIGBREAK].pname == NULL) { mesg[SIGBREAK].iname = "BREAK"; mesg[SIGBREAK].pname = CSAVS(2, 31, "Break (Ctrl-Break)"); } #endif /* SIGBREAK */ #ifdef SIGIO # if !defined(SIGPOLL) || SIGPOLL != SIGIO if (mesg[SIGIO].pname == NULL) { mesg[SIGIO].iname = "IO"; # ifdef cray mesg[SIGIO].pname = CSAVS(2, 32, "Input/output possible signal"); # else /* !cray */ mesg[SIGIO].pname = CSAVS(2, 33, "Asynchronous I/O (select)"); # endif /* cray */ } # endif /* !SIGPOLL || SIGPOLL != SIGIO */ #endif /* SIGIO */ #ifdef SIGURG if (mesg[SIGURG].pname == NULL) { mesg[SIGURG].iname = "URG"; mesg[SIGURG].pname = CSAVS(2, 34, "Urgent condition on I/O channel"); } #endif /* SIGURG */ #ifdef SIGMT /* cray */ if (mesg[SIGMT].pname == NULL) { mesg[SIGMT].iname = "MT"; mesg[SIGMT].pname = CSAVS(2, 35, "Multitasking wake-up"); } #endif /* SIGMT */ #ifdef SIGMTKILL /* cray */ if (mesg[SIGMTKILL].pname == NULL) { mesg[SIGMTKILL].iname = "MTKILL"; mesg[SIGMTKILL].pname = CSAVS(2, 36, "Multitasking kill"); } #endif /* SIGMTKILL */ #ifdef SIGBUFIO /* _CRAYCOM */ if (mesg[SIGBUFIO].pname == NULL) { mesg[SIGBUFIO].iname = "BUFIO"; mesg[SIGBUFIO].pname = CSAVS(2, 37, "Fortran asynchronous I/O completion"); } #endif /* SIGBUFIO */ #ifdef SIGRECOVERY /* _CRAYCOM */ if (mesg[SIGRECOVERY].pname == NULL) { mesg[SIGRECOVERY].iname = "RECOVERY"; mesg[SIGRECOVERY].pname = CSAVS(2, 38, "Recovery"); } #endif /* SIGRECOVERY */ #ifdef SIGUME /* _CRAYCOM */ if (mesg[SIGUME].pname == NULL) { mesg[SIGUME].iname = "UME"; mesg[SIGUME].pname = CSAVS(2, 39, "Uncorrectable memory error"); } #endif /* SIGUME */ #ifdef SIGCPULIM /* _CRAYCOM */ if (mesg[SIGCPULIM].pname == NULL) { mesg[SIGCPULIM].iname = "CPULIM"; mesg[SIGCPULIM].pname = CSAVS(2, 40, "CPU time limit exceeded"); } #endif /* SIGCPULIM */ #ifdef SIGSHUTDN /* _CRAYCOM */ if (mesg[SIGSHUTDN].pname == NULL) { mesg[SIGSHUTDN].iname = "SHUTDN"; mesg[SIGSHUTDN].pname = CSAVS(2, 41, "System shutdown imminent"); } #endif /* SIGSHUTDN */ #ifdef SIGNOWAK /* _CRAYCOM */ if (mesg[SIGNOWAK].pname == NULL) { mesg[SIGNOWAK].iname = "NOWAK"; mesg[SIGNOWAK].pname = CSAVS(2, 42, "Micro-tasking group-no wakeup flag set"); } #endif /* SIGNOWAK */ #ifdef SIGTHERR /* _CRAYCOM */ if (mesg[SIGTHERR].pname == NULL) { mesg[SIGTHERR].iname = "THERR"; mesg[SIGTHERR].pname = CSAVS(2, 43, "Thread error - (use cord -T for detailed info)"); } #endif /* SIGTHERR */ #ifdef SIGRPE /* cray */ if (mesg[SIGRPE].pname == NULL) { mesg[SIGRPE].pname = CSAVS(2, 44, "CRAY Y-MP register parity error"); mesg[SIGRPE].iname = "RPE"; } #endif /* SIGRPE */ #ifdef SIGINFO if (mesg[SIGINFO].pname == NULL) { mesg[SIGINFO].iname = "INFO"; mesg[SIGINFO].pname = CSAVS(2, 45, "Information request"); } #endif /* SIGINFO */ #ifdef SIGSTOP if (mesg[SIGSTOP].pname == NULL) { mesg[SIGSTOP].iname = "STOP"; # ifdef SUSPENDED mesg[SIGSTOP].pname = CSAVS(2, 46, "Suspended (signal)"); # else /* !SUSPENDED */ mesg[SIGSTOP].pname = CSAVS(2, 47, "Stopped (signal)"); # endif /* SUSPENDED */ } #endif /* SIGSTOP */ #ifdef SIGTSTP if (mesg[SIGTSTP].pname == NULL) { mesg[SIGTSTP].iname = "TSTP"; # ifdef SUSPENDED mesg[SIGTSTP].pname = CSAVS(2, 48, "Suspended"); # else /* !SUSPENDED */ mesg[SIGTSTP].pname = CSAVS(2, 49, "Stopped"); # endif /* SUSPENDED */ } #endif /* SIGTSTP */ #ifdef SIGCONT if (mesg[SIGCONT].pname == NULL) { mesg[SIGCONT].iname = "CONT"; mesg[SIGCONT].pname = CSAVS(2, 50, "Continued"); } #endif /* SIGCONT */ #ifdef SIGTTIN if (mesg[SIGTTIN].pname == NULL) { mesg[SIGTTIN].iname = "TTIN"; # ifdef SUSPENDED mesg[SIGTTIN].pname = CSAVS(2, 51, "Suspended (tty input)"); # else /* !SUSPENDED */ mesg[SIGTTIN].pname = CSAVS(2, 52, "Stopped (tty input)"); # endif /* SUSPENDED */ } #endif /* SIGTTIN */ #ifdef SIGTTOU if (mesg[SIGTTOU].pname == NULL) { mesg[SIGTTOU].iname = "TTOU"; # ifdef SUSPENDED mesg[SIGTTOU].pname = CSAVS(2, 53, "Suspended (tty output)"); # else /* SUSPENDED */ mesg[SIGTTOU].pname = CSAVS(2, 54, "Stopped (tty output)"); # endif /* SUSPENDED */ } #endif /* SIGTTOU */ #ifdef SIGWIND /* UNIXPC */ if (mesg[SIGWIND].pname == NULL) { mesg[SIGWIND].iname = "WIND"; mesg[SIGWIND].pname = CSAVS(2, 55, "Window status changed"); } #endif /* SIGWIND */ #ifdef SIGWINDOW if (mesg[SIGWINDOW].pname == NULL) { mesg[SIGWINDOW].iname = "WINDOW"; mesg[SIGWINDOW].pname = CSAVS(2, 56, "Window size changed"); } #endif /* SIGWINDOW */ #ifdef SIGWINCH if (mesg[SIGWINCH].pname == NULL) { mesg[SIGWINCH].iname = "WINCH"; mesg[SIGWINCH].pname = CSAVS(2, 56, "Window size changed"); } #endif /* SIGWINCH */ #ifdef SIGPHONE /* UNIXPC */ if (mesg[SIGPHONE].pname == NULL) { mesg[SIGPHONE].iname = "PHONE"; mesg[SIGPHONE].pname = CSAVS(2, 57, "Phone status changed"); } # endif /* SIGPHONE */ #ifdef SIGXCPU if (mesg[SIGXCPU].pname == NULL) { mesg[SIGXCPU].iname = "XCPU"; mesg[SIGXCPU].pname = CSAVS(2, 58, "Cputime limit exceeded"); } #endif /* SIGXCPU */ #ifdef SIGXFSZ if (mesg[SIGXFSZ].pname == NULL) { mesg[SIGXFSZ].iname = "XFSZ"; mesg[SIGXFSZ].pname = CSAVS(2, 59, "Filesize limit exceeded"); } #endif /* SIGXFSZ */ #ifdef SIGVTALRM if (mesg[SIGVTALRM].pname == NULL) { mesg[SIGVTALRM].iname = "VTALRM"; mesg[SIGVTALRM].pname = CSAVS(2, 60, "Virtual time alarm"); } #endif /* SIGVTALRM */ #ifdef SIGPROF if (mesg[SIGPROF].pname == NULL) { mesg[SIGPROF].iname = "PROF"; mesg[SIGPROF].pname = CSAVS(2, 61, "Profiling time alarm"); } #endif /* SIGPROF */ #ifdef SIGDIL /* hpux */ if (mesg[SIGDIL].pname == NULL) { mesg[SIGDIL].iname = "DIL"; mesg[SIGDIL].pname = CSAVS(2, 62, "DIL signal"); } #endif /* SIGDIL */ #ifdef SIGPOLL if (mesg[SIGPOLL].pname == NULL) { mesg[SIGPOLL].iname = "POLL"; mesg[SIGPOLL].pname = CSAVS(2, 63, "Pollable event occured"); } #endif /* SIGPOLL */ #ifdef SIGWAITING /* solaris */ if (mesg[SIGWAITING].pname == NULL) { mesg[SIGWAITING].iname = "WAITING"; mesg[SIGWAITING].pname = CSAVS(2, 64, "Process's lwps are blocked"); } #endif /* SIGWAITING */ #ifdef SIGLWP /* solaris */ if (mesg[SIGLWP].pname == NULL) { mesg[SIGLWP].iname = "LWP"; mesg[SIGLWP].pname = CSAVS(2, 65, "Special LWP signal"); } #endif /* SIGLWP */ #ifdef SIGFREEZE /* solaris */ if (mesg[SIGFREEZE].pname == NULL) { mesg[SIGFREEZE].iname = "FREEZE"; mesg[SIGFREEZE].pname = CSAVS(2, 66, "Special CPR Signal"); } #endif /* SIGFREEZE */ #ifdef SIGTHAW /* solaris */ if (mesg[SIGTHAW].pname == NULL) { mesg[SIGTHAW].iname = "THAW"; mesg[SIGTHAW].pname = CSAVS(2, 67, "Special CPR Signal"); } #endif /* SIGTHAW */ #ifdef SIGCANCEL /* solaris */ if (mesg[SIGCANCEL].pname == NULL) { mesg[SIGCANCEL].iname = "CANCEL"; mesg[SIGCANCEL].pname = CSAVS(2, 109, "Thread cancellation signal used by libthread"); } #endif /* SIGCANCEL */ /* * Careful, some OS's (HP/UX 10.0) define these as -1 */ #ifdef SIGRTMIN /* * Cannot do this at compile time; Solaris2 uses _sysconf for these */ if (SIGRTMIN > 0 && SIGRTMIN < NUMSIG) { if (mesg[SIGRTMIN].pname == NULL) { mesg[SIGRTMIN].iname = "RTMIN"; mesg[SIGRTMIN].pname = CSAVS(2, 68, "First Realtime Signal"); } if (SIGRTMIN + 1 < SIGRTMAX && SIGRTMIN + 1 < NUMSIG && mesg[SIGRTMIN+1].pname == NULL) { mesg[SIGRTMIN+1].iname = "RTMIN+1"; mesg[SIGRTMIN+1].pname = CSAVS(2, 69, "Second Realtime Signal"); } if (SIGRTMIN + 2 < SIGRTMAX && SIGRTMIN + 2 < NUMSIG && mesg[SIGRTMIN+2].pname == NULL) { mesg[SIGRTMIN+2].iname = "RTMIN+2"; mesg[SIGRTMIN+2].pname = CSAVS(2, 70, "Third Realtime Signal"); } if (SIGRTMIN + 3 < SIGRTMAX && SIGRTMIN + 3 < NUMSIG && mesg[SIGRTMIN+3].pname == NULL) { mesg[SIGRTMIN+3].iname = "RTMIN+3"; mesg[SIGRTMIN+3].pname = CSAVS(2, 71, "Fourth Realtime Signal"); } } #endif /* SIGRTMIN */ #ifdef SIGRTMAX /* * Cannot do this at compile time; Solaris2 uses _sysconf for these */ if (SIGRTMAX > 0 && SIGRTMAX < NUMSIG) { if (SIGRTMAX - 3 > SIGRTMIN && mesg[SIGRTMAX-3].pname == NULL) { mesg[SIGRTMAX-3].iname = "RTMAX-3"; mesg[SIGRTMAX-3].pname = CSAVS(2, 72, "Fourth Last Realtime Signal"); } if (SIGRTMAX - 2 > SIGRTMIN && mesg[SIGRTMAX-2].pname == NULL) { mesg[SIGRTMAX-2].iname = "RTMAX-2"; mesg[SIGRTMAX-2].pname = CSAVS(2, 73, "Third Last Realtime Signal"); } if (SIGRTMAX - 1 > SIGRTMIN && mesg[SIGRTMAX-1].pname == NULL) { mesg[SIGRTMAX-1].iname = "RTMAX-1"; mesg[SIGRTMAX-1].pname = CSAVS(2, 74, "Second Last Realtime Signal"); } if (SIGRTMAX > SIGRTMIN && mesg[SIGRTMAX].pname == NULL) { mesg[SIGRTMAX].iname = "RTMAX"; mesg[SIGRTMAX].pname = CSAVS(2, 75, "Last Realtime Signal"); } } #endif /* SIGRTMAX */ #ifdef SIGAIO /* aiws */ if (mesg[SIGAIO].pname == NULL) { mesg[SIGAIO].iname = "AIO"; mesg[SIGAIO].pname = CSAVS(2, 76, "LAN Asyncronous I/O"); } #endif /* SIGAIO */ #ifdef SIGPTY /* aiws */ if (mesg[SIGPTY].pname == NULL) { mesg[SIGPTY].iname = "PTY"; mesg[SIGPTY].pname = CSAVS(2, 77, "PTY read/write availability"); } #endif /* SIGPTY */ #ifdef SIGIOINT /* aiws */ if (mesg[SIGIOINT].pname == NULL) { mesg[SIGIOINT].iname = "IOINT"; mesg[SIGIOINT].pname = CSAVS(2, 78, "I/O intervention required"); } #endif /* SIGIOINT */ #ifdef SIGGRANT /* aiws */ if (mesg[SIGGRANT].pname == NULL) { mesg[SIGGRANT].iname = "GRANT"; mesg[SIGGRANT].pname = CSAVS(2, 79, "HFT monitor mode granted"); } #endif /* SIGGRANT */ #ifdef SIGRETRACT /* aiws */ if (mesg[SIGRETRACT].pname == NULL) { mesg[SIGRETRACT].iname = "RETRACT"; mesg[SIGRETRACT].pname = CSAVS(2, 80, "HFT monitor mode should be relinguished"); } #endif /* SIGRETRACT */ #ifdef SIGSOUND /* aiws */ if (mesg[SIGSOUND].pname == NULL) { mesg[SIGSOUND].iname = "SOUND"; mesg[SIGSOUND].pname = CSAVS(2, 81, "HFT sound control has completed"); } #endif /* SIGSOUND */ #ifdef SIGSMSG /* aiws */ if (mesg[SIGSMSG].pname == NULL) { mesg[SIGSMSG].iname = "SMSG"; mesg[SIGSMSG].pname = CSAVS(2, 82, "Data in HFT ring buffer"); } #endif /* SIGMSG */ #ifdef SIGMIGRATE /* IBMAIX */ if (mesg[SIGMIGRATE].pname == NULL) { mesg[SIGMIGRATE].iname = "MIGRATE"; mesg[SIGMIGRATE].pname = CSAVS(2, 83, "Migrate process"); } #endif /* SIGMIGRATE */ #ifdef SIGSAK /* IBMAIX */ if (mesg[SIGSAK].pname == NULL) { mesg[SIGSAK].iname = "SAK"; mesg[SIGSAK].pname = CSAVS(2, 84, "Secure attention key"); } #endif /* SIGSAK */ #ifdef SIGRESCHED /* CX/UX */ if (mesg[SIGRESCHED].pname == NULL) { mesg[SIGRESCHED].iname = "RESCHED"; mesg[SIGRESCHED].pname = CSAVS(2, 85, "Reschedule"); } #endif /* SIGRESCHED */ #ifdef SIGDEBUG /* VMS_POSIX */ if (mesg[SIGDEBUG].pname == NULL) { mesg[SIGDEBUG].iname = "DEBUG"; mesg[SIGDEBUG].pname = CSAVS(2, 86, "Signaling SS$_DEBUG"); } #endif /* SIGDEBUG */ #ifdef SIGPRIO /* Lynx */ if (mesg[SIGPRIO].pname == NULL) { mesg[SIGPRIO].iname = "PRIO"; mesg[SIGPRIO].pname = CSAVS(2, 87, "Priority changed"); } #endif /* SIGPRIO */ #ifdef SIGDLK /* cray */ if (mesg[SIGDLK].pname == NULL) { mesg[SIGDLK].iname = "DLK"; mesg[SIGDLK].pname = CSAVS(2, 88, "True deadlock detected"); } #endif /* SIGDLK */ #ifdef SIGTINT /* masscomp */ if (mesg[SIGTINT].pname == NULL) { mesg[SIGTINT].iname = "TINT"; mesg[SIGTINT].pname = CSAVS(2, 89, "New input character"); } #endif /* SIGTINT */ #ifdef SIGSTKFLT if (mesg[SIGSTKFLT].pname == NULL) { mesg[SIGSTKFLT].iname = "STKFLT"; mesg[SIGSTKFLT].pname = CSAVS(2, 90, "Stack limit exceeded"); } #endif /* SIGSTKFLT */ #ifdef SIGUNUSED if (mesg[SIGUNUSED].pname == NULL) { mesg[SIGUNUSED].iname = "UNUSED"; mesg[SIGUNUSED].pname = CSAVS(2, 91, "Unused signal"); } #endif /* SIGUNUSED */ #ifdef SIGOVLY /* SX-4 */ if (mesg[SIGOVLY].pname == NULL) { mesg[SIGOVLY].iname = "OVLY"; mesg[SIGOVLY].pname = CSAVS(2, 92, "LM overlay"); } #endif /* SIGOVLY */ #ifdef SIGFRZ /* SX-4 */ if (mesg[SIGFRZ].pname == NULL) { mesg[SIGFRZ].iname = "FRZ"; mesg[SIGFRZ].pname = CSAVS(2, 93, "system freeze"); } #endif /* SIGFRZ */ #ifdef SIGDFRZ /* SX-4 */ if (mesg[SIGDFRZ].pname == NULL) { mesg[SIGDFRZ].iname = "DFRZ"; mesg[SIGDFRZ].pname = CSAVS(2, 94, "system defreeze"); } #endif /* SIGDFRZ */ #ifdef SIGDEAD /* SX-4 */ if (mesg[SIGDEAD].pname == NULL) { mesg[SIGDEAD].iname = "DEAD"; mesg[SIGDEAD].pname = CSAVS(2, 95, "dead lock"); } #endif /* SIGDEAD */ #ifdef SIGXMEM /* SX-4 */ if (mesg[SIGXMEM].pname == NULL) { mesg[SIGXMEM].iname = "XMEM"; mesg[SIGXMEM].pname = CSAVS(2, 96, "exceeded memory size limit"); } #endif /* SIGXMEM */ #ifdef SIGXDSZ /* SX-4 */ if (mesg[SIGXDSZ].pname == NULL) { mesg[SIGXDSZ].iname = "XDSZ"; mesg[SIGXDSZ].pname = CSAVS(2, 97, "exceeded data size limit"); } #endif /* SIGXDSZ */ #ifdef SIGMEM32 /* SX-4 */ if (mesg[SIGMEM32].pname == NULL) { mesg[SIGMEM32].iname = "MEM32"; mesg[SIGMEM32].pname = CSAVS(2, 98, "exceeded memory size limit of 32KB"); } #endif /* SIGMEM32 */ #ifdef SIGNMEM /* SX-4 */ if (mesg[SIGNMEM].pname == NULL) { mesg[SIGNMEM].iname = "NMEM"; mesg[SIGNMEM].pname = CSAVS(2, 99, "exce error for no memory"); } #endif /* SIGNMEM */ #ifdef SIGCHKP /* SX-4 */ if (mesg[SIGCHKP].pname == NULL) { mesg[SIGCHKP].iname = "CHKP"; mesg[SIGCHKP].pname = CSAVS(2, 100, "check point start"); } #endif /* SIGCHKP */ #ifdef SIGKCHKP #if 0 /* SX-4 */ if (mesg[SIGKCHKP].pname == NULL) { mesg[SIGKCHKP].iname = "KCHKP"; mesg[SIGKCHKP].pname = CSAVS(2, 101, "check point start of kernel"); } #endif #endif /* SIGKCHKP */ #ifdef SIGRSTA /* SX-4 */ if (mesg[SIGRSTA].pname == NULL) { mesg[SIGRSTA].iname = "RSTA"; mesg[SIGRSTA].pname = CSAVS(2, 102, "restart start"); } #endif /* SIGRSTA */ #ifdef SIGKRSTA #if 0 /* SX-4 */ if (mesg[SIGKRSTA].pname == NULL) { mesg[SIGKRSTA].iname = "KRSTA"; mesg[SIGKRSTA].pname = CSAVS(2, 103, "restart of kernel"); } #endif #endif /* SIGKRSTA */ #ifdef SIGXXMU /* SX-4 */ if (mesg[SIGXXMU].pname == NULL) { mesg[SIGXXMU].iname = "XXMU"; mesg[SIGXXMU].pname = CSAVS(2, 104, "exeeded XMU size limit"); } #endif /* SIGXXMU */ #ifdef SIGXRLG0 /* SX-4 */ if (mesg[SIGXRLG0].pname == NULL) { mesg[SIGXRLG0].iname = "XRLG0"; mesg[SIGXRLG0].pname = CSAVS(2, 105, "exeeded RLG0 limit"); } #endif /* SIGXRLG0 */ #ifdef SIGXRLG1 /* SX-4 */ if (mesg[SIGXRLG1].pname == NULL) { mesg[SIGXRLG1].iname = "XRLG1"; mesg[SIGXRLG1].pname = CSAVS(2, 106, "exeeded RLG1 limit"); } #endif /* SIGXRLG1 */ #ifdef SIGXRLG2 /* SX-4 */ if (mesg[SIGXRLG2].pname == NULL) { mesg[SIGXRLG2].iname = "XRLG2"; mesg[SIGXRLG2].pname = CSAVS(2, 107, "exeeded RLG2 limit"); } #endif /* SIGXRLG2 */ #ifdef SIGXRLG3 /* SX-4 */ if (mesg[SIGXRLG3].pname == NULL) { mesg[SIGXRLG3].iname = "XRLG3"; mesg[SIGXRLG3].pname = CSAVS(2, 108, "exeeded RLG3 limit"); } #endif /* SIGXRLG3 */ }
void terminit() { #ifdef NLS_CATALOGS int i; for (i = 0; i < T_str + 1; i++) xfree((ptr_t) tstr[i].long_name); for (i = 0; i < T_val + 1; i++) xfree((ptr_t) tval[i].long_name); #endif tstr[T_al].name = "al"; tstr[T_al].long_name = CSAVS(4, 1, "add new blank line"); tstr[T_bl].name = "bl"; tstr[T_bl].long_name = CSAVS(4, 2, "audible bell"); tstr[T_cd].name = "cd"; tstr[T_cd].long_name = CSAVS(4, 3, "clear to bottom"); tstr[T_ce].name = "ce"; tstr[T_ce].long_name = CSAVS(4, 4, "clear to end of line"); tstr[T_ch].name = "ch"; tstr[T_ch].long_name = CSAVS(4, 5, "cursor to horiz pos"); tstr[T_cl].name = "cl"; tstr[T_cl].long_name = CSAVS(4, 6, "clear screen"); tstr[T_dc].name = "dc"; tstr[T_dc].long_name = CSAVS(4, 7, "delete a character"); tstr[T_dl].name = "dl"; tstr[T_dl].long_name = CSAVS(4, 8, "delete a line"); tstr[T_dm].name = "dm"; tstr[T_dm].long_name = CSAVS(4, 9, "start delete mode"); tstr[T_ed].name = "ed"; tstr[T_ed].long_name = CSAVS(4, 10, "end delete mode"); tstr[T_ei].name = "ei"; tstr[T_ei].long_name = CSAVS(4, 11, "end insert mode"); tstr[T_fs].name = "fs"; tstr[T_fs].long_name = CSAVS(4, 12, "cursor from status line"); tstr[T_ho].name = "ho"; tstr[T_ho].long_name = CSAVS(4, 13, "home cursor"); tstr[T_ic].name = "ic"; tstr[T_ic].long_name = CSAVS(4, 14, "insert character"); tstr[T_im].name = "im"; tstr[T_im].long_name = CSAVS(4, 15, "start insert mode"); tstr[T_ip].name = "ip"; tstr[T_ip].long_name = CSAVS(4, 16, "insert padding"); tstr[T_kd].name = "kd"; tstr[T_kd].long_name = CSAVS(4, 17, "sends cursor down"); tstr[T_kl].name = "kl"; tstr[T_kl].long_name = CSAVS(4, 18, "sends cursor left"); tstr[T_kr].name = "kr"; tstr[T_kr].long_name = CSAVS(4, 19, "sends cursor right"); tstr[T_ku].name = "ku"; tstr[T_ku].long_name = CSAVS(4, 20, "sends cursor up"); tstr[T_md].name = "md"; tstr[T_md].long_name = CSAVS(4, 21, "begin bold"); tstr[T_me].name = "me"; tstr[T_me].long_name = CSAVS(4, 22, "end attributes"); tstr[T_nd].name = "nd"; tstr[T_nd].long_name = CSAVS(4, 23, "non destructive space"); tstr[T_se].name = "se"; tstr[T_se].long_name = CSAVS(4, 24, "end standout"); tstr[T_so].name = "so"; tstr[T_so].long_name = CSAVS(4, 25, "begin standout"); tstr[T_ts].name = "ts"; tstr[T_ts].long_name = CSAVS(4, 26, "cursor to status line"); tstr[T_up].name = "up"; tstr[T_up].long_name = CSAVS(4, 27, "cursor up one"); tstr[T_us].name = "us"; tstr[T_us].long_name = CSAVS(4, 28, "begin underline"); tstr[T_ue].name = "ue"; tstr[T_ue].long_name = CSAVS(4, 29, "end underline"); tstr[T_vb].name = "vb"; tstr[T_vb].long_name = CSAVS(4, 30, "visible bell"); tstr[T_DC].name = "DC"; tstr[T_DC].long_name = CSAVS(4, 31, "delete multiple chars"); tstr[T_DO].name = "DO"; tstr[T_DO].long_name = CSAVS(4, 32, "cursor down multiple"); tstr[T_IC].name = "IC"; tstr[T_IC].long_name = CSAVS(4, 33, "insert multiple chars"); tstr[T_LE].name = "LE"; tstr[T_LE].long_name = CSAVS(4, 34, "cursor left multiple"); tstr[T_RI].name = "RI"; tstr[T_RI].long_name = CSAVS(4, 35, "cursor right multiple"); tstr[T_UP].name = "UP"; tstr[T_UP].long_name = CSAVS(4, 36, "cursor up multiple"); tstr[T_kh].name = "kh"; tstr[T_kh].long_name = CSAVS(4, 37, "send cursor home"); tstr[T_at7].name = "@7"; tstr[T_at7].long_name = CSAVS(4, 38, "send cursor end"); tstr[T_str].name = NULL; tstr[T_str].long_name = NULL; tval[T_am].name = "am"; tval[T_am].long_name = CSAVS(4, 37, "Has automatic margins"); tval[T_pt].name = "pt"; tval[T_pt].long_name = CSAVS(4, 38, "Can use physical tabs"); tval[T_li].name = "li"; tval[T_li].long_name = CSAVS(4, 39, "Number of lines"); tval[T_co].name = "co"; tval[T_co].long_name = CSAVS(4, 40, "Number of columns"); tval[T_km].name = "km"; tval[T_km].long_name = CSAVS(4, 41, "Has meta key"); tval[T_xn].name = "xn"; tval[T_xn].long_name = CSAVS(4, 42, "Newline ignored at right margin"); tval[T_val].name = NULL; tval[T_val].long_name = NULL; }