[3228] | 1 | /* externs.h -- extern function declarations which do not appear in their
|
---|
| 2 | own header file. */
|
---|
| 3 |
|
---|
| 4 | /* Copyright (C) 1993-2005 Free Software Foundation, Inc.
|
---|
| 5 |
|
---|
| 6 | This file is part of GNU Bash, the Bourne Again SHell.
|
---|
| 7 |
|
---|
| 8 | Bash is free software; you can redistribute it and/or modify it under
|
---|
| 9 | the terms of the GNU General Public License as published by the Free
|
---|
| 10 | Software Foundation; either version 2, or (at your option) any later
|
---|
| 11 | version.
|
---|
| 12 |
|
---|
| 13 | Bash is distributed in the hope that it will be useful, but WITHOUT ANY
|
---|
| 14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
---|
| 15 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
---|
| 16 | for more details.
|
---|
| 17 |
|
---|
| 18 | You should have received a copy of the GNU General Public License along
|
---|
| 19 | with Bash; see the file COPYING. If not, write to the Free Software
|
---|
| 20 | Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
---|
| 21 |
|
---|
| 22 | /* Make sure that this is included *after* config.h! */
|
---|
| 23 |
|
---|
| 24 | #if !defined (_EXTERNS_H_)
|
---|
| 25 | # define _EXTERNS_H_
|
---|
| 26 |
|
---|
| 27 | #include "stdc.h"
|
---|
| 28 |
|
---|
| 29 | /* Functions from expr.c. */
|
---|
| 30 | extern intmax_t evalexp __P((char *, int *));
|
---|
| 31 |
|
---|
| 32 | /* Functions from print_cmd.c. */
|
---|
| 33 | extern char *make_command_string __P((COMMAND *));
|
---|
| 34 | extern char *named_function_string __P((char *, COMMAND *, int));
|
---|
| 35 |
|
---|
| 36 | extern void print_command __P((COMMAND *));
|
---|
| 37 | extern void print_simple_command __P((SIMPLE_COM *));
|
---|
| 38 | extern void print_word_list __P((WORD_LIST *, char *));
|
---|
| 39 |
|
---|
| 40 | /* debugger support */
|
---|
| 41 | extern void print_for_command_head __P((FOR_COM *));
|
---|
| 42 | #if defined (SELECT_COMMAND)
|
---|
| 43 | extern void print_select_command_head __P((SELECT_COM *));
|
---|
| 44 | #endif
|
---|
| 45 | extern void print_case_command_head __P((CASE_COM *));
|
---|
| 46 | #if defined (DPAREN_ARITHMETIC)
|
---|
| 47 | extern void print_arith_command __P((WORD_LIST *));
|
---|
| 48 | #endif
|
---|
| 49 | #if defined (COND_COMMAND)
|
---|
| 50 | extern void print_cond_command __P((COND_COM *));
|
---|
| 51 | #endif
|
---|
| 52 |
|
---|
| 53 | /* set -x support */
|
---|
| 54 | extern char *indirection_level_string __P((void));
|
---|
| 55 | extern void xtrace_print_assignment __P((char *, char *, int, int));
|
---|
| 56 | extern void xtrace_print_word_list __P((WORD_LIST *, int));
|
---|
| 57 | extern void xtrace_print_for_command_head __P((FOR_COM *));
|
---|
| 58 | #if defined (SELECT_COMMAND)
|
---|
| 59 | extern void xtrace_print_select_command_head __P((SELECT_COM *));
|
---|
| 60 | #endif
|
---|
| 61 | extern void xtrace_print_case_command_head __P((CASE_COM *));
|
---|
| 62 | #if defined (DPAREN_ARITHMETIC)
|
---|
| 63 | extern void xtrace_print_arith_cmd __P((WORD_LIST *));
|
---|
| 64 | #endif
|
---|
| 65 | #if defined (COND_COMMAND)
|
---|
| 66 | extern void xtrace_print_cond_term __P((int, int, WORD_DESC *, char *, char *));
|
---|
| 67 | #endif
|
---|
| 68 |
|
---|
| 69 | /* Functions from shell.c. */
|
---|
| 70 | extern void exit_shell __P((int)) __attribute__((__noreturn__));
|
---|
| 71 | extern void sh_exit __P((int)) __attribute__((__noreturn__));
|
---|
| 72 | extern void disable_priv_mode __P((void));
|
---|
| 73 | extern void unbind_args __P((void));
|
---|
| 74 |
|
---|
| 75 | #if defined (RESTRICTED_SHELL)
|
---|
| 76 | extern int shell_is_restricted __P((char *));
|
---|
| 77 | extern int maybe_make_restricted __P((char *));
|
---|
| 78 | #endif
|
---|
| 79 |
|
---|
| 80 | extern void unset_bash_input __P((int));
|
---|
| 81 | extern void get_current_user_info __P((void));
|
---|
| 82 |
|
---|
| 83 | /* Functions from eval.c. */
|
---|
| 84 | extern int reader_loop __P((void));
|
---|
| 85 | extern int parse_command __P((void));
|
---|
| 86 | extern int read_command __P((void));
|
---|
| 87 |
|
---|
| 88 | /* Functions from braces.c. */
|
---|
| 89 | #if defined (BRACE_EXPANSION)
|
---|
| 90 | extern char **brace_expand __P((char *));
|
---|
| 91 | #endif
|
---|
| 92 |
|
---|
| 93 | /* Miscellaneous functions from parse.y */
|
---|
| 94 | extern int yyparse __P((void));
|
---|
| 95 | extern int return_EOF __P((void));
|
---|
| 96 | extern void reset_parser __P((void));
|
---|
| 97 | extern WORD_LIST *parse_string_to_word_list __P((char *, int, const char *));
|
---|
| 98 |
|
---|
| 99 | extern void free_pushed_string_input __P((void));
|
---|
| 100 |
|
---|
| 101 | extern char *decode_prompt_string __P((char *));
|
---|
| 102 |
|
---|
| 103 | extern int get_current_prompt_level __P((void));
|
---|
| 104 | extern void set_current_prompt_level __P((int));
|
---|
| 105 |
|
---|
| 106 | #if defined (HISTORY)
|
---|
| 107 | extern char *history_delimiting_chars __P((void));
|
---|
| 108 | #endif
|
---|
| 109 |
|
---|
| 110 | /* Declarations for functions defined in locale.c */
|
---|
| 111 | extern void set_default_locale __P((void));
|
---|
| 112 | extern void set_default_locale_vars __P((void));
|
---|
| 113 | extern int set_locale_var __P((char *, char *));
|
---|
| 114 | extern int set_lang __P((char *, char *));
|
---|
| 115 | extern char *get_locale_var __P((char *));
|
---|
| 116 | extern char *localetrans __P((char *, int, int *));
|
---|
| 117 | extern char *mk_msgstr __P((char *, int *));
|
---|
| 118 | extern char *localeexpand __P((char *, int, int, int, int *));
|
---|
| 119 |
|
---|
| 120 | /* Declarations for functions defined in list.c. */
|
---|
| 121 | extern void list_walk __P((GENERIC_LIST *, sh_glist_func_t *));
|
---|
| 122 | extern void wlist_walk __P((WORD_LIST *, sh_icpfunc_t *));
|
---|
| 123 | extern GENERIC_LIST *list_reverse ();
|
---|
| 124 | extern int list_length ();
|
---|
| 125 | extern GENERIC_LIST *list_append ();
|
---|
| 126 | extern GENERIC_LIST *list_remove ();
|
---|
| 127 |
|
---|
| 128 | /* Declarations for functions defined in stringlib.c */
|
---|
| 129 | extern int find_string_in_alist __P((char *, STRING_INT_ALIST *, int));
|
---|
| 130 | extern char *find_token_in_alist __P((int, STRING_INT_ALIST *, int));
|
---|
| 131 | extern int find_index_in_alist __P((char *, STRING_INT_ALIST *, int));
|
---|
| 132 |
|
---|
| 133 | extern char *substring __P((char *, int, int));
|
---|
| 134 | extern char *strsub __P((char *, char *, char *, int));
|
---|
| 135 | extern char *strcreplace __P((char *, int, char *, int));
|
---|
| 136 | extern void strip_leading __P((char *));
|
---|
| 137 | extern void strip_trailing __P((char *, int, int));
|
---|
| 138 | extern void xbcopy __P((char *, char *, int));
|
---|
| 139 |
|
---|
| 140 | /* Functions from version.c. */
|
---|
| 141 | extern char *shell_version_string __P((void));
|
---|
| 142 | extern void show_shell_version __P((int));
|
---|
| 143 |
|
---|
| 144 | /* Functions from the bash library, lib/sh/libsh.a. These should really
|
---|
| 145 | go into a separate include file. */
|
---|
| 146 |
|
---|
| 147 | /* declarations for functions defined in lib/sh/clktck.c */
|
---|
| 148 | extern long get_clk_tck __P((void));
|
---|
| 149 |
|
---|
| 150 | /* declarations for functions defined in lib/sh/clock.c */
|
---|
| 151 | extern void clock_t_to_secs ();
|
---|
| 152 | extern void print_clock_t ();
|
---|
| 153 |
|
---|
| 154 | /* Declarations for functions defined in lib/sh/fmtulong.c */
|
---|
| 155 | #define FL_PREFIX 0x01 /* add 0x, 0X, or 0 prefix as appropriate */
|
---|
| 156 | #define FL_ADDBASE 0x02 /* add base# prefix to converted value */
|
---|
| 157 | #define FL_HEXUPPER 0x04 /* use uppercase when converting to hex */
|
---|
| 158 | #define FL_UNSIGNED 0x08 /* don't add any sign */
|
---|
| 159 |
|
---|
| 160 | extern char *fmtulong __P((unsigned long int, int, char *, size_t, int));
|
---|
| 161 |
|
---|
| 162 | /* Declarations for functions defined in lib/sh/fmtulong.c */
|
---|
| 163 | #if defined (HAVE_LONG_LONG)
|
---|
| 164 | extern char *fmtullong __P((unsigned long long int, int, char *, size_t, int));
|
---|
| 165 | #endif
|
---|
| 166 |
|
---|
| 167 | /* Declarations for functions defined in lib/sh/fmtumax.c */
|
---|
| 168 | extern char *fmtumax __P((uintmax_t, int, char *, size_t, int));
|
---|
| 169 |
|
---|
| 170 | /* Declarations for functions defined in lib/sh/getcwd.c */
|
---|
| 171 | #if !defined (HAVE_GETCWD)
|
---|
| 172 | extern char *getcwd __P((char *, size_t));
|
---|
| 173 | #endif
|
---|
| 174 |
|
---|
| 175 | /* Declarations for functions defined in lib/sh/itos.c */
|
---|
| 176 | extern char *inttostr __P((intmax_t, char *, size_t));
|
---|
| 177 | extern char *itos __P((intmax_t));
|
---|
| 178 | extern char *uinttostr __P((uintmax_t, char *, size_t));
|
---|
| 179 | extern char *uitos __P((uintmax_t));
|
---|
| 180 |
|
---|
| 181 | /* declarations for functions defined in lib/sh/makepath.c */
|
---|
| 182 | #define MP_DOTILDE 0x01
|
---|
| 183 | #define MP_DOCWD 0x02
|
---|
| 184 | #define MP_RMDOT 0x04
|
---|
| 185 |
|
---|
| 186 | extern char *sh_makepath __P((const char *, const char *, int));
|
---|
| 187 |
|
---|
| 188 | /* declarations for functions defined in lib/sh/netconn.c */
|
---|
| 189 | extern int isnetconn __P((int));
|
---|
| 190 |
|
---|
| 191 | /* declarations for functions defined in lib/sh/netopen.c */
|
---|
| 192 | extern int netopen __P((char *));
|
---|
| 193 |
|
---|
| 194 | /* Declarations for functions defined in lib/sh/oslib.c */
|
---|
| 195 |
|
---|
| 196 | #if !defined (HAVE_DUP2) || defined (DUP2_BROKEN)
|
---|
| 197 | extern int dup2 __P((int, int));
|
---|
| 198 | #endif
|
---|
| 199 |
|
---|
| 200 | #if !defined (HAVE_GETDTABLESIZE)
|
---|
| 201 | extern int getdtablesize __P((void));
|
---|
| 202 | #endif /* !HAVE_GETDTABLESIZE */
|
---|
| 203 |
|
---|
| 204 | #if !defined (HAVE_GETHOSTNAME)
|
---|
| 205 | extern int gethostname __P((char *, int));
|
---|
| 206 | #endif /* !HAVE_GETHOSTNAME */
|
---|
| 207 |
|
---|
| 208 | extern int getmaxgroups __P((void));
|
---|
| 209 | extern long getmaxchild __P((void));
|
---|
| 210 |
|
---|
| 211 | /* declarations for functions defined in lib/sh/pathcanon.c */
|
---|
| 212 | #define PATH_CHECKDOTDOT 0x0001
|
---|
| 213 | #define PATH_CHECKEXISTS 0x0002
|
---|
| 214 | #define PATH_HARDPATH 0x0004
|
---|
| 215 | #define PATH_NOALLOC 0x0008
|
---|
| 216 |
|
---|
| 217 | extern char *sh_canonpath __P((char *, int));
|
---|
| 218 |
|
---|
| 219 | /* declarations for functions defined in lib/sh/pathphys.c */
|
---|
| 220 | extern char *sh_physpath __P((char *, int));
|
---|
| 221 | extern char *sh_realpath __P((const char *, char *));
|
---|
| 222 |
|
---|
| 223 | /* declarations for functions defined in lib/sh/setlinebuf.c */
|
---|
| 224 | #ifdef NEED_SH_SETLINEBUF_DECL
|
---|
| 225 | extern int sh_setlinebuf __P((FILE *));
|
---|
| 226 | #endif
|
---|
| 227 |
|
---|
| 228 | /* declarations for functions defined in lib/sh/shmatch.c */
|
---|
| 229 | extern int sh_regmatch __P((const char *, const char *, int));
|
---|
| 230 |
|
---|
| 231 | /* defines for flags argument to sh_regmatch. */
|
---|
| 232 | #define SHMAT_SUBEXP 0x001 /* save subexpressions in SH_REMATCH */
|
---|
| 233 | #define SHMAT_PWARN 0x002 /* print a warning message on invalid regexp */
|
---|
| 234 |
|
---|
| 235 | /* declarations for functions defined in lib/sh/shquote.c */
|
---|
| 236 | extern char *sh_single_quote __P((char *));
|
---|
| 237 | extern char *sh_double_quote __P((char *));
|
---|
| 238 | extern char *sh_mkdoublequoted __P((const char *, int, int));
|
---|
| 239 | extern char *sh_un_double_quote __P((char *));
|
---|
| 240 | extern char *sh_backslash_quote __P((char *));
|
---|
| 241 | extern char *sh_backslash_quote_for_double_quotes __P((char *));
|
---|
| 242 | extern int sh_contains_shell_metas __P((char *));
|
---|
| 243 |
|
---|
| 244 | /* declarations for functions defined in lib/sh/spell.c */
|
---|
| 245 | extern int spname __P((char *, char *));
|
---|
| 246 |
|
---|
| 247 | /* declarations for functions defined in lib/sh/strcasecmp.c */
|
---|
| 248 | #if !defined (HAVE_STRCASECMP)
|
---|
| 249 | extern int strncasecmp __P((const char *, const char *, int));
|
---|
| 250 | extern int strcasecmp __P((const char *, const char *));
|
---|
| 251 | #endif /* HAVE_STRCASECMP */
|
---|
| 252 |
|
---|
| 253 | /* declarations for functions defined in lib/sh/strerror.c */
|
---|
| 254 | #if !defined (strerror)
|
---|
| 255 | extern char *strerror __P((int));
|
---|
| 256 | #endif
|
---|
| 257 |
|
---|
| 258 | /* declarations for functions defined in lib/sh/strftime.c */
|
---|
| 259 | #if !defined (HAVE_STRFTIME) && defined (NEED_STRFTIME_DECL)
|
---|
| 260 | extern size_t strftime __P((char *, size_t, const char *, const struct tm *));
|
---|
| 261 | #endif
|
---|
| 262 |
|
---|
| 263 | /* declarations for functions defined in lib/sh/strindex.c */
|
---|
| 264 | extern char *strindex __P((const char *, const char *));
|
---|
| 265 |
|
---|
| 266 | /* declarations for functions and structures defined in lib/sh/stringlist.c */
|
---|
| 267 |
|
---|
| 268 | /* This is a general-purpose argv-style array struct. */
|
---|
| 269 | typedef struct _list_of_strings {
|
---|
| 270 | char **list;
|
---|
| 271 | int list_size;
|
---|
| 272 | int list_len;
|
---|
| 273 | } STRINGLIST;
|
---|
| 274 |
|
---|
| 275 | typedef int sh_strlist_map_func_t __P((char *));
|
---|
| 276 |
|
---|
| 277 | extern STRINGLIST *strlist_create __P((int));
|
---|
| 278 | extern STRINGLIST *strlist_resize __P((STRINGLIST *, int));
|
---|
| 279 | extern void strlist_flush __P((STRINGLIST *));
|
---|
| 280 | extern void strlist_dispose __P((STRINGLIST *));
|
---|
| 281 | extern int strlist_remove __P((STRINGLIST *, char *));
|
---|
| 282 | extern STRINGLIST *strlist_copy __P((STRINGLIST *));
|
---|
| 283 | extern STRINGLIST *strlist_merge __P((STRINGLIST *, STRINGLIST *));
|
---|
| 284 | extern STRINGLIST *strlist_append __P((STRINGLIST *, STRINGLIST *));
|
---|
| 285 | extern STRINGLIST *strlist_prefix_suffix __P((STRINGLIST *, char *, char *));
|
---|
| 286 | extern void strlist_print __P((STRINGLIST *, char *));
|
---|
| 287 | extern void strlist_walk __P((STRINGLIST *, sh_strlist_map_func_t *));
|
---|
| 288 | extern void strlist_sort __P((STRINGLIST *));
|
---|
| 289 |
|
---|
| 290 | /* declarations for functions defined in lib/sh/stringvec.c */
|
---|
| 291 |
|
---|
| 292 | extern char **strvec_create __P((int));
|
---|
| 293 | extern char **strvec_resize __P((char **, int));
|
---|
| 294 | extern void strvec_flush __P((char **));
|
---|
| 295 | extern void strvec_dispose __P((char **));
|
---|
| 296 | extern int strvec_remove __P((char **, char *));
|
---|
| 297 | extern int strvec_len __P((char **));
|
---|
| 298 | extern int strvec_search __P((char **, char *));
|
---|
| 299 | extern char **strvec_copy __P((char **));
|
---|
| 300 | extern int strvec_strcmp __P((char **, char **));
|
---|
| 301 | extern void strvec_sort __P((char **));
|
---|
| 302 |
|
---|
| 303 | extern char **strvec_from_word_list __P((WORD_LIST *, int, int, int *));
|
---|
| 304 | extern WORD_LIST *strvec_to_word_list __P((char **, int, int));
|
---|
| 305 |
|
---|
| 306 | /* declarations for functions defined in lib/sh/strnlen.c */
|
---|
| 307 | #if !defined (HAVE_STRNLEN)
|
---|
| 308 | extern size_t strnlen __P((const char *, size_t));
|
---|
| 309 | #endif
|
---|
| 310 |
|
---|
| 311 | /* declarations for functions defined in lib/sh/strpbrk.c */
|
---|
| 312 | #if !defined (HAVE_STRPBRK)
|
---|
| 313 | extern char *strpbrk __P((const char *, const char *));
|
---|
| 314 | #endif
|
---|
| 315 |
|
---|
| 316 | /* declarations for functions defined in lib/sh/strtod.c */
|
---|
| 317 | #if !defined (HAVE_STRTOD)
|
---|
| 318 | extern double strtod __P((const char *, char **));
|
---|
| 319 | #endif
|
---|
| 320 |
|
---|
| 321 | /* declarations for functions defined in lib/sh/strtol.c */
|
---|
| 322 | #if !HAVE_DECL_STRTOL
|
---|
| 323 | extern long strtol __P((const char *, char **, int));
|
---|
| 324 | #endif
|
---|
| 325 |
|
---|
| 326 | /* declarations for functions defined in lib/sh/strtoll.c */
|
---|
| 327 | #if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOLL
|
---|
| 328 | extern long long strtoll __P((const char *, char **, int));
|
---|
| 329 | #endif
|
---|
| 330 |
|
---|
| 331 | /* declarations for functions defined in lib/sh/strtoul.c */
|
---|
| 332 | #if !HAVE_DECL_STRTOUL
|
---|
| 333 | extern unsigned long strtoul __P((const char *, char **, int));
|
---|
| 334 | #endif
|
---|
| 335 |
|
---|
| 336 | /* declarations for functions defined in lib/sh/strtoull.c */
|
---|
| 337 | #if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOULL
|
---|
| 338 | extern unsigned long long strtoull __P((const char *, char **, int));
|
---|
| 339 | #endif
|
---|
| 340 |
|
---|
| 341 | /* declarations for functions defined in lib/sh/strimax.c */
|
---|
| 342 | #if !HAVE_DECL_STRTOIMAX
|
---|
| 343 | extern intmax_t strtoimax __P((const char *, char **, int));
|
---|
| 344 | #endif
|
---|
| 345 |
|
---|
| 346 | /* declarations for functions defined in lib/sh/strumax.c */
|
---|
| 347 | #if !HAVE_DECL_STRTOUMAX
|
---|
| 348 | extern uintmax_t strtoumax __P((const char *, char **, int));
|
---|
| 349 | #endif
|
---|
| 350 |
|
---|
| 351 | /* declarations for functions defined in lib/sh/strtrans.c */
|
---|
| 352 | extern char *ansicstr __P((char *, int, int, int *, int *));
|
---|
| 353 | extern char *ansic_quote __P((char *, int, int *));
|
---|
| 354 | extern int ansic_shouldquote __P((const char *));
|
---|
| 355 | extern char *ansiexpand __P((char *, int, int, int *));
|
---|
| 356 |
|
---|
| 357 | /* declarations for functions defined in lib/sh/timeval.c. No prototypes
|
---|
| 358 | so we don't have to count on having a definition of struct timeval in
|
---|
| 359 | scope when this file is included. */
|
---|
| 360 | extern void timeval_to_secs ();
|
---|
| 361 | extern void print_timeval ();
|
---|
| 362 |
|
---|
| 363 | /* declarations for functions defined in lib/sh/tmpfile.c */
|
---|
| 364 | #define MT_USETMPDIR 0x0001
|
---|
| 365 | #define MT_READWRITE 0x0002
|
---|
| 366 | #define MT_USERANDOM 0x0004
|
---|
| 367 |
|
---|
| 368 | extern char *sh_mktmpname __P((char *, int));
|
---|
| 369 | extern int sh_mktmpfd __P((char *, int, char **));
|
---|
| 370 | /* extern FILE *sh_mktmpfp __P((char *, int, char **)); */
|
---|
| 371 |
|
---|
| 372 | /* declarations for functions defined in lib/sh/winsize.c */
|
---|
| 373 | extern void get_new_window_size __P((int, int *, int *));
|
---|
| 374 |
|
---|
| 375 | /* declarations for functions defined in lib/sh/xstrchr.c */
|
---|
| 376 | #undef xstrchr
|
---|
| 377 | extern char *xstrchr __P((const char *, int));
|
---|
| 378 |
|
---|
| 379 | /* declarations for functions defined in lib/sh/zcatfd.c */
|
---|
| 380 | extern int zcatfd __P((int, int, char *));
|
---|
| 381 |
|
---|
| 382 | /* declarations for functions defined in lib/sh/zread.c */
|
---|
| 383 | extern ssize_t zread __P((int, char *, size_t));
|
---|
| 384 | extern ssize_t zreadintr __P((int, char *, size_t));
|
---|
| 385 | extern ssize_t zreadc __P((int, char *));
|
---|
| 386 | extern void zreset __P((void));
|
---|
| 387 | extern void zsyncfd __P((int));
|
---|
| 388 |
|
---|
| 389 | /* declarations for functions defined in lib/sh/zwrite.c */
|
---|
| 390 | extern int zwrite __P((int, char *, size_t));
|
---|
| 391 |
|
---|
| 392 | #endif /* _EXTERNS_H_ */
|
---|