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