This is globals.h in view mode; [Download] [Up]
/*
* $Id: globals.h,v 2.44 1996/10/15 20:16:35 hzoli Exp $
*
* globals.h - global variables for zsh
*
* This file is part of zsh, the Z shell.
*
* Copyright (c) 1992-1996 Paul Falstad
* All rights reserved.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and to distribute modified versions of this software for any
* purpose, provided that the above copyright notice and the following
* two paragraphs appear in all copies of this software.
*
* In no event shall Paul Falstad or the Zsh Development Group be liable
* to any party for direct, indirect, special, incidental, or consequential
* damages arising out of the use of this software and its documentation,
* even if Paul Falstad and the Zsh Development Group have been advised of
* the possibility of such damage.
*
* Paul Falstad and the Zsh Development Group specifically disclaim any
* warranties, including, but not limited to, the implied warranties of
* merchantability and fitness for a particular purpose. The software
* provided hereunder is on an "as is" basis, and Paul Falstad and the
* Zsh Development Group have no obligation to provide maintenance,
* support, updates, enhancements, or modifications.
*
*/
/* GLOBALS is defined is init.c, so the global variables *
* are actually contained in init.c, and are externs in *
* the other source files. */
#ifdef GLOBALS
# define EXTERN
#else
# define EXTERN extern
#endif
#ifdef GLOBALS
int redirtab[TRINANG - OUTANG + 1] =
{
WRITE,
WRITENOW,
APP,
APPNOW,
READ,
READWRITE,
HEREDOC,
HEREDOCDASH,
MERGEIN,
MERGEOUT,
ERRWRITE,
ERRWRITENOW,
ERRAPP,
ERRAPPNOW,
HERESTR,
};
#else
extern int redirtab[TRINANG - OUTANG + 1];
#endif
#ifdef GLOBALS
char nulstring[] = {Nularg, '\0'};
int nulstrlen = sizeof(nulstring) - 1;
#else
extern char nulstring[];
extern int nulstrlen;
#endif
/* NULL-terminated arrays containing path, cdpath, etc. */
EXTERN char **path; /* $path */
EXTERN char **cdpath; /* $cdpath */
EXTERN char **fpath; /* $fpath */
EXTERN char **watch; /* $watch */
EXTERN char **mailpath; /* $mailpath */
EXTERN char **manpath; /* $manpath */
EXTERN char **fignore; /* $fignore */
EXTERN char **psvar; /* $psvar */
EXTERN char *yytext;
/* used to suppress ERREXIT and *
* trapping of SIGZERR, SIGEXIT. */
EXTERN int noerrexit;
/* do not save history on exec and exit */
EXTERN int nohistsave;
/* error/break flag */
EXTERN int errflag;
/* Status of return from a trap */
EXTERN int trapreturn;
EXTERN char *tokstr;
EXTERN int tok, tokfd;
/* lexical analyzer error flag */
EXTERN int lexstop;
EXTERN struct heredocs *hdocs;
/* suppress error messages */
EXTERN int noerrs;
/* nonzero means we are not evaluating, just parsing (in math.c) */
EXTERN int noeval;
/* current history event number */
EXTERN int curhist;
/* if != 0, we are expanding the current line */
EXTERN int expanding;
/* these are used to modify the cursor position during expansion */
EXTERN int excs, exlast;
/* if != 0, this is the first line of the command */
EXTERN int isfirstln;
/* if != 0, this is the first char of the command (not including
white space) */
EXTERN int isfirstch;
/* number of history entries */
EXTERN int histentct;
/* array of history entries */
EXTERN Histent histentarr;
/* capacity of history lists */
EXTERN int histsiz;
/* if = 1, we have performed history substitution on the current line
if = 2, we have used the 'p' modifier */
EXTERN int histdone;
/* default event (usually curhist-1, that is, "!!") */
EXTERN int defev;
/* != 0 if we are about to read a command word */
EXTERN int incmdpos;
/* != 0 if we are in the middle of a [[ ... ]] */
EXTERN int incond;
/* != 0 if we are after a redirection (for ctxtlex only) */
EXTERN int inredir;
/* != 0 if we are about to read a case pattern */
EXTERN int incasepat;
/* != 0 if we just read FUNCTION */
EXTERN int infunc;
/* != 0 if we just read a newline */
EXTERN int isnewlin;
/* the lists of history events */
EXTERN LinkList histlist;
/* the directory stack */
EXTERN LinkList dirstack;
/* the zle buffer stack */
EXTERN LinkList bufstack;
/* total # of characters waiting to be read. */
EXTERN int inbufct;
/* the flags controlling the input routines in input.c: see INP_* in zsh.h */
EXTERN int inbufflags;
/* flag that an alias should be expanded after expansion ending in space */
EXTERN int inalmore;
/* != 0 if this is a subshell */
EXTERN int subsh;
/* # of break levels */
EXTERN int breaks;
/* != 0 if we have a return pending */
EXTERN int retflag;
/* how far we've hashed the PATH so far */
EXTERN char **pathchecked;
/* # of nested loops we are in */
EXTERN int loops;
/* # of continue levels */
EXTERN int contflag;
/* the job we are working on */
EXTERN int thisjob;
/* the current job (+) */
EXTERN int curjob;
/* the previous job (-) */
EXTERN int prevjob;
/* hash table containing the aliases */
EXTERN HashTable aliastab;
/* hash table containing the reserved words */
EXTERN HashTable reswdtab;
/* hash table containing the parameters */
EXTERN HashTable paramtab;
/* hash table containing the external/hashed commands */
EXTERN HashTable cmdnamtab;
/* hash table containing the shell functions */
EXTERN HashTable shfunctab;
/* hash table containing builtin commands */
EXTERN HashTable builtintab;
/* hash table for completion info for commands */
EXTERN HashTable compctltab;
/* hash table for multi-character bindings */
EXTERN HashTable keybindtab;
/* hash table for emacs multi-character bindings */
EXTERN HashTable emkeybindtab;
/* hash table for vi multi-character bindings */
EXTERN HashTable vikeybindtab;
/* hash table for named directories */
EXTERN HashTable nameddirtab;
/* default completion infos */
EXTERN struct compctl cc_compos, cc_default, cc_first, cc_dummy;
/* the job table */
EXTERN struct job jobtab[MAXJOB];
/* shell timings */
EXTERN struct tms shtms;
/* the list of sched jobs pending */
EXTERN struct schedcmd *schedcmds;
/* the last l for s/l/r/ history substitution */
EXTERN char *hsubl;
/* the last r for s/l/r/ history substitution */
EXTERN char *hsubr;
/* We cache `USERNAME' and use check cached_uid *
* so we know when to recompute it. */
EXTERN uid_t cached_uid;
EXTERN char *cached_username; /* $USERNAME */
EXTERN char *zsh_name; /* ZSH_NAME */
EXTERN char *underscore; /* $_ */
EXTERN long lastval; /* $? */
EXTERN long mypid; /* $$ */
EXTERN long lastpid; /* $! */
EXTERN long ppid; /* $PPID */
EXTERN char *ifs; /* $IFS */
EXTERN char *pwd; /* $PWD */
EXTERN char *oldpwd; /* $OLDPWD */
EXTERN long columns; /* $COLUMNS */
EXTERN long lines; /* $LINES */
EXTERN char *zoptarg; /* $OPTARG */
EXTERN long zoptind; /* $OPTIND */
EXTERN char *prompt; /* $PROMPT */
EXTERN char *prompt2; /* etc. */
EXTERN char *prompt3;
EXTERN char *prompt4;
EXTERN char *rprompt; /* $RPROMPT */
EXTERN char *sprompt;
EXTERN char *wordchars;
EXTERN char *rstring, *Rstring;
EXTERN char *postedit;
EXTERN char *hostnam; /* from gethostname */
EXTERN char *home; /* $HOME */
EXTERN char **pparams; /* $argv */
EXTERN pid_t mypgrp; /* the process group of the shell */
EXTERN char *argzero; /* $0 */
EXTERN char *hackzero;
EXTERN char *scriptname; /* name of script being sourced */
EXTERN long lineno; /* $LINENO */
EXTERN long shlvl; /* $SHLVL */
EXTERN long lastval2;
/* the last time we checked mail */
EXTERN time_t lastmailcheck;
/* the last time we checked the people in the WATCH variable */
EXTERN time_t lastwatch;
/* the last time we did the periodic() shell function */
EXTERN time_t lastperiodic;
/* $SECONDS = time(NULL) - shtimer.tv_sec */
EXTERN struct timeval shtimer;
/* the default command for null commands */
EXTERN char *nullcmd;
EXTERN char *readnullcmd;
/* the List of local variables we have to destroy */
EXTERN LinkList locallist;
/* what level of localness we are at */
EXTERN int locallevel;
/* what level of sourcing we are at */
EXTERN int sourcelevel;
/* The table of file descriptors. A table element is zero if the *
* corresponding fd is not used by the shell. It is greater than *
* 1 if the fd is used by a <(...) or >(...) substitution and 1 if *
* it is an internal file descriptor which must be closed before *
* executing an external command. The first ten elements of the *
* table is not used. A table element is set by movefd and cleard *
* by zclose. */
EXTERN char *fdtable;
/* The allocated size of fdtable */
EXTERN int fdtable_size;
/* The highest fd that marked with nonzero in fdtable */
EXTERN int max_zsh_fd;
/* input fd from the coprocess */
EXTERN int coprocin;
/* output fd from the coprocess */
EXTERN int coprocout;
/* the shell input fd */
EXTERN int SHIN;
/* the shell tty fd */
EXTERN int SHTTY;
/* the FILE attached to the shell tty */
EXTERN FILE *shout;
/* buffered shell input for non-interactive shells */
EXTERN FILE *bshin;
/* != 0 means we are reading input from a string */
EXTERN int strin;
/* != 0 means history substitution is turned off */
EXTERN int stophist;
/* this line began with a space, so junk it if HISTIGNORESPACE is on */
EXTERN int spaceflag;
/* don't do spelling correction */
EXTERN int nocorrect;
/* state of the history mechanism (see hist.c) */
EXTERN int histactive;
/* current emulation (used to decide which set of option letters is used) */
EXTERN int emulation;
/* the options; e.g. if opts[SHGLOB] != 0, SH_GLOB is turned on */
EXTERN char opts[OPT_SIZE];
EXTERN int lastbase; /* last input base we used */
#ifdef HAVE_GETRLIMIT
/* the resource limits for the shell and its children */
EXTERN struct rlimit current_limits[RLIM_NLIMITS];
EXTERN struct rlimit limits[RLIM_NLIMITS];
#endif
/* pointer into the history line */
EXTERN char *hptr;
/* the current history line */
EXTERN char *chline;
/* true if the last character returned by hgetc was an escaped bangchar
* if it is set and NOBANGHIST is unset hwaddc escapes bangchars */
EXTERN int qbang;
/* text attribute mask */
#ifdef GLOBALS
unsigned txtattrmask = 0;
#else
extern unsigned txtattrmask;
#endif
/* text change - attribute change made by prompts */
EXTERN unsigned txtchange;
EXTERN char *term; /* $TERM */
/* 0 if this $TERM setup is usable, otherwise it contains TERM_* flags */
EXTERN int termflags;
/* flag for CSHNULLGLOB */
EXTERN int badcshglob;
/* max size of histline */
EXTERN int hlinesz;
/* we have printed a 'you have stopped (running) jobs.' message */
EXTERN int stopmsg;
/* the default tty state */
EXTERN struct ttyinfo shttyinfo;
EXTERN char *ttystrname; /* $TTY */
/* 1 if ttyctl -f has been executed */
EXTERN int ttyfrozen;
/* != 0 if we are allocating in the heaplist */
EXTERN int useheap;
/* Words on the command line, for use in completion */
EXTERN int clwsize, clwnum, clwpos;
EXTERN char **clwords;
/* pid of process undergoing 'process substitution' */
EXTERN pid_t cmdoutpid;
/* exit status of process undergoing 'process substitution' */
EXTERN int cmdoutval;
/* Stack to save some variables before executing a signal handler function */
EXTERN struct execstack *exstack;
/* Array describing the state of each signal: an element contains *
* 0 for the default action or some ZSIG_* flags ored together. */
EXTERN int sigtrapped[VSIGCOUNT];
/* trap functions for each signal */
EXTERN List sigfuncs[VSIGCOUNT];
#ifdef DEBUG
EXTERN int alloc_stackp;
#endif
/* Variables used by signal queueing */
EXTERN int queueing_enabled;
EXTERN sigset_t signal_mask_queue[MAX_QUEUE_SIZE];
EXTERN int signal_queue[MAX_QUEUE_SIZE];
EXTERN int queue_front;
EXTERN int queue_rear;
/* 1 if aliases should not be expanded */
EXTERN int noaliases;
#ifdef GLOBALS
/* tokens */
char *ztokens = "#$^*()$=|{}[]`<>?~`,'\"\\";
#else
extern char *ztokens;
#endif
/* $histchars */
EXTERN unsigned char bangchar, hatchar, hashchar;
EXTERN int eofseen;
/* we are parsing a line sent to use by the editor */
EXTERN int zleparse;
EXTERN int wordbeg;
EXTERN int parbegin;
EXTERN int parend;
/* used in arrays of lists instead of NULL pointers */
EXTERN struct list dummy_list;
/* lengths of each string */
EXTERN int tclen[TC_COUNT];
EXTERN char *tcstr[TC_COUNT];
/* Values of the li and co entries */
EXTERN int tclines, tccolumns;
/* names of the strings we want */
#ifdef GLOBALS
char *tccapnams[TC_COUNT] =
{
"cl", "le", "LE", "nd", "RI", "up", "UP", "do",
"DO", "dc", "DC", "ic", "IC", "cd", "ce", "al", "dl", "ta",
"md", "so", "us", "me", "se", "ue"
};
#else
extern char *tccapnams[TC_COUNT];
#endif
/* the command stack for use with %_ in prompts */
EXTERN unsigned char *cmdstack;
EXTERN int cmdsp;
#ifdef GLOBALS
char *tokstrings[WHILE + 1] = {
NULL, /* NULLTOK 0 */
";", /* SEPER */
"\\n", /* NEWLIN */
";", /* SEMI */
";;", /* DSEMI */
"&", /* AMPER 5 */
"(", /* INPAR */
")", /* OUTPAR */
"||", /* DBAR */
"&&", /* DAMPER */
")", /* OUTANG 10 */
">|", /* OUTANGBANG */
">>", /* DOUTANG */
">>|", /* DOUTANGBANG */
"<", /* INANG */
"<>", /* INOUTANG 15 */
"<<", /* DINANG */
"<<-", /* DINANGDASH */
"<&", /* INANGAMP */
">&", /* OUTANGAMP */
"&>", /* AMPOUTANG 20 */
"&>|", /* OUTANGAMPBANG */
">>&", /* DOUTANGAMP */
">>&|", /* DOUTANGAMPBANG */
"<<<", /* TRINANG */
"|", /* BAR 25 */
"|&", /* BARAMP */
"()", /* INOUTPAR */
"((", /* DINPAR */
"))", /* DOUTPAR */
"&|", /* AMPERBANG 30 */
};
#else
extern char *tokstrings[];
#endif
#ifdef GLOBALS
char *cmdnames[] =
{
"for", "while", "repeat", "select",
"until", "if", "then", "else",
"elif", "math", "cond", "cmdor",
"cmdand", "pipe", "errpipe", "foreach",
"case", "function", "subsh", "cursh",
"array", "quote", "dquote", "bquote",
"cmdsubst", "mathsubst", "elif-then", "heredoc",
"heredocd", "brace", "braceparam",
};
#else
extern char *cmdnames[];
#endif
#ifndef GLOBALS
extern struct option optns[OPT_SIZE];
#else
struct option optns[OPT_SIZE] = {
# define x OPT_REV|
{NULL, 0, 0, 0},
{"allexport", 'a', 'a', 0},
{"alwayslastprompt", 0, 0, 0},
{"alwaystoend", 0, 0, 0},
{"appendhistory", 0, 0, 0},
{"autocd", 'J', 0, 0},
{"autolist", '9', 0, 0},
{"automenu", 0, 0, 0},
{"autonamedirs", 0, 0, 0},
{"autoparamkeys", 0, 0, 0},
{"autoparamslash", 0, 0, OPT_CSH},
{"autopushd", 'N', 0, 0},
{"autoremoveslash", 0, 0, 0},
{"autoresume", 'W', 0, 0},
{"badpattern", x'2', 0, OPT_EMULATE|OPT_NONBOURNE},
{"banghist", x'K', 0, OPT_EMULATE|OPT_NONBOURNE},
{"beep", x'B', 0, OPT_ALL},
{"bgnice", '6', 0, OPT_EMULATE|OPT_NONBOURNE},
{"braceccl", 0, 0, 0},
{"bsdecho", 0, 0, OPT_EMULATE|OPT_SH},
{"cdablevars", 'T', 0, 0},
{"chaselinks", 'w', 0, 0},
{"clobber", x'C', x'C', OPT_ALL},
{"completealiases", 0, 0, 0},
{"completeinword", 0, 0, 0},
{"correct", '0', 0, 0},
{"correctall", 'O', 0, 0},
{"cshjunkiehistory", 0, 0, OPT_EMULATE|OPT_CSH},
{"cshjunkieloops", 0, 0, OPT_EMULATE|OPT_CSH},
{"cshjunkiequotes", 0, 0, OPT_EMULATE|OPT_CSH},
{"cshnullglob", 0, 0, OPT_EMULATE|OPT_CSH},
{"equals", 0, 0, OPT_EMULATE|OPT_ZSH},
{"errexit", 'e', 'e', 0},
{"exec", x'n', x'n', OPT_ALL},
{"extendedglob", 0, 0, 0},
{"extendedhistory", 0, 0, OPT_EMULATE|OPT_CSH},
{"flowcontrol", 0, 0, OPT_ALL},
{"functionargzero", 0, 0, OPT_EMULATE|OPT_NONBOURNE},
{"glob", x'F', x'f', OPT_ALL},
{"globassign", 0, 0, OPT_EMULATE|OPT_CSH},
{"globcomplete", 0, 0, 0},
{"globdots", '4', 0, 0},
{"globsubst", 0, 0, OPT_EMULATE|OPT_NONZSH},
{"hashcmds", 0, 0, OPT_ALL},
{"hashdirs", 0, 0, OPT_ALL},
{"hashlistall", 0, 0, OPT_ALL},
{"histallowclobber", 0, 0, 0},
{"histbeep", 0, 0, OPT_ALL},
{"histignoredups", 'h', 0, 0},
{"histignorespace", 'g', 0, 0},
{"histnostore", 0, 0, 0},
{"histverify", 0, 0, 0},
{"hup", 0, 0, OPT_EMULATE|OPT_ZSH},
{"ignorebraces", 'I', 0, OPT_EMULATE|OPT_SH},
{"ignoreeof", '7', 0, 0},
{"interactive", 'i', 'i', OPT_SPECIAL},
{"interactivecomments", 'k', 0, OPT_EMULATE|OPT_BOURNE},
{"ksharrays", 0, 0, OPT_EMULATE|OPT_BOURNE},
{"kshoptionprint", 0, 0, OPT_EMULATE|OPT_KSH},
{"listambiguous", 0, 0, 0},
{"listbeep", 0, 0, OPT_ALL},
{"listtypes", 'X', 0, OPT_CSH},
{"localoptions", 0, 0, OPT_EMULATE|OPT_KSH},
{"login", 'l', 'l', OPT_SPECIAL},
{"longlistjobs", 'R', 0, 0},
{"magicequalsubst", 0, 0, 0},
{"mailwarning", 'U', 0, 0},
{"markdirs", '8', 'X', 0},
{"menucomplete", 'Y', 0, 0},
{"monitor", 'm', 'm', OPT_SPECIAL},
{"multios", 0, 0, OPT_EMULATE|OPT_ZSH},
{"nomatch", x'3', 0, OPT_EMULATE|OPT_NONBOURNE},
{"notify", '5', 'b', OPT_ZSH},
{"nullglob", 'G', 0, OPT_EMULATE},
{"numericglobsort", 0, 0, 0},
{"overstrike", 0, 0, 0},
{"pathdirs", 'Q', 0, 0},
{"posixbuiltins", 0, 0, OPT_EMULATE|OPT_BOURNE},
{"printexitvalue", '1', 0, 0},
{"privileged", 'p', 'p', OPT_SPECIAL},
{"promptcr", x'V', 0, OPT_ALL},
{"promptsubst", 0, 0, OPT_EMULATE|OPT_KSH},
{"pushdignoredups", 0, 0, 0},
{"pushdminus", 0, 0, 0},
{"pushdsilent", 'E', 0, 0},
{"pushdtohome", 'D', 0, 0},
{"rcexpandparam", 'P', 0, 0},
{"rcquotes", 0, 0, 0},
{"rcs", x'f', 0, OPT_ALL},
{"recexact", 'S', 0, 0},
{"rmstarsilent", 'H', 0, OPT_BOURNE},
{"shfileexpansion", 0, 0, OPT_EMULATE|OPT_BOURNE},
{"shglob", 0, 0, OPT_EMULATE|OPT_BOURNE},
{"shinstdin", 's', 's', OPT_SPECIAL},
{"shoptionletters", 0, 0, OPT_EMULATE|OPT_BOURNE},
{"shortloops", 0, 0, OPT_ALL},
{"shwordsplit", 'y', 0, OPT_EMULATE|OPT_BOURNE},
{"singlecommand", 't', 't', OPT_SPECIAL},
{"singlelinezle", 'M', 0, OPT_KSH},
{"sunkeyboardhack", 'L', 0, 0},
{"unset", x'u', x'u', OPT_EMULATE|OPT_BSHELL},
{"verbose", 'v', 'v', 0},
{"xtrace", 'x', 'x', 0},
{"zle", 'Z', 0, OPT_SPECIAL},
};
# undef x
#endif
EXTERN short int typtab[256];
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.