1/* common.h -- extern declarations for functions defined in common.c. */ 2 3/* Copyright (C) 1993-2004 Free Software Foundation, Inc. 4 5 This file is part of GNU Bash, the Bourne Again SHell. 6 7 Bash is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or 10 (at your option) any later version. 11 12 Bash is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Bash. If not, see <http://www.gnu.org/licenses/>. 19*/ 20 21#if !defined (__COMMON_H) 22# define __COMMON_H 23 24#include "stdc.h" 25 26#define ISOPTION(s, c) (s[0] == '-' && !s[2] && s[1] == c) 27 28/* Flag values for parse_and_execute () */ 29#define SEVAL_NONINT 0x001 30#define SEVAL_INTERACT 0x002 31#define SEVAL_NOHIST 0x004 32#define SEVAL_NOFREE 0x008 33#define SEVAL_RESETLINE 0x010 34#define SEVAL_PARSEONLY 0x020 35#define SEVAL_NOLONGJMP 0x040 36 37/* Flags for describe_command, shared between type.def and command.def */ 38#define CDESC_ALL 0x001 /* type -a */ 39#define CDESC_SHORTDESC 0x002 /* command -V */ 40#define CDESC_REUSABLE 0x004 /* command -v */ 41#define CDESC_TYPE 0x008 /* type -t */ 42#define CDESC_PATH_ONLY 0x010 /* type -p */ 43#define CDESC_FORCE_PATH 0x020 /* type -ap or type -P */ 44#define CDESC_NOFUNCS 0x040 /* type -f */ 45#define CDESC_ABSPATH 0x080 /* convert to absolute path, no ./ */ 46 47/* Flags for get_job_by_name */ 48#define JM_PREFIX 0x01 /* prefix of job name */ 49#define JM_SUBSTRING 0x02 /* substring of job name */ 50#define JM_EXACT 0x04 /* match job name exactly */ 51#define JM_STOPPED 0x08 /* match stopped jobs only */ 52#define JM_FIRSTMATCH 0x10 /* return first matching job */ 53 54/* Flags for remember_args and value of changed_dollar_vars */ 55#define ARGS_NONE 0x0 56#define ARGS_INVOC 0x01 57#define ARGS_FUNC 0x02 58#define ARGS_SETBLTIN 0x04 59 60/* Functions from common.c */ 61extern void builtin_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); 62extern void builtin_warning __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); 63extern void builtin_usage __P((void)); 64extern void no_args __P((WORD_LIST *)); 65extern int no_options __P((WORD_LIST *)); 66 67/* common error message functions */ 68extern void sh_needarg __P((char *)); 69extern void sh_neednumarg __P((char *)); 70extern void sh_notfound __P((char *)); 71extern void sh_invalidopt __P((char *)); 72extern void sh_invalidoptname __P((char *)); 73extern void sh_invalidid __P((char *)); 74extern void sh_invalidnum __P((char *)); 75extern void sh_invalidsig __P((char *)); 76extern void sh_erange __P((char *, char *)); 77extern void sh_badpid __P((char *)); 78extern void sh_badjob __P((char *)); 79extern void sh_readonly __P((const char *)); 80extern void sh_nojobs __P((char *)); 81extern void sh_restricted __P((char *)); 82extern void sh_notbuiltin __P((char *)); 83extern void sh_wrerror __P((void)); 84extern void sh_ttyerror __P((int)); 85extern int sh_chkwrite __P((int)); 86 87extern char **make_builtin_argv __P((WORD_LIST *, int *)); 88extern void remember_args __P((WORD_LIST *, int)); 89 90extern int dollar_vars_changed __P((void)); 91extern void set_dollar_vars_unchanged __P((void)); 92extern void set_dollar_vars_changed __P((void)); 93 94extern int get_numeric_arg __P((WORD_LIST *, int, intmax_t *)); 95extern int get_exitstat __P((WORD_LIST *)); 96extern int read_octal __P((char *)); 97 98/* Keeps track of the current working directory. */ 99extern char *the_current_working_directory; 100extern char *get_working_directory __P((char *)); 101extern void set_working_directory __P((char *)); 102 103#if defined (JOB_CONTROL) 104extern int get_job_by_name __P((const char *, int)); 105extern int get_job_spec __P((WORD_LIST *)); 106#endif 107extern int display_signal_list __P((WORD_LIST *, int)); 108 109/* It's OK to declare a function as returning a Function * without 110 providing a definition of what a `Function' is. */ 111extern struct builtin *builtin_address_internal __P((char *, int)); 112extern sh_builtin_func_t *find_shell_builtin __P((char *)); 113extern sh_builtin_func_t *builtin_address __P((char *)); 114extern sh_builtin_func_t *find_special_builtin __P((char *)); 115extern void initialize_shell_builtins __P((void)); 116 117/* Functions from exit.def */ 118extern void bash_logout __P((void)); 119 120/* Functions from getopts.def */ 121extern void getopts_reset __P((int)); 122 123/* Functions from set.def */ 124extern int minus_o_option_value __P((char *)); 125extern void list_minus_o_opts __P((int, int)); 126extern char **get_minus_o_opts __P((void)); 127extern int set_minus_o_option __P((int, char *)); 128 129extern void set_shellopts __P((void)); 130extern void parse_shellopts __P((char *)); 131extern void initialize_shell_options __P((int)); 132 133extern void reset_shell_options __P((void)); 134 135/* Functions from shopt.def */ 136extern void reset_shopt_options __P((void)); 137extern char **get_shopt_options __P((void)); 138 139extern int shopt_setopt __P((char *, int)); 140extern int shopt_listopt __P((char *, int)); 141 142extern int set_login_shell __P((int)); 143 144/* Functions from type.def */ 145extern int describe_command __P((char *, int)); 146 147/* Functions from setattr.def */ 148extern int set_or_show_attributes __P((WORD_LIST *, int, int)); 149extern int show_all_var_attributes __P((int, int)); 150extern int show_var_attributes __P((SHELL_VAR *, int, int)); 151extern int show_name_attributes __P((char *, int)); 152extern void set_var_attribute __P((char *, int, int)); 153 154/* Functions from pushd.def */ 155extern char *get_dirstack_from_string __P((char *)); 156extern char *get_dirstack_element __P((intmax_t, int)); 157extern void set_dirstack_element __P((intmax_t, int, char *)); 158extern WORD_LIST *get_directory_stack __P((int)); 159 160/* Functions from evalstring.c */ 161extern int parse_and_execute __P((char *, const char *, int)); 162extern void parse_and_execute_cleanup __P((void)); 163extern int parse_string __P((char *, const char *, int, char **)); 164 165/* Functions from evalfile.c */ 166extern int maybe_execute_file __P((const char *, int)); 167extern int source_file __P((const char *, int)); 168extern int fc_execute_file __P((const char *)); 169 170#endif /* !__COMMON_H */ 171