1N/A
1N/A/* : : generated by proto : : */
1N/A/***********************************************************************
1N/A* *
1N/A* This software is part of the ast package *
1N/A* Copyright (c) 1982-2011 AT&T Intellectual Property *
1N/A* and is licensed under the *
1N/A* Common Public License, Version 1.0 *
1N/A* by AT&T Intellectual Property *
1N/A* *
1N/A* A copy of the License is available at *
1N/A* http://www.opensource.org/licenses/cpl1.0.txt *
1N/A* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
1N/A* *
1N/A* Information and Software Systems Research *
1N/A* AT&T Research *
1N/A* Florham Park NJ *
1N/A* *
1N/A* David Korn <dgk@research.att.com> *
1N/A* *
1N/A***********************************************************************/
1N/A
1N/A#ifndef SH_INTERACTIVE
1N/A#if !defined(__PROTO__)
1N/A#include <prototyped.h>
1N/A#endif
1N/A#if !defined(__LINKAGE__)
1N/A#define __LINKAGE__ /* 2004-08-11 transition */
1N/A#endif
1N/A
1N/A/*
1N/A * David Korn
1N/A * AT&T Labs
1N/A *
1N/A * Interface definitions for shell command language
1N/A *
1N/A */
1N/A
1N/A#include <ast.h>
1N/A#include <cdt.h>
1N/A#ifdef _SH_PRIVATE
1N/A# include "name.h"
1N/A#else
1N/A# include <nval.h>
1N/A#endif /* _SH_PRIVATE */
1N/A
1N/A#define SH_VERSION 20071012
1N/A
1N/A#undef NOT_USED
1N/A#define NOT_USED(x) (&x,1)
1N/A
1N/A/* options */
1N/Atypedef struct
1N/A{
1N/A unsigned long v[4];
1N/A}
1N/AShopt_t;
1N/A
1N/Atypedef struct Shell_s Shell_t;
1N/A
1N/Atypedef void (*Shinit_f) __PROTO__((Shell_t*, int));
1N/A#ifndef SH_wait_f_defined
1N/A typedef int (*Shwait_f) __PROTO__((int, long, int));
1N/A# define SH_wait_f_defined
1N/A#endif
1N/A
1N/Aunion Shnode_u;
1N/Atypedef union Shnode_u Shnode_t;
1N/A
1N/A#define SH_CFLAG 0
1N/A#define SH_HISTORY 1 /* used also as a state */
1N/A#define SH_ERREXIT 2 /* used also as a state */
1N/A#define SH_VERBOSE 3 /* used also as a state */
1N/A#define SH_MONITOR 4 /* used also as a state */
1N/A#define SH_INTERACTIVE 5 /* used also as a state */
1N/A#define SH_RESTRICTED 6
1N/A#define SH_XTRACE 7
1N/A#define SH_KEYWORD 8
1N/A#define SH_NOUNSET 9
1N/A#define SH_NOGLOB 10
1N/A#define SH_ALLEXPORT 11
1N/A#define SH_PFSH 12
1N/A#define SH_IGNOREEOF 13
1N/A#define SH_NOCLOBBER 14
1N/A#define SH_MARKDIRS 15
1N/A#define SH_BGNICE 16
1N/A#define SH_VI 17
1N/A#define SH_VIRAW 18
1N/A#define SH_TFLAG 19
1N/A#define SH_TRACKALL 20
1N/A#define SH_SFLAG 21
1N/A#define SH_NOEXEC 22
1N/A#define SH_GMACS 24
1N/A#define SH_EMACS 25
1N/A#define SH_PRIVILEGED 26
1N/A#define SH_SUBSHARE 27 /* subshell shares state with parent */
1N/A#define SH_NOLOG 28
1N/A#define SH_NOTIFY 29
1N/A#define SH_DICTIONARY 30
1N/A#define SH_PIPEFAIL 32
1N/A#define SH_GLOBSTARS 33
1N/A#define SH_XARGS 34
1N/A#define SH_RC 35
1N/A#define SH_SHOWME 36
1N/A
1N/A/*
1N/A * passed as flags to builtins in Nambltin_t struct when BLT_OPTIM is on
1N/A */
1N/A#define SH_BEGIN_OPTIM 0x1
1N/A#define SH_END_OPTIM 0x2
1N/A
1N/A/* The following type is used for error messages */
1N/A
1N/A/* error messages */
1N/Aextern __MANGLE__ const char e_defpath[];
1N/Aextern __MANGLE__ const char e_found[];
1N/Aextern __MANGLE__ const char e_nospace[];
1N/Aextern __MANGLE__ const char e_format[];
1N/Aextern __MANGLE__ const char e_number[];
1N/Aextern __MANGLE__ const char e_restricted[];
1N/Aextern __MANGLE__ const char e_recursive[];
1N/Aextern __MANGLE__ char e_version[];
1N/A
1N/Atypedef struct sh_scope
1N/A{
1N/A struct sh_scope *par_scope;
1N/A int argc;
1N/A char **argv;
1N/A char *cmdname;
1N/A char *filename;
1N/A char *funname;
1N/A int lineno;
1N/A Dt_t *var_tree;
1N/A struct sh_scope *self;
1N/A} Shscope_t;
1N/A
1N/A/*
1N/A * Saves the state of the shell
1N/A */
1N/A
1N/Astruct Shell_s
1N/A{
1N/A Shopt_t options; /* set -o options */
1N/A Dt_t *var_tree; /* for shell variables */
1N/A Dt_t *fun_tree; /* for shell functions */
1N/A Dt_t *alias_tree; /* for alias names */
1N/A Dt_t *bltin_tree; /* for builtin commands */
1N/A Shscope_t *topscope; /* pointer to top-level scope */
1N/A int inlineno; /* line number of current input file */
1N/A int exitval; /* most recent exit value */
1N/A unsigned char trapnote; /* set when trap/signal is pending */
1N/A char shcomp; /* set when runing shcomp */
1N/A short subshell; /* set for virtual subshell */
1N/A#ifdef _SH_PRIVATE
1N/A _SH_PRIVATE
1N/A#endif /* _SH_PRIVATE */
1N/A};
1N/A
1N/A/* flags for sh_parse */
1N/A#define SH_NL 1 /* Treat new-lines as ; */
1N/A#define SH_EOF 2 /* EOF causes syntax error */
1N/A
1N/A/* symbolic values for sh_iogetiop */
1N/A#define SH_IOCOPROCESS (-2)
1N/A#define SH_IOHISTFILE (-3)
1N/A
1N/A#include <cmd.h>
1N/A
1N/A/* symbolic value for sh_fdnotify */
1N/A#define SH_FDCLOSE (-1)
1N/A
1N/A#undef getenv /* -lshell provides its own */
1N/A
1N/A#if defined(__EXPORT__) && defined(_DLL)
1N/A# ifdef _BLD_shell
1N/A#undef __MANGLE__
1N/A#define __MANGLE__ __LINKAGE__ __EXPORT__
1N/A# endif /* _BLD_shell */
1N/A#endif /* _DLL */
1N/A
1N/Aextern __MANGLE__ Dt_t *sh_bltin_tree __PROTO__((void));
1N/Aextern __MANGLE__ void sh_subfork __PROTO__((void));
1N/Aextern __MANGLE__ Shell_t *sh_init __PROTO__((int,char*[],Shinit_f));
1N/Aextern __MANGLE__ int sh_reinit __PROTO__((char*[]));
1N/Aextern __MANGLE__ int sh_eval __PROTO__((Sfio_t*,int));
1N/Aextern __MANGLE__ void sh_delay __PROTO__((double));
1N/Aextern __MANGLE__ __V_ *sh_parse __PROTO__((Shell_t*, Sfio_t*,int));
1N/Aextern __MANGLE__ int sh_trap __PROTO__((const char*,int));
1N/Aextern __MANGLE__ int sh_fun __PROTO__((Namval_t*,Namval_t*, char*[]));
1N/Aextern __MANGLE__ int sh_funscope __PROTO__((int,char*[],int(*)(__V_*),__V_*,int));
1N/Aextern __MANGLE__ Sfio_t *sh_iogetiop __PROTO__((int,int));
1N/Aextern __MANGLE__ int sh_main __PROTO__((int, char*[], Shinit_f));
1N/Aextern __MANGLE__ int sh_run __PROTO__((int, char*[]));
1N/Aextern __MANGLE__ void sh_menu __PROTO__((Sfio_t*, int, char*[]));
1N/Aextern __MANGLE__ Namval_t *sh_addbuiltin __PROTO__((const char*, int(*)(int, char*[],__V_*), __V_*));
1N/Aextern __MANGLE__ char *sh_fmtq __PROTO__((const char*));
1N/Aextern __MANGLE__ char *sh_fmtqf __PROTO__((const char*, int, int));
1N/Aextern __MANGLE__ Sfdouble_t sh_strnum __PROTO__((const char*, char**, int));
1N/Aextern __MANGLE__ int sh_access __PROTO__((const char*,int));
1N/Aextern __MANGLE__ int sh_close __PROTO__((int));
1N/Aextern __MANGLE__ int sh_dup __PROTO__((int));
1N/Aextern __MANGLE__ void sh_exit __PROTO__((int));
1N/Aextern __MANGLE__ int sh_fcntl __PROTO__((int, int, ...));
1N/Aextern __MANGLE__ Sfio_t *sh_fd2sfio __PROTO__((int));
1N/Aextern __MANGLE__ int (*sh_fdnotify __PROTO__((int(*)(int,int)))) __PROTO__((int,int));
1N/Aextern __MANGLE__ Shell_t *sh_getinterp __PROTO__((void));
1N/Aextern __MANGLE__ int sh_open __PROTO__((const char*, int, ...));
1N/Aextern __MANGLE__ int sh_openmax __PROTO__((void));
1N/Aextern __MANGLE__ Sfio_t *sh_pathopen __PROTO__((const char*));
1N/Aextern __MANGLE__ ssize_t sh_read __PROTO__((int, __V_*, size_t));
1N/Aextern __MANGLE__ ssize_t sh_write __PROTO__((int, const __V_*, size_t));
1N/Aextern __MANGLE__ off_t sh_seek __PROTO__((int, off_t, int));
1N/Aextern __MANGLE__ int sh_pipe __PROTO__((int[]));
1N/Aextern __MANGLE__ mode_t sh_umask __PROTO__((mode_t));
1N/Aextern __MANGLE__ __V_ *sh_waitnotify __PROTO__((Shwait_f));
1N/Aextern __MANGLE__ Shscope_t *sh_getscope __PROTO__((int,int));
1N/Aextern __MANGLE__ Shscope_t *sh_setscope __PROTO__((Shscope_t*));
1N/Aextern __MANGLE__ void sh_sigcheck __PROTO__((void));
1N/Aextern __MANGLE__ unsigned long sh_isoption __PROTO__((int));
1N/Aextern __MANGLE__ unsigned long sh_onoption __PROTO__((int));
1N/Aextern __MANGLE__ unsigned long sh_offoption __PROTO__((int));
1N/Aextern __MANGLE__ int sh_waitsafe __PROTO__((void));
1N/Aextern __MANGLE__ int sh_exec __PROTO__((const Shnode_t*,int));
1N/A
1N/A#if SHOPT_DYNAMIC
1N/A extern __MANGLE__ __V_ **sh_getliblist __PROTO__((void));
1N/A#endif /* SHOPT_DYNAMIC */
1N/A
1N/A/*
1N/A * direct access to sh is obsolete, use sh_getinterp() instead
1N/A */
1N/A#if !defined(_SH_PRIVATE) && defined(__IMPORT__) && !defined(_BLD_shell)
1N/A extern __MANGLE__ __IMPORT__ Shell_t sh;
1N/A#else
1N/A extern __MANGLE__ Shell_t sh;
1N/A#endif
1N/A
1N/A#ifdef _DLL
1N/A#undef __MANGLE__
1N/A#define __MANGLE__ __LINKAGE__
1N/A#endif /* _DLL */
1N/A
1N/A#ifndef _SH_PRIVATE
1N/A# define access(a,b) sh_access(a,b)
1N/A# define close(a) sh_close(a)
1N/A# define exit(a) sh_exit(a)
1N/A# define fcntl(a,b,c) sh_fcntl(a,b,c)
1N/A# define pipe(a) sh_pipe(a)
1N/A# define read(a,b,c) sh_read(a,b,c)
1N/A# define write(a,b,c) sh_write(a,b,c)
1N/A# define umask(a) sh_umask(a)
1N/A# define dup sh_dup
1N/A# if _lib_lseek64
1N/A# define open64 sh_open
1N/A# define lseek64 sh_seek
1N/A# else
1N/A# define open sh_open
1N/A# define lseek sh_seek
1N/A# endif
1N/A#endif /* !_SH_PRIVATE */
1N/A
1N/A#define SH_SIGSET 4
1N/A#define SH_EXITSIG 0400 /* signal exit bit */
1N/A#define SH_EXITMASK (SH_EXITSIG-1) /* normal exit status bits */
1N/A#define SH_RUNPROG -1022 /* needs to be negative and < 256 */
1N/A
1N/A#endif /* SH_INTERACTIVE */