Imported from ../bash-2.05b.tar.gz.
[platform/upstream/bash.git] / subst.h
diff --git a/subst.h b/subst.h
index 56de477..0acfdd7 100644 (file)
--- a/subst.h
+++ b/subst.h
@@ -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.
 
    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)