|
Packit |
992a25 |
/***********************************************************************
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* This software is part of the ast package *
|
|
Packit |
992a25 |
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
|
Packit |
992a25 |
* and is licensed under the *
|
|
Packit |
992a25 |
* Eclipse Public License, Version 1.0 *
|
|
Packit |
992a25 |
* by AT&T Intellectual Property *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* A copy of the License is available at *
|
|
Packit |
992a25 |
* http://www.eclipse.org/org/documents/epl-v10.html *
|
|
Packit |
992a25 |
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* Information and Software Systems Research *
|
|
Packit |
992a25 |
* AT&T Research *
|
|
Packit |
992a25 |
* Florham Park NJ *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* David Korn <dgk@research.att.com> *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
***********************************************************************/
|
|
Packit |
992a25 |
#pragma prototyped
|
|
Packit |
992a25 |
/*
|
|
Packit |
992a25 |
* UNIX shell
|
|
Packit |
992a25 |
* S. R. Bourne
|
|
Packit |
992a25 |
* Rewritten by David Korn
|
|
Packit |
992a25 |
*
|
|
Packit |
992a25 |
* AT&T Labs
|
|
Packit |
992a25 |
*
|
|
Packit |
992a25 |
*/
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#include <ast.h>
|
|
Packit |
992a25 |
#include <errno.h>
|
|
Packit |
992a25 |
#include "defs.h"
|
|
Packit |
992a25 |
#include "path.h"
|
|
Packit |
992a25 |
#include "io.h"
|
|
Packit |
992a25 |
#include "shlex.h"
|
|
Packit |
992a25 |
#include "timeout.h"
|
|
Packit |
992a25 |
#include "history.h"
|
|
Packit |
992a25 |
#include "builtins.h"
|
|
Packit |
992a25 |
#include "jobs.h"
|
|
Packit |
992a25 |
#include "edit.h"
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#include "FEATURE/cmds"
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
/* error messages */
|
|
Packit |
992a25 |
const char e_timewarn[] = "\r\n\ashell will timeout in 60 seconds due to inactivity";
|
|
Packit |
992a25 |
const char e_runvi[] = "\\hist -e \"${VISUAL:-${EDITOR:-vi}}\" ";
|
|
Packit |
992a25 |
const char e_timeout[] = "timed out waiting for input";
|
|
Packit |
992a25 |
const char e_mailmsg[] = "you have mail in $_";
|
|
Packit |
992a25 |
const char e_query[] = "no query process";
|
|
Packit |
992a25 |
const char e_history[] = "no history file";
|
|
Packit |
992a25 |
const char e_histopen[] = "history file cannot open";
|
|
Packit |
992a25 |
const char e_option[] = "%s: bad option(s)";
|
|
Packit |
992a25 |
const char e_toomany[] = "open file limit exceeded";
|
|
Packit |
992a25 |
const char e_argtype[] = "invalid argument of type %c";
|
|
Packit |
992a25 |
const char e_oneoperand[] = "one operand expected";
|
|
Packit |
992a25 |
const char e_formspec[] = "%c: unknown format specifier";
|
|
Packit |
992a25 |
const char e_badregexp[] = "%s: invalid regular expression";
|
|
Packit |
992a25 |
const char e_number[] = "%s: bad number";
|
|
Packit |
992a25 |
const char e_badlocale[] = "%s: unknown locale";
|
|
Packit |
992a25 |
const char e_nullset[] = "%s: parameter null";
|
|
Packit |
992a25 |
const char e_notset[] = "%s: parameter not set";
|
|
Packit |
992a25 |
const char e_noparent[] = "%s: no parent";
|
|
Packit |
992a25 |
const char e_subst[] = "%s: bad substitution";
|
|
Packit |
992a25 |
const char e_create[] = "%s: cannot create";
|
|
Packit |
992a25 |
const char e_tmpcreate[] = "cannot create temporary file";
|
|
Packit |
992a25 |
const char e_restricted[] = "%s: restricted";
|
|
Packit |
992a25 |
const char e_pfsh[] = "%s: disabled in profile shell";
|
|
Packit |
992a25 |
const char e_pexists[] = "process already exists";
|
|
Packit |
992a25 |
const char e_exists[] = "%s: file already exists";
|
|
Packit |
992a25 |
const char e_pipe[] = "cannot create pipe";
|
|
Packit |
992a25 |
const char e_alarm[] = "cannot set alarm";
|
|
Packit |
992a25 |
const char e_open[] = "%s: cannot open";
|
|
Packit |
992a25 |
const char e_notseek[] = "%s: not seekable";
|
|
Packit |
992a25 |
const char e_badseek[] = "%s: invalid seek offset";
|
|
Packit |
992a25 |
const char e_badpattern[] = "%s: invalid shell pattern";
|
|
Packit |
992a25 |
const char e_noread[] = "%s: pattern seek requires read access";
|
|
Packit |
992a25 |
const char e_logout[] = "Use 'exit' to terminate this shell";
|
|
Packit |
992a25 |
const char e_exec[] = "%s: cannot execute";
|
|
Packit |
992a25 |
const char e_pwd[] = "cannot access parent directories";
|
|
Packit |
992a25 |
const char e_found[] = "%s: not found";
|
|
Packit |
992a25 |
const char e_defined[] = "%s: function not defined";
|
|
Packit |
992a25 |
const char e_nointerp[] = "%s: interpreter not found";
|
|
Packit |
992a25 |
const char e_subscript[] = "%s: subscript out of range";
|
|
Packit |
992a25 |
const char e_toodeep[] = "%s: recursion too deep";
|
|
Packit |
992a25 |
const char e_access[] = "permission denied";
|
|
Packit |
992a25 |
#ifdef _cmd_universe
|
|
Packit |
992a25 |
const char e_nouniverse[] = "universe not accessible";
|
|
Packit |
992a25 |
#endif /* _cmd_universe */
|
|
Packit |
992a25 |
const char e_direct[] = "bad directory";
|
|
Packit |
992a25 |
const char e_file[] = "%s: bad file unit number";
|
|
Packit |
992a25 |
const char e_redirect[] = "redirection failed";
|
|
Packit |
992a25 |
const char e_trap[] = "%s: bad trap";
|
|
Packit |
992a25 |
const char e_readonly[] = "%s: is read only";
|
|
Packit |
992a25 |
const char e_badfield[] = "%d: negative field size";
|
|
Packit |
992a25 |
const char e_ident[] = "%s: is not an identifier";
|
|
Packit |
992a25 |
const char e_badname[] = "%s: invalid name";
|
|
Packit |
992a25 |
const char e_varname[] = "%s: invalid variable name";
|
|
Packit |
992a25 |
const char e_badfun[] = "%s: invalid function name";
|
|
Packit |
992a25 |
const char e_aliname[] = "%s: invalid alias name";
|
|
Packit |
992a25 |
const char e_badexport[] = "%s: only simple variables can be exported";
|
|
Packit |
992a25 |
const char e_badref[] = "%s: reference variable cannot be an array";
|
|
Packit |
992a25 |
const char e_badsubscript[] = "%c: invalid subscript in assignment";
|
|
Packit |
992a25 |
const char e_noarray[] = "%s: cannot be an array";
|
|
Packit |
992a25 |
const char e_badappend[] = "%s: invalid append to associative array";
|
|
Packit |
992a25 |
const char e_noref[] = "%s: no reference name";
|
|
Packit |
992a25 |
const char e_nounattr[] = "cannot unset attribute C or A or a";
|
|
Packit |
992a25 |
const char e_selfref[] = "%s: invalid self reference";
|
|
Packit |
992a25 |
const char e_globalref[] = "%s: global reference cannot refer to local variable";
|
|
Packit |
992a25 |
const char e_noalias[] = "%s: alias not found\n";
|
|
Packit |
992a25 |
const char e_format[] = "%s: bad format";
|
|
Packit |
992a25 |
const char e_redef[] = "%s: type cannot be redefined";
|
|
Packit |
992a25 |
const char e_required[] = "%s: is a required element of %s";
|
|
Packit |
992a25 |
const char e_badtformat[] = "%c: bad format character in time format";
|
|
Packit |
992a25 |
const char e_nolabels[] = "%s: label not implemented";
|
|
Packit |
992a25 |
const char e_notimp[] = "%s: not implemented";
|
|
Packit |
992a25 |
const char e_notelem[] = "%.*s: is not an element of %s";
|
|
Packit |
992a25 |
const char e_notenum[] = "%s: not an enumeration type";
|
|
Packit |
992a25 |
const char e_unknowntype[] = "%.*s: unknown type";
|
|
Packit |
992a25 |
const char e_unknownmap[] = "%s: unknown mapping name";
|
|
Packit |
992a25 |
const char e_mapchararg[] = "-M requires argument when operands are specified";
|
|
Packit |
992a25 |
const char e_subcomvar[] = "%s: compound assignment requires sub-variable name";
|
|
Packit |
992a25 |
const char e_badtypedef[] = "%s: type definition requires compound assignment";
|
|
Packit |
992a25 |
const char e_typecompat[] = "%s: array instance incompatible with type assignment";
|
|
Packit |
992a25 |
const char e_nosupport[] = "not supported";
|
|
Packit |
992a25 |
const char e_badrange[] = "%d-%d: invalid range";
|
|
Packit |
992a25 |
const char e_eneedsarg[] = "-e - requires single argument";
|
|
Packit |
992a25 |
const char e_badbase[] = "%s unknown base";
|
|
Packit |
992a25 |
const char e_loop[] = "%s: would cause loop";
|
|
Packit |
992a25 |
const char e_overlimit[] = "%s: limit exceeded";
|
|
Packit |
992a25 |
const char e_badsyntax[] = "incorrect syntax";
|
|
Packit |
992a25 |
const char e_badwrite[] = "write to %d failed";
|
|
Packit |
992a25 |
const char e_staticfun[] = "%s: defined as a static function in type %s and cannot be redefined";
|
|
Packit |
992a25 |
const char e_on [] = "on";
|
|
Packit |
992a25 |
const char e_off[] = "off";
|
|
Packit |
992a25 |
const char is_reserved[] = " is a keyword";
|
|
Packit |
992a25 |
const char is_builtin[] = " is a shell builtin";
|
|
Packit |
992a25 |
const char is_spcbuiltin[] = " is a special shell builtin";
|
|
Packit |
992a25 |
const char is_builtver[] = "is a shell builtin version of";
|
|
Packit |
992a25 |
const char is_alias[] = "%s is an alias for ";
|
|
Packit |
992a25 |
const char is_xalias[] = "%s is an exported alias for ";
|
|
Packit |
992a25 |
const char is_talias[] = "is a tracked alias for";
|
|
Packit |
992a25 |
const char is_function[] = " is a function";
|
|
Packit |
992a25 |
const char is_ufunction[] = " is an undefined function";
|
|
Packit |
992a25 |
#ifdef JOBS
|
|
Packit |
992a25 |
# ifdef SIGTSTP
|
|
Packit |
992a25 |
const char e_newtty[] = "Switching to new tty driver...";
|
|
Packit |
992a25 |
const char e_oldtty[] = "Reverting to old tty driver...";
|
|
Packit |
992a25 |
const char e_no_start[] = "Cannot start job control";
|
|
Packit |
992a25 |
# endif /*SIGTSTP */
|
|
Packit |
992a25 |
const char e_no_jctl[] = "No job control";
|
|
Packit |
992a25 |
const char e_terminate[] = "You have stopped jobs";
|
|
Packit |
992a25 |
const char e_done[] = " Done";
|
|
Packit |
992a25 |
const char e_nlspace[] = "\n ";
|
|
Packit |
992a25 |
const char e_running[] = " Running";
|
|
Packit |
992a25 |
const char e_ambiguous[] = "%s: Ambiguous";
|
|
Packit |
992a25 |
const char e_jobsrunning[] = "You have running jobs";
|
|
Packit |
992a25 |
const char e_no_job[] = "no such job";
|
|
Packit |
992a25 |
const char e_no_proc[] = "no such process";
|
|
Packit |
992a25 |
const char e_badpid[] = "%s: invalid process id";
|
|
Packit |
992a25 |
# if SHOPT_COSHELL
|
|
Packit |
992a25 |
const char e_jobusage[] = "%s: Arguments must be %%job, process ids, or job pool names";
|
|
Packit |
992a25 |
# else
|
|
Packit |
992a25 |
const char e_jobusage[] = "%s: Arguments must be %%job or process ids";
|
|
Packit |
992a25 |
# endif /* SHOPT_COSHELL */
|
|
Packit |
992a25 |
#endif /* JOBS */
|
|
Packit |
992a25 |
const char e_coredump[] = "(coredump)";
|
|
Packit |
992a25 |
const char e_alphanum[] = "[_[:alpha:]]*([_[:alnum:]])";
|
|
Packit |
992a25 |
const char e_devfdNN[] = "/dev/fd/+([0-9])";
|
|
Packit |
992a25 |
const char e_devfdstd[] = "/dev/@(fd/+([0-9])|std@(in|out|err))";
|
|
Packit |
992a25 |
const char e_signo[] = "Signal %d";
|
|
Packit |
992a25 |
#if SHOPT_FS_3D
|
|
Packit |
992a25 |
const char e_cantget[] = "cannot get %s";
|
|
Packit |
992a25 |
const char e_cantset[] = "cannot set %s";
|
|
Packit |
992a25 |
const char e_mapping[] = "mapping";
|
|
Packit |
992a25 |
const char e_versions[] = "versions";
|
|
Packit |
992a25 |
#endif /* SHOPT_FS_3D */
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
/* string constants */
|
|
Packit |
992a25 |
const char e_heading[] = "Current option settings";
|
|
Packit |
992a25 |
const char e_sptbnl[] = " \t\n";
|
|
Packit |
992a25 |
const char e_tolower[] = "tolower";
|
|
Packit |
992a25 |
const char e_toupper[] = "toupper";
|
|
Packit |
992a25 |
const char e_defpath[] = "/bin:/usr/bin:";
|
|
Packit |
992a25 |
const char e_defedit[] = _pth_ed;
|
|
Packit |
992a25 |
const char e_unknown [] = "<command unknown>";
|
|
Packit |
992a25 |
const char e_devnull[] = "/dev/null";
|
|
Packit |
992a25 |
const char e_traceprompt[] = "+ ";
|
|
Packit |
992a25 |
const char e_supprompt[] = "# ";
|
|
Packit |
992a25 |
const char e_stdprompt[] = "$ ";
|
|
Packit |
992a25 |
const char e_profile[] = "$HOME/.profile";
|
|
Packit |
992a25 |
const char e_sysprofile[] = "/etc/profile";
|
|
Packit |
992a25 |
const char e_suidprofile[] = "/etc/suid_profile";
|
|
Packit |
992a25 |
#if SHOPT_SYSRC
|
|
Packit |
992a25 |
const char e_sysrc[] = "/etc/ksh.kshrc";
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
#if SHOPT_BASH
|
|
Packit |
992a25 |
#if SHOPT_SYSRC
|
|
Packit |
992a25 |
const char e_bash_sysrc[] = "/etc/bash.bashrc";
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
const char e_bash_rc[] = "$HOME/.bashrc";
|
|
Packit |
992a25 |
const char e_bash_login[] = "$HOME/.bash_login";
|
|
Packit |
992a25 |
const char e_bash_logout[] = "$HOME/.bash_logout";
|
|
Packit |
992a25 |
const char e_bash_profile[] = "$HOME/.bash_profile";
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
const char e_crondir[] = "/usr/spool/cron/atjobs";
|
|
Packit |
992a25 |
const char e_prohibited[] = "login setuid/setgid shells prohibited";
|
|
Packit |
992a25 |
#if SHOPT_SUID_EXEC
|
|
Packit |
992a25 |
const char e_suidexec[] = "/etc/suid_exec";
|
|
Packit |
992a25 |
#endif /* SHOPT_SUID_EXEC */
|
|
Packit |
992a25 |
const char hist_fname[] = "/.sh_history";
|
|
Packit |
992a25 |
const char e_dot[] = ".";
|
|
Packit |
992a25 |
const char e_envmarker[] = "A__z";
|
|
Packit |
992a25 |
const char e_timeformat[] = "\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS";
|
|
Packit |
992a25 |
const char e_dict[] = "libshell";
|
|
Packit |
992a25 |
const char e_funload[] = "function, built-in or type definition for %s not found in %s";
|