diff options
author | Jari Aalto <jari.aalto@cante.net> | 2002-07-17 14:10:11 +0000 |
---|---|---|
committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:55 +0000 |
commit | 7117c2d221b2aed4ede8600f6a36b7c1454b4f55 (patch) | |
tree | b792f26ecca68813c51ed5ba2e381790758ef31b /subst.h | |
parent | f73dda092b33638d2d5e9c35375f687a607b5403 (diff) | |
download | android_external_bash-7117c2d221b2aed4ede8600f6a36b7c1454b4f55.tar.gz android_external_bash-7117c2d221b2aed4ede8600f6a36b7c1454b4f55.tar.bz2 android_external_bash-7117c2d221b2aed4ede8600f6a36b7c1454b4f55.zip |
Imported from ../bash-2.05b.tar.gz.
Diffstat (limited to 'subst.h')
-rw-r--r-- | subst.h | 37 |
1 files changed, 27 insertions, 10 deletions
@@ -1,6 +1,6 @@ /* subst.h -- Names of externally visible functions in subst.c. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* Copyright (C) 1993-2002 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -28,19 +28,17 @@ slashify_in_quotes () to decide whether the backslash should be retained. Q_HERE_DOCUMENT means slashify_in_here_document () to decide whether to retain the backslash. Q_KEEP_BACKSLASH means - to unconditionally retain the backslash. */ + to unconditionally retain the backslash. Q_PATQUOTE means that we're + expanding a pattern ${var%#[#%]pattern} in an expansion surrounded + by double quotes. */ #define Q_DOUBLE_QUOTES 0x1 #define Q_HERE_DOCUMENT 0x2 #define Q_KEEP_BACKSLASH 0x4 -#define Q_NOQUOTE 0x8 +#define Q_PATQUOTE 0x8 #define Q_QUOTED 0x10 #define Q_ADDEDQUOTES 0x20 #define Q_QUOTEDNULL 0x40 -/* Cons a new string from STRING starting at START and ending at END, - not including END. */ -extern char *substring __P((char *, int, int)); - /* Remove backslashes which are quoting backquotes from STRING. Modifies STRING, and returns a pointer to it. */ extern char * de_backslash __P((char *)); @@ -69,6 +67,10 @@ extern char *extract_process_subst __P((char *, char *, int *)); extern char *assignment_name __P((char *)); /* Return a single string of all the words present in LIST, separating + each word with SEP. */ +extern char *string_list_internal __P((WORD_LIST *, char *)); + +/* Return a single string of all the words present in LIST, separating each word with a space. */ extern char *string_list __P((WORD_LIST *)); @@ -105,7 +107,7 @@ extern char *sub_append_string __P((char *, char *, int *, int *)); /* Append the textual representation of NUMBER to TARGET. INDEX and SIZE are as in SUB_APPEND_STRING. */ -extern char *sub_append_number __P((long, char *, int *, int *)); +extern char *sub_append_number __P((intmax_t, char *, int *, int *)); /* Return the word list that corresponds to `$*'. */ extern WORD_LIST *list_rest_of_args __P((void)); @@ -155,7 +157,7 @@ extern WORD_LIST *expand_word_unsplit __P((WORD_DESC *, int)); extern WORD_LIST *expand_word_leave_quoted __P((WORD_DESC *, int)); /* Return the value of a positional parameter. This handles values > 10. */ -extern char *get_dollar_var_value __P((long)); +extern char *get_dollar_var_value __P((intmax_t)); /* Quote a string to protect it from word splitting. */ extern char *quote_string __P((char *)); @@ -177,10 +179,16 @@ extern WORD_DESC *word_quote_removal __P((WORD_DESC *, int)); double quotes. Return a new list, or NULL if LIST is NULL. */ extern WORD_LIST *word_list_quote_removal __P((WORD_LIST *, int)); +/* Called when IFS is changed to maintain some private variables. */ +extern void setifs __P((SHELL_VAR *)); + +/* Return the value of $IFS, or " \t\n" if IFS is unset. */ +extern char *getifs __P((void)); + /* This splits a single word into a WORD LIST on $IFS, but only if the word is not quoted. list_string () performs quote removal for us, even if we don't do any splitting. */ -extern WORD_LIST *word_split __P((WORD_DESC *)); +extern WORD_LIST *word_split __P((WORD_DESC *, char *)); /* Take the list of words in LIST and do the various substitutions. Return a new list of words which is the expanded list, and without things like @@ -219,6 +227,15 @@ extern int skip_to_delim __P((char *, int, char *)); extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int *, int *)); #endif +/* Variables used to keep track of the characters in IFS. */ +extern SHELL_VAR *ifs_var; +extern char *ifs_value; +extern unsigned char ifs_cmap[]; +extern unsigned char ifs_firstc; + +/* Evaluates to 1 if C is a character in $IFS. */ +#define isifs(c) (ifs_cmap[(unsigned char)(c)] != 0) + /* How to determine the quoted state of the character C. */ #define QUOTED_CHAR(c) ((c) == CTLESC) |