1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
/* execute_cmd.h - functions from execute_cmd.c. */
/* Copyright (C) 1993-2017,2022-2024 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#if !defined (_EXECUTE_CMD_H_)
#define _EXECUTE_CMD_H_
#include "stdc.h"
#if defined (ARRAY_VARS)
struct func_array_state
{
ARRAY *funcname_a;
SHELL_VAR *funcname_v;
ARRAY *source_a;
SHELL_VAR *source_v;
ARRAY *lineno_a;
SHELL_VAR *lineno_v;
};
#endif
/* Placeholder for later expansion to include more execution state */
/* XXX - watch out for pid_t */
struct execstate
{
pid_t pid;
int subshell_env;
};
/* Variables declared in execute_cmd.c, used by many other files */
extern int return_catch_flag;
extern int return_catch_value;
extern volatile int last_command_exit_value;
extern int last_command_exit_signal;
extern int builtin_ignoring_errexit;
extern int executing_builtin;
extern int interrupt_execution;
extern int retain_fifos;
extern int comsub_ignore_return;
extern int subshell_level;
extern int match_ignore_case;
extern int executing_command_builtin;
extern int funcnest, funcnest_max;
extern int evalnest, evalnest_max;
extern int sourcenest, sourcenest_max;
extern int stdin_redir;
extern int line_number_for_err_trap;
extern char *the_printed_command_except_trap;
extern COMMAND *currently_executing_command;
extern char *this_command_name;
extern SHELL_VAR *this_shell_function;
/* Functions declared in execute_cmd.c, used by many other files */
extern struct fd_bitmap *new_fd_bitmap (int);
extern void dispose_fd_bitmap (struct fd_bitmap *);
extern void close_fd_bitmap (struct fd_bitmap *);
extern int executing_line_number (void);
extern int execute_command (COMMAND *);
extern int execute_command_internal (COMMAND *, int, int, int, struct fd_bitmap *);
extern int shell_execve (char *, char **, char **);
extern void setup_async_signals (void);
extern void async_redirect_stdin (void);
extern void undo_partial_redirects (void);
extern void dispose_partial_redirects (void);
extern void dispose_exec_redirects (void);
extern int execute_shell_function (SHELL_VAR *, WORD_LIST *);
extern struct coproc *getcoprocbypid (pid_t);
extern struct coproc *getcoprocbyname (const char *);
extern void coproc_init (struct coproc *);
extern struct coproc *coproc_alloc (char *, pid_t);
extern void coproc_dispose (struct coproc *);
extern void coproc_flush (void);
extern void coproc_close (struct coproc *);
extern void coproc_closeall (void);
extern void coproc_reap (void);
extern pid_t coproc_active (void);
extern void coproc_rclose (struct coproc *, int);
extern void coproc_wclose (struct coproc *, int);
extern void coproc_fdclose (struct coproc *, int);
extern void coproc_checkfd (struct coproc *, int);
extern void coproc_fdchk (int);
#if defined _POSIXWAIT_H_
extern void coproc_pidchk (pid_t, WAIT);
extern void coproc_setstate (pid_t, WAIT);
#endif
extern void coproc_fdsave (struct coproc *);
extern void coproc_fdrestore (struct coproc *);
extern void coproc_setvars (struct coproc *);
extern void coproc_unsetvars (struct coproc *);
#if defined (PROCESS_SUBSTITUTION)
extern void close_all_files (void);
#endif
#if defined (ARRAY_VARS)
extern void restore_funcarray_state (struct func_array_state *);
extern void uw_restore_funcarray_state (void *);
#endif
extern void uw_maybe_restore_getopt_state (void *);
extern void uw_lastpipe_cleanup (void *);
extern char *save_lastarg (void);
extern void bind_lastarg (char *);
extern void uw_dispose_fd_bitmap (void *);
extern void uw_close (void *);
extern void init_notfound_str (void);
#endif /* _EXECUTE_CMD_H_ */
|