]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
third set of ANSI C changes: const function parameters
authorChet Ramey <chet.ramey@case.edu>
Tue, 3 Jan 2023 16:59:43 +0000 (11:59 -0500)
committerChet Ramey <chet.ramey@case.edu>
Tue, 3 Jan 2023 16:59:43 +0000 (11:59 -0500)
43 files changed:
CWRU/CWRU.chlog
arrayfunc.c
arrayfunc.h
assoc.c
assoc.h
bashhist.c
bashhist.h
bashline.c
bashline.h
builtins/common.c
builtins/common.h
expr.c
externs.h
findcmd.c
findcmd.h
general.h
lib/sh/getcwd.c
lib/sh/inet_aton.c
lib/sh/netopen.c
lib/sh/spell.c
lib/sh/stringlist.c
lib/sh/stringvec.c
lib/sh/strnlen.c
lib/sh/strtrans.c
lib/sh/tmpfile.c
lib/sh/uconvert.c
lib/sh/zcatfd.c
locale.c
mailcheck.c
parse.y
pathexp.c
pathexp.h
pcomplete.c
pcomplete.h
redir.c
stringlib.c
subst.c
subst.h
test.c
trap.c
trap.h
variables.c
variables.h

index 16a320841b1c9b97c235d8313a8c711f1fb7a454..92084e094ef1d79c973d953977f36aeaed8569f1 100644 (file)
@@ -4891,3 +4891,14 @@ builtins/{umask.def,wait.def}
        - C89-style function declarations
        - add `const' and `inline' where it makes sense
 
+                                1/2/2023
+                                --------
+lib/sh/{stringvec.c,inet_aton.c,strnlen.c,spell.c,netopen.c,stringlist.c}
+lib/sh/{strtrans.c,tmpfile.c,uconvert.c,zcatfd.c}
+builtins/{common.c,common.h}
+mailcheck.c,bashline.c,pathexp.c,stringlib.c,locale.c,pcomplete.c,redir.c
+test.c,trap.c,variables.c,bashhist.c,expr.c,arrayfunc.c,assoc.c,variables.c
+subst.c,findcmd.c
+arrayfunc.h,variables.h,findcmd.h,bashline.h,trap.h,pathexp.h,externs.h,
+pcomplete.h,bashhist.h,assoc.h,general.h,subst.h
+       - more `const' changes, remove `register'
index 17be8ccf73b547e6750839d16e72108c21b7c462..b1e68b74ff000759734b2acecdc848279a4adcc4 100644 (file)
@@ -1,6 +1,6 @@
 /* arrayfunc.c -- High-level array functions used by other parts of the shell. */
 
-/* Copyright (C) 2001-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -52,8 +52,8 @@ int assoc_expand_once = 0;
 /* Ditto for indexed array subscripts -- currently unused */
 int array_expand_once = 0;
 
-static SHELL_VAR *bind_array_var_internal (SHELL_VAR *, arrayind_t, char *, char *, int);
-static SHELL_VAR *assign_array_element_internal (SHELL_VAR *, char *, char *, char *, int, char *, int, array_eltstate_t *);
+static SHELL_VAR *bind_array_var_internal (SHELL_VAR *, arrayind_t, char *, const char *, int);
+static SHELL_VAR *assign_array_element_internal (SHELL_VAR *, const char *, char *, char *, int, const char *, int, array_eltstate_t *);
 
 static void assign_assoc_from_kvlist (SHELL_VAR *, WORD_LIST *, HASH_TABLE *, int);
 
@@ -146,7 +146,7 @@ convert_var_to_assoc (SHELL_VAR *var)
 }
 
 char *
-make_array_variable_value (SHELL_VAR *entry, arrayind_t ind, char *key, char *value, int flags)
+make_array_variable_value (SHELL_VAR *entry, arrayind_t ind, const char *key, const char *value, int flags)
 {
   SHELL_VAR *dentry;
   char *newval;
@@ -188,7 +188,7 @@ make_array_variable_value (SHELL_VAR *entry, arrayind_t ind, char *key, char *va
    XXX - make sure that any dynamic associative array variables recreate the
    hash table on each assignment. BASH_CMDS and BASH_ALIASES already do this */
 static SHELL_VAR *
-bind_assoc_var_internal (SHELL_VAR *entry, HASH_TABLE *hash, char *key, char *value, int flags)
+bind_assoc_var_internal (SHELL_VAR *entry, HASH_TABLE *hash, char *key, const char *value, int flags)
 {
   char *newval;
 
@@ -211,7 +211,7 @@ bind_assoc_var_internal (SHELL_VAR *entry, HASH_TABLE *hash, char *key, char *va
 /* Perform ENTRY[IND]=VALUE or ENTRY[KEY]=VALUE. This is not called for every
    assignment to an associative array; see assign_compound_array_list below. */
 static SHELL_VAR *
-bind_array_var_internal (SHELL_VAR *entry, arrayind_t ind, char *key, char *value, int flags)
+bind_array_var_internal (SHELL_VAR *entry, arrayind_t ind, char *key, const char *value, int flags)
 {
   char *newval;
 
@@ -239,7 +239,7 @@ bind_array_var_internal (SHELL_VAR *entry, arrayind_t ind, char *key, char *valu
    If NAME does not exist, just create an array variable, no matter what
    IND's value may be. */
 SHELL_VAR *
-bind_array_variable (char *name, arrayind_t ind, char *value, int flags)
+bind_array_variable (const char *name, arrayind_t ind, const char *value, int flags)
 {
   SHELL_VAR *entry;
 
@@ -276,7 +276,7 @@ bind_array_element (SHELL_VAR *entry, arrayind_t ind, char *value, int flags)
 }
                     
 SHELL_VAR *
-bind_assoc_variable (SHELL_VAR *entry, char *name, char *key, char *value, int flags)
+bind_assoc_variable (SHELL_VAR *entry, const char *name, char *key, const char *value, int flags)
 {
   if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || noassign_p (entry))
     {
@@ -311,7 +311,7 @@ flush_eltstate (array_eltstate_t *estatep)
    assign VALUE to that array element by calling bind_array_variable().
    Flags are ASS_ assignment flags */
 SHELL_VAR *
-assign_array_element (char *name, char *value, int flags, array_eltstate_t *estatep)
+assign_array_element (const char *name, const char *value, int flags, array_eltstate_t *estatep)
 {
   char *sub, *vname;
   int sublen, isassoc, avflags;
@@ -359,8 +359,8 @@ assign_array_element (char *name, char *value, int flags, array_eltstate_t *esta
 }
 
 static SHELL_VAR *
-assign_array_element_internal (SHELL_VAR *entry, char *name, char *vname,
-                              char *sub, int sublen, char *value,
+assign_array_element_internal (SHELL_VAR *entry, const char *name, char *vname,
+                              char *sub, int sublen, const char *value,
                               int flags, array_eltstate_t *estatep)
 {
   char *akey, *nkey;
@@ -423,7 +423,7 @@ assign_array_element_internal (SHELL_VAR *entry, char *name, char *vname,
    for assignment (e.g., by the `read' builtin).  If FLAGS&2 is non-zero, we
    create an associative array. */
 SHELL_VAR *
-find_or_make_array_variable (char *name, int flags)
+find_or_make_array_variable (const char *name, int flags)
 {
   SHELL_VAR *var;
 
@@ -474,7 +474,7 @@ find_or_make_array_variable (char *name, int flags)
 /* Perform a compound assignment statement for array NAME, where VALUE is
    the text between the parens:  NAME=( VALUE ) */
 SHELL_VAR *
-assign_array_from_string (char *name, char *value, int flags)
+assign_array_from_string (const char *name, char *value, int flags)
 {
   SHELL_VAR *var;
   int vflags;
@@ -618,7 +618,7 @@ kvpair_assignment_p (WORD_LIST *l)
 }
 
 char *
-expand_and_quote_kvpair_word (char *w)
+expand_and_quote_kvpair_word (const char *w)
 {
   char *r, *s, *t;
 
@@ -1186,7 +1186,7 @@ print_assoc_assignment (SHELL_VAR *var, int quoted)
    not be modified. */
 /* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */
 int
-tokenize_array_reference (char *name, int flags, char **subp)
+tokenize_array_reference (const char *name, int flags, char **subp)
 {
   char *t;
   int r, len, isassoc, ssflags;
@@ -1248,12 +1248,12 @@ tokenize_array_reference (char *name, int flags, char **subp)
 int
 valid_array_reference (const char *name, int flags)
 {
-  return tokenize_array_reference ((char *)name, flags, (char **)NULL);
+  return tokenize_array_reference (name, flags, (char **)NULL);
 }
 
 /* Expand the array index beginning at S and extending LEN characters. */
 arrayind_t
-array_expand_index (SHELL_VAR *var, char *s, int len, int flags)
+array_expand_index (SHELL_VAR *var, const char *s, int len, int flags)
 {
   char *exp, *t, *savecmd;
   int expok, eflag;
@@ -1560,7 +1560,7 @@ get_array_value (const char *s, int flags, array_eltstate_t *estatep)
 }
 
 char *
-array_keys (char *s, int quoted, int pflags)
+array_keys (const char *s, int quoted, int pflags)
 {
   int len;
   char *retval, *t, *temp;
index 9d9052ffa7b18b1c38a420d75301e82639123880..8fcec1604a269ec9af0e05b4b0eb1174e67115e6 100644 (file)
@@ -1,6 +1,6 @@
 /* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */
 
-/* Copyright (C) 2001-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -76,17 +76,17 @@ extern int array_expand_once;
 extern SHELL_VAR *convert_var_to_array (SHELL_VAR *);
 extern SHELL_VAR *convert_var_to_assoc (SHELL_VAR *);
 
-extern char *make_array_variable_value (SHELL_VAR *, arrayind_t, char *, char *, int);
+extern char *make_array_variable_value (SHELL_VAR *, arrayind_t, const char *, const char *, int);
 
-extern SHELL_VAR *bind_array_variable (char *, arrayind_t, char *, int);
+extern SHELL_VAR *bind_array_variable (const char *, arrayind_t, const char *, int);
 extern SHELL_VAR *bind_array_element (SHELL_VAR *, arrayind_t, char *, int);
-extern SHELL_VAR *assign_array_element (char *, char *, int, array_eltstate_t *);
+extern SHELL_VAR *assign_array_element (const char *, const char *, int, array_eltstate_t *);
 
-extern SHELL_VAR *bind_assoc_variable (SHELL_VAR *, char *, char *, char *, int);
+extern SHELL_VAR *bind_assoc_variable (SHELL_VAR *, const char *, char *, const char *, int);
 
-extern SHELL_VAR *find_or_make_array_variable (char *, int);
+extern SHELL_VAR *find_or_make_array_variable (const char *, int);
 
-extern SHELL_VAR *assign_array_from_string  (char *, char *, int);
+extern SHELL_VAR *assign_array_from_string  (const char *, char *, int);
 extern SHELL_VAR *assign_array_var_from_word_list (SHELL_VAR *, WORD_LIST *, int);
 
 extern WORD_LIST *expand_compound_array_assignment (SHELL_VAR *, char *, int);
@@ -97,7 +97,7 @@ extern char *expand_and_quote_assoc_word (char *, int);
 extern void quote_compound_array_list (WORD_LIST *, int);
 
 extern int kvpair_assignment_p (WORD_LIST *);
-extern char *expand_and_quote_kvpair_word (char *);
+extern char *expand_and_quote_kvpair_word (const char *);
 
 extern int unbind_array_element (SHELL_VAR *, char *, int);
 extern int skipsubscript (const char *, int, int);
@@ -105,14 +105,14 @@ extern int skipsubscript (const char *, int, int);
 extern void print_array_assignment (SHELL_VAR *, int);
 extern void print_assoc_assignment (SHELL_VAR *, int);
 
-extern arrayind_t array_expand_index (SHELL_VAR *, char *, int, int);
+extern arrayind_t array_expand_index (SHELL_VAR *, const char *, int, int);
 extern int valid_array_reference (const char *, int);
-extern int tokenize_array_reference (char *, int, char **);
+extern int tokenize_array_reference (const char *, int, char **);
 
 extern char *array_value (const char *, int, int, array_eltstate_t *);
 extern char *get_array_value (const char *, int, array_eltstate_t *);
 
-extern char *array_keys (char *, int, int);
+extern char *array_keys (const char *, int, int);
 
 extern char *array_variable_name (const char *, int, char **, int *);
 extern SHELL_VAR *array_variable_part (const char *, int, char **, int *);
diff --git a/assoc.c b/assoc.c
index d61545d0997fc8b60091f850121b54a05615255d..5a8e81800daccde58e2c99bbd2f5daa9d76ad93d 100644 (file)
--- a/assoc.c
+++ b/assoc.c
@@ -7,7 +7,7 @@
  * chet@ins.cwru.edu
  */
 
-/* Copyright (C) 2008,2009,2011-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009,2011-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -103,7 +103,7 @@ assoc_replace (HASH_TABLE *hash, char *key, char *value)
 }
 
 void
-assoc_remove (HASH_TABLE *hash, char *string)
+assoc_remove (HASH_TABLE *hash, const char *string)
 {
   BUCKET_CONTENTS *b;
 
@@ -117,7 +117,7 @@ assoc_remove (HASH_TABLE *hash, char *string)
 }
 
 char *
-assoc_reference (HASH_TABLE *hash, char *string)
+assoc_reference (HASH_TABLE *hash, const char *string)
 {
   BUCKET_CONTENTS *b;
 
diff --git a/assoc.h b/assoc.h
index 403e68dfc3c8ffa4ef8fcb5f34a4503e49d466cb..46dc0aef677f65fb74e5625e1ffea9f17b431b21 100644 (file)
--- a/assoc.h
+++ b/assoc.h
@@ -1,7 +1,7 @@
 /* assoc.h -- definitions for the interface exported by assoc.c that allows
    the rest of the shell to manipulate associative array variables. */
 
-/* Copyright (C) 2008,2009-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -41,9 +41,9 @@ extern void assoc_flush (HASH_TABLE *);
 
 extern int assoc_insert (HASH_TABLE *, char *, char *);
 extern PTR_T assoc_replace (HASH_TABLE *, char *, char *);
-extern void assoc_remove (HASH_TABLE *, char *);
+extern void assoc_remove (HASH_TABLE *, const char *);
 
-extern char *assoc_reference (HASH_TABLE *, char *);
+extern char *assoc_reference (HASH_TABLE *, const char *);
 
 extern char *assoc_subrange (HASH_TABLE *, arrayind_t, arrayind_t, int, int, int);
 extern char *assoc_patsub (HASH_TABLE *, char *, char *, int);
index 8295188e7523ad6e01a7e832b9a4b062075b9f82..c05e3c3926d1e6788fb9041a9633e5b58bc1ead0 100644 (file)
@@ -1,6 +1,6 @@
 /* bashhist.c -- bash interface to the GNU history library. */
 
-/* Copyright (C) 1993-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -979,7 +979,7 @@ histignore_item_func (struct ign *ign)
 }
 
 void
-setup_history_ignore (char *varname)
+setup_history_ignore (const char *varname)
 {
   setup_ignore_patterns (&histignore);
 }
index 4ce049cf389105ae3b363cdf92dce570861c343b..453bff7e02a0d457417cf01f222459afd9ea2355 100644 (file)
@@ -1,6 +1,6 @@
 /* bashhist.h -- interface to the bash history functions in bashhist.c. */
 
-/* Copyright (C) 1993-2022 Free Software Foundation,  Inc.
+/* Copyright (C) 1993-2023 Free Software Foundation,  Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -82,7 +82,7 @@ extern void bash_add_history (char *);
 extern int check_add_history (char *, int);
 extern int history_number (void);
 
-extern void setup_history_ignore (char *);
+extern void setup_history_ignore (const char *);
 
 extern char *last_history_line (void);
 
index ab761ee07402b0be1f3a6ef496093bbe5e3006d4..cdff17c186864f5c61417bec2f28cb38463421ac 100644 (file)
@@ -1,6 +1,6 @@
 /* bashline.c -- Bash's interface to the readline library. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -145,7 +145,7 @@ static int bash_transpose_shellwords (int, int);
 static int bash_spell_correct_shellword (int, int);
 
 /* Helper functions for Readline. */
-static char *restore_tilde (char *, char *);
+static char *restore_tilde (const char *, char *);
 static char *maybe_restore_tilde (char *, char *);
 
 static char *bash_filename_rewrite_hook (char *, int);
@@ -166,7 +166,7 @@ static void restore_directory_hook (rl_icppfunc_t);
 static int directory_exists (const char *, int);
 
 static void cleanup_expansion_error (void);
-static void maybe_make_readline_line (char *);
+static void maybe_make_readline_line (const char *);
 static void set_up_new_line (char *);
 
 static int check_redir (int);
@@ -181,9 +181,9 @@ static int dynamic_complete_history (int, int);
 static int bash_dabbrev_expand (int, int);
 
 static void initialize_hostname_list (void);
-static void add_host_name (char *);
-static void snarf_hosts_from_file (char *);
-static char **hostnames_matching (char *);
+static void add_host_name (const char *);
+static void snarf_hosts_from_file (const char *);
+static char **hostnames_matching (const char *);
 
 static void _ignore_completion_names (char **, sh_ignore_func_t *);
 static int name_is_acceptable (const char *);
@@ -268,7 +268,7 @@ static int bash_glob_list_expansions (int, int);
 
 #endif /* SPECIFIC_COMPLETION_FUNCTIONS */
 
-static int edit_and_execute_command (int, int, int, char *);
+static int edit_and_execute_command (int, int, int, const char *);
 #if defined (VI_MODE)
 static int vi_edit_and_execute_command (int, int);
 static int bash_vi_complete (int, int);
@@ -715,7 +715,7 @@ bash_push_line (void)
 /* Call this to set the initial text for the next line to read
    from readline. */
 int
-bash_re_edit (char *line)
+bash_re_edit (const char *line)
 {
   FREE (push_to_readline);
 
@@ -781,7 +781,7 @@ initialize_hostname_list (void)
 
 /* Add NAME to the list of hosts. */
 static void
-add_host_name (char *name)
+add_host_name (const char *name)
 {
   if (hostname_list_length + 2 > hostname_list_size)
     {
@@ -796,7 +796,7 @@ add_host_name (char *name)
 #define cr_whitespace(c) ((c) == '\r' || (c) == '\n' || whitespace(c))
 
 static void
-snarf_hosts_from_file (char *filename)
+snarf_hosts_from_file (const char *filename)
 {
   FILE *file;
   char *temp, buffer[256], name[256];
@@ -885,7 +885,7 @@ clear_hostname_list (void)
    Initialize the hostname list the first time if necessary.
    The array is malloc ()'ed, but not the individual strings. */
 static char **
-hostnames_matching (char *text)
+hostnames_matching (const char *text)
 {
   register int i, len, nmatch, rsize;
   char **result;
@@ -938,7 +938,7 @@ hostnames_matching (char *text)
 #define POSIX_VI_EDIT_COMMAND  "fc -e vi"
 
 static int
-edit_and_execute_command (int count, int c, int editing_mode, char *edit_command)
+edit_and_execute_command (int count, int c, int editing_mode, const char *edit_command)
 {
   char *command, *metaval;
   int r, rrs, metaflag;
@@ -2692,7 +2692,7 @@ cleanup_expansion_error (void)
    undo record to get from the readline line buffer contents to the new
    line and make NEW_LINE the current readline line. */
 static void
-maybe_make_readline_line (char *new_line)
+maybe_make_readline_line (const char *new_line)
 {
   if (new_line && strcmp (new_line, rl_line_buffer) != 0)
     {
@@ -3042,7 +3042,7 @@ name_is_acceptable (const char *name)
 
 #if 0
 static int
-ignore_dot_names (char *name)
+ignore_dot_names (const char *name)
 {
   return (name[0] != '.');
 }
@@ -3126,7 +3126,7 @@ bash_ignore_everything (char **names)
    is an expanded filename.  DIRECTORY_PART is the tilde-prefix portion
    of the un-tilde-expanded version of VAL (what the user typed). */
 static char *
-restore_tilde (char *val, char *directory_part)
+restore_tilde (const char *val, char *directory_part)
 {
   int l, vl, dl2, xl;
   char *dh2, *expdir, *ret, *v;
index b728233ea6b6580c81259126a69766eb81da9b93..d9fb7379b1fa3bb23e2374dd2ba133981bcd9cfd 100644 (file)
@@ -1,6 +1,6 @@
 /* bashline.h -- interface to the bash readline functions in bashline.c. */
 
-/* Copyright (C) 1993-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -41,7 +41,7 @@ extern int enable_hostname_completion (int);
 extern void initialize_readline (void);
 extern void bashline_reset (void);
 extern void bashline_reinitialize (void);
-extern int bash_re_edit (char *);
+extern int bash_re_edit (const char *);
 
 extern void bashline_set_event_hook (void);
 extern void bashline_reset_event_hook (void);
index 92ddfd40ca825e307b2ef9d18b24a703e6ecfe15..da8b5faed970273994a5652031ceba7e4178206a 100644 (file)
@@ -185,19 +185,19 @@ no_options (WORD_LIST *list)
 }
 
 void
-sh_needarg (char *s)
+sh_needarg (const char *s)
 {
   builtin_error (_("%s: option requires an argument"), s);
 }
 
 void
-sh_neednumarg (char *s)
+sh_neednumarg (const char *s)
 {
   builtin_error (_("%s: numeric argument required"), s);
 }
 
 void
-sh_notfound (char *s)
+sh_notfound (const char *s)
 {
   builtin_error (_("%s: not found"), s);
 }
@@ -205,25 +205,25 @@ sh_notfound (char *s)
 /* Function called when one of the builtin commands detects an invalid
    option. */
 void
-sh_invalidopt (char *s)
+sh_invalidopt (const char *s)
 {
   builtin_error (_("%s: invalid option"), s);
 }
 
 void
-sh_invalidoptname (char *s)
+sh_invalidoptname (const char *s)
 {
   builtin_error (_("%s: invalid option name"), s);
 }
 
 void
-sh_invalidid (char *s)
+sh_invalidid (const char *s)
 {
   builtin_error (_("`%s': not a valid identifier"), s);
 }
 
 void
-sh_invalidnum (char *s)
+sh_invalidnum (const char *s)
 {
   char *msg;
 
@@ -237,13 +237,13 @@ sh_invalidnum (char *s)
 }
 
 void
-sh_invalidsig (char *s)
+sh_invalidsig (const char *s)
 {
   builtin_error (_("%s: invalid signal specification"), s);
 }
 
 void
-sh_badpid (char *s)
+sh_badpid (const char *s)
 {
   builtin_error (_("`%s': not a pid or valid job spec"), s);
 }
@@ -261,7 +261,7 @@ sh_noassign (const char *s)
 }
 
 void
-sh_erange (char *s, char *desc)
+sh_erange (const char *s, const char *desc)
 {
   if (s)
     builtin_error (_("%s: %s out of range"), s, desc ? desc : _("argument"));
@@ -271,13 +271,13 @@ sh_erange (char *s, char *desc)
 
 #if defined (JOB_CONTROL)
 void
-sh_badjob (char *s)
+sh_badjob (const char *s)
 {
   builtin_error (_("%s: no such job"), s);
 }
 
 void
-sh_nojobs (char *s)
+sh_nojobs (const char *s)
 {
   if (s)
     builtin_error (_("%s: no job control"), s);
@@ -288,7 +288,7 @@ sh_nojobs (char *s)
 
 #if defined (RESTRICTED_SHELL)
 void
-sh_restricted (char *s)
+sh_restricted (const char *s)
 {
   if (s)
     builtin_error (_("%s: restricted"), s);
@@ -298,7 +298,7 @@ sh_restricted (char *s)
 #endif
 
 void
-sh_notbuiltin (char *s)
+sh_notbuiltin (const char *s)
 {
   builtin_error (_("%s: not a shell builtin"), s);
 }
@@ -594,7 +594,7 @@ read_octal (char *string)
 char *the_current_working_directory = (char *)NULL;
 
 char *
-get_working_directory (char *for_whom)
+get_working_directory (const char *for_whom)
 {
   if (no_symbolic_links)
     {
@@ -623,7 +623,7 @@ get_working_directory (char *for_whom)
 
 /* Make NAME our internal idea of the current working directory. */
 void
-set_working_directory (char *name)
+set_working_directory (const char *name)
 {
   FREE (the_current_working_directory);
   the_current_working_directory = savestring (name);
@@ -905,7 +905,7 @@ find_special_builtin (const char *name)
 }
 
 static int
-shell_builtin_compare (struct builtin *sbp1, struct builtin *sbp2)
+shell_builtin_compare (const struct builtin *sbp1, const struct builtin *sbp2)
 {
   int result;
 
index 72586d8ed73feaf8df100f755c42e2f90f0345ba..630ebd4406098204bca5b334ea9add58dd49fee9 100644 (file)
@@ -88,22 +88,22 @@ extern void no_args (WORD_LIST *);
 extern int no_options (WORD_LIST *);
 
 /* common error message functions */
-extern void sh_needarg (char *);
-extern void sh_neednumarg (char *);
-extern void sh_notfound (char *);
-extern void sh_invalidopt (char *);
-extern void sh_invalidoptname (char *);
-extern void sh_invalidid (char *);
-extern void sh_invalidnum (char *);
-extern void sh_invalidsig (char *);
+extern void sh_needarg (const char *);
+extern void sh_neednumarg (const char *);
+extern void sh_notfound (const char *);
+extern void sh_invalidopt (const char *);
+extern void sh_invalidoptname (const char *);
+extern void sh_invalidid (const char *);
+extern void sh_invalidnum (const char *);
+extern void sh_invalidsig (const char *);
 extern void sh_readonly (const char *);
 extern void sh_noassign (const char *);
-extern void sh_erange (char *, char *);
-extern void sh_badpid (char *);
-extern void sh_badjob (char *);
-extern void sh_nojobs (char *);
-extern void sh_restricted (char *);
-extern void sh_notbuiltin (char *);
+extern void sh_erange (const char *, const char *);
+extern void sh_badpid (const char *);
+extern void sh_badjob (const char *);
+extern void sh_nojobs (const char *);
+extern void sh_restricted (const char *);
+extern void sh_notbuiltin (const char *);
 extern void sh_wrerror (void);
 extern void sh_ttyerror (int);
 extern int sh_chkwrite (int);
@@ -123,8 +123,8 @@ extern int read_octal (char *);
 
 /* Keeps track of the current working directory. */
 extern char *the_current_working_directory;
-extern char *get_working_directory (char *);
-extern void set_working_directory (char *);
+extern char *get_working_directory (const char *);
+extern void set_working_directory (const char *);
 
 #if defined (JOB_CONTROL)
 extern int get_job_by_name (const char *, int);
diff --git a/expr.c b/expr.c
index 2fbf64f52e9279ae285efbfab384c567084f484b..3ff34fb150a40b90e0d882a0544344c1cd1390f7 100644 (file)
--- a/expr.c
+++ b/expr.c
@@ -1,6 +1,6 @@
 /* expr.c -- arithmetic expression evaluation. */
 
-/* Copyright (C) 1990-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1990-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -196,12 +196,12 @@ static void       evalerror (const char *);
 static void    pushexp (void);
 static void    popexp (void);
 static void    expr_unwind (void);
-static void    expr_bind_variable (char *, char *);
+static void    expr_bind_variable (const char *, const char *);
 #if defined (ARRAY_VARS)
-static void    expr_bind_array_element (char *, arrayind_t, char *);
+static void    expr_bind_array_element (const char *, arrayind_t, const char *);
 #endif
 
-static intmax_t subexpr (char *);
+static intmax_t subexpr (const char *);
 
 static intmax_t        expcomma (void);
 static intmax_t expassign (void);
@@ -320,7 +320,7 @@ expr_unwind (void)
 }
 
 static void
-expr_bind_variable (char *lhs, char *rhs)
+expr_bind_variable (const char *lhs, const char *rhs)
 {
   SHELL_VAR *v;
   int aflags;
@@ -364,7 +364,7 @@ expr_skipsubscript (char *vp, char *cp)
 /* Rewrite tok, which is of the form vname[expression], to vname[ind], where
    IND is the already-calculated value of expression. */
 static void
-expr_bind_array_element (char *tok, arrayind_t ind, char *rhs)
+expr_bind_array_element (const char *tok, arrayind_t ind, const char *rhs)
 {
   char *lhs, *vname;
   size_t llen;
@@ -399,7 +399,7 @@ expr_bind_array_element (char *tok, arrayind_t ind, char *rhs)
    safe to let the loop terminate when expr_depth == 0, without freeing up
    any of the expr_depth[0] stuff. */
 intmax_t
-evalexp (char *expr, int flags, int *validp)
+evalexp (const char *expr, int flags, int *validp)
 {
   intmax_t val;
   int c;
@@ -441,12 +441,12 @@ evalexp (char *expr, int flags, int *validp)
 }
 
 static intmax_t
-subexpr (char *expr)
+subexpr (const char *expr)
 {
   intmax_t val;
   char *p;
 
-  for (p = expr; p && *p && cr_whitespace (*p); p++)
+  for (p = (char *)expr; p && *p && cr_whitespace (*p); p++)
     ;
 
   if (p == NULL || *p == '\0')
@@ -1232,7 +1232,7 @@ expr_streval (char *tok, int e, struct lvalue *lvalue)
   return (tval);
 }
 
-static int
+static inline int
 _is_multiop (int c)
 {
   switch (c)
@@ -1258,7 +1258,7 @@ _is_multiop (int c)
     }
 }
 
-static int
+static inline int
 _is_arithop (int c)
 {
   switch (c)
index a75fedb31e9a6c4e1aa82c0ebeaa09098d30fe62..eded48bbc3b6e62316944d07fddcb2adce446688 100644 (file)
--- a/externs.h
+++ b/externs.h
@@ -1,7 +1,7 @@
 /* externs.h -- extern function declarations which do not appear in their
    own header file. */
 
-/* Copyright (C) 1993-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -29,7 +29,7 @@
 /* Functions from expr.c. */
 #define EXP_EXPANDED   0x01
 
-extern intmax_t evalexp (char *, int, int *);
+extern intmax_t evalexp (const char *, int, int *);
 
 /* Functions from print_cmd.c. */
 #define FUNC_MULTILINE 0x01
@@ -109,7 +109,7 @@ extern char **brace_expand (char *);
 extern int yyparse (void);
 extern int return_EOF (void);
 extern void push_token (int);
-extern char *xparse_dolparen (char *, char *, int *, int);
+extern char *xparse_dolparen (const char *, char *, int *, int);
 extern COMMAND *parse_string_to_command (char *, int);
 extern void reset_parser (void);
 extern void reset_readahead_token (void);
@@ -138,13 +138,13 @@ extern char *history_delimiting_chars (const char *);
 /* Declarations for functions defined in locale.c */
 extern void set_default_locale (void);
 extern void set_default_locale_vars (void);
-extern int set_locale_var (char *, char *);
-extern int set_lang (char *, char *);
+extern int set_locale_var (const char *, const char *);
+extern int set_lang (const char *, const char *);
 extern void set_default_lang (void);
-extern char *get_locale_var (char *);
-extern char *localetrans (char *, int, int *);
+extern char *get_locale_var (const char *);
+extern char *localetrans (const char *, int, int *);
 extern char *mk_msgstr (char *, int *);
-extern char *locale_expand (char *, int, int, int, int *);
+extern char *locale_expand (const char *, int, int, int, int *);
 #ifndef locale_decpoint
 extern int locale_decpoint (void);
 #endif
@@ -165,8 +165,8 @@ extern char *find_token_in_alist (int, STRING_INT_ALIST *, int);
 extern int find_index_in_alist (char *, STRING_INT_ALIST *, int);
 
 extern char *substring (const char *, int, int);
-extern char *strsub (char *, char *, char *, int);
-extern char *strcreplace (char *, int, const char *, int);
+extern char *strsub (const char *, const char *, const char *, int);
+extern char *strcreplace (const char *, int, const char *, int);
 extern void strip_leading (char *);
 extern void strip_trailing (char *, int, int);
 extern void xbcopy (char *, char *, size_t);
@@ -397,12 +397,12 @@ extern STRINGLIST *strlist_create (int);
 extern STRINGLIST *strlist_resize (STRINGLIST *, int);
 extern void strlist_flush (STRINGLIST *);
 extern void strlist_dispose (STRINGLIST *);
-extern int strlist_remove (STRINGLIST *, char *);
+extern int strlist_remove (STRINGLIST *, const char *);
 extern STRINGLIST *strlist_copy (STRINGLIST *);
 extern STRINGLIST *strlist_merge (STRINGLIST *, STRINGLIST *);
 extern STRINGLIST *strlist_append (STRINGLIST *, STRINGLIST *);
-extern STRINGLIST *strlist_prefix_suffix (STRINGLIST *, char *, char *);
-extern void strlist_print (STRINGLIST *, char *);
+extern STRINGLIST *strlist_prefix_suffix (STRINGLIST *, const char *, const char *);
+extern void strlist_print (STRINGLIST *, const char *);
 extern void strlist_walk (STRINGLIST *, sh_strlist_map_func_t *);
 extern void strlist_sort (STRINGLIST *);
 
@@ -414,10 +414,10 @@ extern char **strvec_mcreate (int);
 extern char **strvec_mresize (char **, int);
 extern void strvec_flush (char **);
 extern void strvec_dispose (char **);
-extern int strvec_remove (char **, char *);
-extern int strvec_len (char **);
-extern int strvec_search (char **, char *);
-extern char **strvec_copy (char **);
+extern int strvec_remove (char **, const char *);
+extern int strvec_len (char * const *);
+extern int strvec_search (char **, const char *);
+extern char **strvec_copy (char * const *);
 extern int strvec_posixcmp (char **, char **);
 extern int strvec_strcmp (char **, char **);
 extern void strvec_sort (char **, int);
@@ -471,10 +471,10 @@ extern uintmax_t strtoumax (const char *, char **, int);
 #endif
 
 /* declarations for functions defined in lib/sh/strtrans.c */
-extern char *ansicstr (char *, int, int, int *, int *);
-extern char *ansic_quote (char *, int, int *);
+extern char *ansicstr (const char *, int, int, int *, int *);
+extern char *ansic_quote (const char *, int, int *);
 extern int ansic_shouldquote (const char *);
-extern char *ansiexpand (char *, int, int, int *);
+extern char *ansiexpand (const char *, int, int, int *);
 
 /* declarations for functions defined in lib/sh/strvis.c */
 extern int sh_charvis (const char *, size_t *, size_t, char *, size_t *);
@@ -492,13 +492,13 @@ extern void print_timeval ();
 #define MT_USERANDOM           0x0004
 #define MT_TEMPLATE            0x0008
 
-extern char *sh_mktmpname (char *, int);
-extern int sh_mktmpfd (char *, int, char **);
-/* extern FILE *sh_mktmpfp (char *, int, char **); */
-extern char *sh_mktmpdir (char *, int);
+extern char *sh_mktmpname (const char *, int);
+extern int sh_mktmpfd (const char *, int, char **);
+/* extern FILE *sh_mktmpfp (const char *, int, char **); */
+extern char *sh_mktmpdir (const char *, int);
 
 /* declarations for functions defined in lib/sh/uconvert.c */
-extern int uconvert (char *, long *, long *, char **);
+extern int uconvert (const char *, long *, long *, char **);
 
 /* declarations for functions defined in lib/sh/ufuncs.c */
 extern unsigned int falarm (unsigned int, unsigned int);
@@ -525,7 +525,7 @@ extern int wcsnwidth (const wchar_t *, size_t, int);
 extern void get_new_window_size (int, int *, int *);
 
 /* declarations for functions defined in lib/sh/zcatfd.c */
-extern int zcatfd (int, int, char *);
+extern int zcatfd (int, int, const char *);
 
 /* declarations for functions defined in lib/sh/zgetline.c */
 extern ssize_t zgetline (int, char **, size_t *, int, int);
index 468cbd8b77cb553050c3129db0e251cd3018d992..9b211047acdf2575adb88b4f22a8feff29c8e1e4 100644 (file)
--- a/findcmd.c
+++ b/findcmd.c
@@ -1,6 +1,6 @@
 /* findcmd.c -- Functions to search for commands by name. */
 
-/* Copyright (C) 1997-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -89,7 +89,7 @@ static struct ignorevar execignore =
 };
 
 void
-setup_exec_ignore (char *varname)
+setup_exec_ignore (const char *varname)
 {
   setup_ignore_patterns (&execignore);
 }
index cc4070b4222e925bf23ea395282059b6d2aa2ea6..b0d80d11319145f3613d702d0c862a255975e20a 100644 (file)
--- a/findcmd.h
+++ b/findcmd.h
@@ -1,6 +1,6 @@
 /* findcmd.h - functions from findcmd.c. */
 
-/* Copyright (C) 1997-2015,2020-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2015,2020-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -37,7 +37,7 @@ extern char *find_in_path (const char *, char *, int);
 extern char *find_path_file (const char *);
 extern char *search_for_command (const char *, int);
 extern char *user_command_matches (const char *, int, int);
-extern void setup_exec_ignore (char *);
+extern void setup_exec_ignore (const char *);
 
 extern int dot_found_in_search;
 
index c6d000afc45c03bb325f839e7717822e27b10dc2..42563e567affecb18e39007a98fc981e280833fa 100644 (file)
--- a/general.h
+++ b/general.h
@@ -1,6 +1,6 @@
 /* general.h -- defines that everybody likes to use. */
 
-/* Copyright (C) 1993-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -226,14 +226,14 @@ typedef void sh_vmsg_func_t (const char *, ...);  /* printf(3)-like */
 
 /* Specific function pointer typedefs.  Most of these could be done
    with #defines. */
-typedef void sh_sv_func_t (char *);    /* sh_vcpfunc_t */
+typedef void sh_sv_func_t (const char *);
 typedef void sh_free_func_t (PTR_T);   /* sh_vptrfunc_t */
 typedef void sh_resetsig_func_t (int); /* sh_vintfunc_t */
 
 typedef int sh_ignore_func_t (const char *);   /* sh_icpfunc_t */
 
 typedef int sh_assign_func_t (const char *);
-typedef int sh_wassign_func_t (WORD_DESC *, int);
+typedef int sh_wassign_func_t (const WORD_DESC *, int);
 
 typedef int sh_load_func_t (char *);
 typedef void sh_unload_func_t (char *);
index e45ccb006075845c53db232eb3aac1889340e3e7..1a39b9f645fa3d84b685755a02870b6ae4cac98a 100644 (file)
@@ -73,7 +73,7 @@ extern int errno;
    the inode corresponding to PATH/DIR is identical to THISINO. */
 #if !defined (D_FILENO_AVAILABLE)
 static int
-_path_checkino (char *dotp, char *name, ino_t thisino)
+_path_checkino (const char *dotp, const char *name, ino_t thisino)
 {
   char *fullpath;
   int r, e;
index 4900a62d860f447867696f8265184e7031f834e6..3715850c919ed2d7bfe76862d28004b81b28a289 100644 (file)
@@ -94,7 +94,7 @@ static char rcsid[] = "$Id: inet_addr.c,v 1.5 1996/08/14 03:48:37 drepper Exp $"
  * The value returned is in network order.
  */
 u_long
-inet_addr(register const char *cp)
+inet_addr(const char *cp)
 {
        struct in_addr val;
 
@@ -112,7 +112,7 @@ inet_addr(register const char *cp)
  * cannot distinguish between failure and a local broadcast address.
  */
 int
-inet_aton(register const char *cp, struct in_addr *addr)
+inet_aton(const char *cp, struct in_addr *addr)
 {
        register u_bits32_t val;
        register int base, n;
index 23901b7fdf933b15dfd583118c95d2fd8d3da1d2..aedac592094f7f90da0585e1c563803ec9b4fda8 100644 (file)
@@ -67,21 +67,21 @@ extern int inet_aton (const char *, struct in_addr *);
 #endif
 
 #ifndef HAVE_GETADDRINFO
-static int _getaddr (char *, struct in_addr *);
-static int _getserv (char *, int, unsigned short *);
-static int _netopen4 (char *, char *, int);
+static int _getaddr (const char *, struct in_addr *);
+static int _getserv (const char *, int, unsigned short *);
+static int _netopen4 (const char *, const char *, int);
 #else /* HAVE_GETADDRINFO */
-static int _netopen6 (char *, char *, int);
+static int _netopen6 (const char *, const char *, int);
 #endif
 
-static int _netopen (char *, char *, int);
+static int _netopen (const char *, const char *, int);
 
 #ifndef HAVE_GETADDRINFO
 /* Stuff the internet address corresponding to HOST into AP, in network
    byte order.  Return 1 on success, 0 on failure. */
 
 static int
-_getaddr (char *host, struct in_addr *ap)
+_getaddr (const char *host, struct in_addr *ap)
 {
   struct hostent *h;
   int r;
@@ -112,7 +112,7 @@ _getaddr (char *host, struct in_addr *ap)
 /* Return 1 if SERV is a valid port number and stuff the converted value into
    PP in network byte order. */   
 static int
-_getserv (char *serv, int proto, unsigned short *pp)
+_getserv (const char *serv, int proto, unsigned short *pp)
 {
   intmax_t l;
   unsigned short s;
@@ -149,7 +149,7 @@ _getserv (char *serv, int proto, unsigned short *pp)
  * traditional BSD mechanisms.  Returns the connected socket or -1 on error.
  */
 static int 
-_netopen4(char *host, char *serv, int typ)
+_netopen4(const char *host, const char *serv, int typ)
 {
   struct in_addr ina;
   struct sockaddr_in sin;
@@ -202,7 +202,7 @@ _netopen4(char *host, char *serv, int typ)
  * on error.
  */
 static int
-_netopen6 (char *host, char *serv, int typ)
+_netopen6 (const char *host, const char *serv, int typ)
 {
   int s, e;
   struct addrinfo hints, *res, *res0;
@@ -265,7 +265,7 @@ _netopen6 (char *host, char *serv, int typ)
  * Returns the connected socket or -1 on error.
  */
 static int 
-_netopen(char *host, char *serv, int typ)
+_netopen(const char *host, const char *serv, int typ)
 {
 #ifdef HAVE_GETADDRINFO
   return (_netopen6 (host, serv, typ));
index d25e4135b68b3bcf1f95e1d11d990fbfac871e38..7e197bbbd58166f63d734efd41b34092149e029e 100644 (file)
@@ -40,7 +40,7 @@
 #include <maxpath.h>
 #include <stdc.h>
 
-static int mindist (char *, char *, char *);
+static int mindist (const char *, char *, char *);
 static int spdist (char *, char *);
 
 /*
@@ -102,7 +102,7 @@ spname(char *oldname, char *newname)
  *  Search directory for a guess
  */
 static int
-mindist(char *dir, char *guess, char *best)
+mindist(const char *dir, char *guess, char *best)
 {
   DIR *fd;
   struct dirent *dp;
index 8c1de7c7ff760c3e356a5b8deac40419b6189f97..da31ab896eeff2706dcb28ba3f77a5b653ef26e8 100644 (file)
@@ -97,7 +97,7 @@ strlist_dispose (STRINGLIST *sl)
 }
 
 int
-strlist_remove (STRINGLIST *sl, char *s)
+strlist_remove (STRINGLIST *sl, const char *s)
 {
   int r;
 
@@ -179,7 +179,7 @@ strlist_append (STRINGLIST *m1, STRINGLIST *m2)
 }
 
 STRINGLIST *
-strlist_prefix_suffix (STRINGLIST *sl, char *prefix, char *suffix)
+strlist_prefix_suffix (STRINGLIST *sl, const char *prefix, const char *suffix)
 {
   int plen, slen, tlen, llen, i;
   char *t;
@@ -211,7 +211,7 @@ strlist_prefix_suffix (STRINGLIST *sl, char *prefix, char *suffix)
 }
    
 void
-strlist_print (STRINGLIST *sl, char *prefix)
+strlist_print (STRINGLIST *sl, const char *prefix)
 {
   register int i;
 
index fd3d3e47ce8634eea8da90d416a4977861617443..c06690ca8b1dc5e1990b146e8a82a1e8d5270191 100644 (file)
@@ -60,7 +60,7 @@ strvec_mresize (char **array, int nsize)
 
 /* Return the length of ARRAY, a NULL terminated array of char *. */
 int
-strvec_len (char **array)
+strvec_len (char * const *array)
 {
   register int i;
 
@@ -92,7 +92,7 @@ strvec_dispose (char **array)
 }
 
 int
-strvec_remove (char **array, char *name)
+strvec_remove (char **array, const char *name)
 {
   register int i, j;
   char *x;
@@ -115,7 +115,7 @@ strvec_remove (char **array, char *name)
 /* Find NAME in ARRAY.  Return the index of NAME, or -1 if not present.
    ARRAY should be NULL terminated. */
 int
-strvec_search (char **array, char *name)
+strvec_search (char **array, const char *name)
 {
   int i;
 
@@ -128,7 +128,7 @@ strvec_search (char **array, char *name)
 
 /* Allocate and return a new copy of ARRAY and its contents. */
 char **
-strvec_copy (char **array)
+strvec_copy (char * const *array)
 {
   register int i;
   int len;
index 06eaa0b9204b377ab540a435466b04b051fc1fae..e93904e0b6fd349b08d71dfdcb123886a07d9ef3 100644 (file)
@@ -35,7 +35,7 @@
 /* Find the length of S, but scan at most MAXLEN characters.  If no '\0'
    terminator is found within the first MAXLEN characters, return MAXLEN. */
 size_t
-strnlen (register const char *s, size_t maxlen)
+strnlen (const char *s, size_t maxlen)
 {
   register const char *e;
   size_t n;
index 5d5f7599c78508da3c0e472f6f12b342ba36836c..29e3081297aa769d1cd400a2ab8f950518e73360 100644 (file)
@@ -48,7 +48,7 @@
    quote CTLESC and CTLNUL with CTLESC.  If (flags&4) is non-zero, we want
    to remove the backslash before any unrecognized escape sequence. */
 char *
-ansicstr (char *string, int len, int flags, int *sawc, int *rlen)
+ansicstr (const char *string, int len, int flags, int *sawc, int *rlen)
 {
   int c, temp;
   char *ret, *r, *s;
@@ -71,7 +71,7 @@ ansicstr (char *string, int len, int flags, int *sawc, int *rlen)
 #else
   ret = (char *)xmalloc (2*len + 1);   /* 2*len for possible CTLESC */
 #endif
-  for (r = ret, s = string; s && *s; )
+  for (r = ret, s = (char *)string; s && *s; )
     {
       c = *s++;
       if (c != '\\' || *s == '\0')
@@ -225,7 +225,7 @@ ansicstr (char *string, int len, int flags, int *sawc, int *rlen)
 /* Take a string STR, possibly containing non-printing characters, and turn it
    into a $'...' ANSI-C style quoted string.  Returns a new string. */
 char *
-ansic_quote (char *str, int flags, int *rlen)
+ansic_quote (const char *str, int flags, int *rlen)
 {
   char *r, *ret, *s;
   int l, rsize;
@@ -246,7 +246,7 @@ ansic_quote (char *str, int flags, int *rlen)
   *r++ = '$';
   *r++ = '\'';
 
-  for (s = str; c = *s; s++)
+  for (s = (char *)str; c = *s; s++)
     {
       b = l = 1;               /* 1 == add backslash; 0 == no backslash */
       clen = 1;
@@ -367,7 +367,7 @@ ansic_shouldquote (const char *string)
 /* $'...' ANSI-C expand the portion of STRING between START and END and
    return the result.  The result cannot be longer than the input string. */
 char *
-ansiexpand (char *string, int start, int end, int *lenp)
+ansiexpand (const char *string, int start, int end, int *lenp)
 {
   char *temp, *t;
   int len, tlen;
index 098c111b8dcd7eb7f423eb7b6d9ec7634384499a..9736e06d03ba967dd4aad58460c3d8611b5686c0 100644 (file)
@@ -135,9 +135,10 @@ sh_seedrand (void)
 }
 
 char *
-sh_mktmpname (char *nameroot, int flags)
+sh_mktmpname (const char *nameroot, int flags)
 {
-  char *filename, *tdir, *lroot;
+  char *filename, *tdir;
+  const char *lroot;
   struct stat sb;
   int r, tdlen;
   static int seeded = 0;
@@ -196,9 +197,10 @@ sh_mktmpname (char *nameroot, int flags)
 }
 
 int
-sh_mktmpfd (char *nameroot, int flags, char **namep)
+sh_mktmpfd (const char *nameroot, int flags, char **namep)
 {
-  char *filename, *tdir, *lroot;
+  char *filename, *tdir;
+  const char *lroot;
   int fd, tdlen;
   
   filename = (char *)xmalloc (PATH_MAX + 1);
@@ -259,7 +261,7 @@ sh_mktmpfd (char *nameroot, int flags, char **namep)
 }
 
 FILE *
-sh_mktmpfp (char *nameroot, int flags, char **namep)
+sh_mktmpfp (const char *nameroot, int flags, char **namep)
 {
   int fd;
   FILE *fp;
@@ -274,9 +276,10 @@ sh_mktmpfp (char *nameroot, int flags, char **namep)
 }
 
 char *
-sh_mktmpdir (char *nameroot, int flags)
+sh_mktmpdir (const char *nameroot, int flags)
 {
-  char *filename, *tdir, *lroot, *dirname;
+  char *filename, *tdir, *dirname;
+  const char *lroot;
   int fd, tdlen;
   
 #ifdef USE_MKDTEMP
index 909686cfcf92e578aaaf3d2978a806276ba99e0b..39790f6bee1a7b363b7322f15aa7f005c284b391 100644 (file)
@@ -57,7 +57,7 @@ static int multiplier[7] = { 1, 100000, 10000, 1000, 100, 10, 1 };
    Return 1 if value converted; 0 if invalid integer for either whole or
    fractional parts. */
 int
-uconvert(char *s, long *ip, long *up, char **ep)
+uconvert(const char *s, long *ip, long *up, char **ep)
 {
   int n, mult;
   long ipart, upart;
@@ -69,10 +69,10 @@ uconvert(char *s, long *ip, long *up, char **ep)
   if (s && (*s == '-' || *s == '+'))
     {
       mult = (*s == '-') ? -1 : 1;
-      p = s + 1;
+      p = (char *)s + 1;
     }
   else
-    p = s;
+    p = (char *)s;
 
   for ( ; p && *p; p++)
     {
index fe7b2a23b1f72e4f7084603b3cdbe70f5b5187a2..d365b193f324999333ab8b7ed54de80c0ac887c1 100644 (file)
@@ -44,7 +44,7 @@ extern int zwrite (int, char *, ssize_t);
 /* Dump contents of file descriptor FD to OFD.  FN is the filename for
    error messages (not used right now). */
 int
-zcatfd (int fd, int ofd, char *fn)
+zcatfd (int fd, int ofd, const char *fn)
 {
   ssize_t nr;
   int rval;
index bccbe6d999755bb445273804578f2e70d0c3c10a..60e08a698161eefa01a8244c47a72feae63c374c 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -1,6 +1,6 @@
 /* locale.c - Miscellaneous internationalization functions. */
 
-/* Copyright (C) 1996-2009,2012,2016-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2009,2012,2016-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -174,7 +174,7 @@ set_default_locale_vars (void)
 /* Set one of the locale categories (specified by VAR) to VALUE.  Returns 1
   if successful, 0 otherwise. */
 int
-set_locale_var (char *var, char *value)
+set_locale_var (const char *var, const char *value)
 {
   int r;
   char *x;
@@ -302,7 +302,7 @@ set_locale_var (char *var, char *value)
    reset_locale_vars() to reset any default values if LC_ALL is unset or
    null. */
 int
-set_lang (char *var, char *value)
+set_lang (const char *var, const char *value)
 {
   FREE (lang);
   if (value)
@@ -334,7 +334,7 @@ set_default_lang (void)
    The precedence is as POSIX.2 specifies:  LC_ALL has precedence over
    the specific locale variables, and LANG, if set, is used as the default. */
 char *
-get_locale_var (char *var)
+get_locale_var (const char *var)
 {
   char *locale;
 
@@ -403,7 +403,7 @@ reset_locale_vars (void)
    is not available, the passed string is returned unchanged.  The
    length of the translated string is returned in LENP, if non-null. */
 char *
-localetrans (char *string, int len, int *lenp)
+localetrans (const char *string, int len, int *lenp)
 {
   char *locale, *t;
   char *translated;
@@ -436,7 +436,7 @@ localetrans (char *string, int len, int *lenp)
   if (default_domain && *default_domain)
     translated = dgettext (default_domain, string);
   else
-    translated = string;
+    translated = (char *)string;
 
   if (translated == string)    /* gettext returns its argument if untranslatable */
     {
@@ -508,7 +508,7 @@ mk_msgstr (char *string, int *foundnlp)
    by the caller.  The length of the translated string is returned in LENP,
    if non-null. */
 char *
-locale_expand (char *string, int start, int end, int lineno, int *lenp)
+locale_expand (const char *string, int start, int end, int lineno, int *lenp)
 {
   int len, tlen, foundnl;
   char *temp, *t, *t2;
index a29f3e0d7ff4314955116b66a7a3bd0243dc13c3..118c1a5f99bbebf303ea82d099df1fe697fa2c37 100644 (file)
@@ -1,6 +1,6 @@
 /* mailcheck.c -- The check is in the mail... */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -72,9 +72,9 @@ int mail_warning;
 static int find_mail_file (const char *);
 static void init_mail_file (int);
 static void update_mail_file (int);
-static int add_mail_file (char *, char *);
+static int add_mail_file (char *, const char *);
 
-static FILEINFO *alloc_mail_file (char *, char *);
+static FILEINFO *alloc_mail_file (char *, const char *);
 static void dispose_mail_file (FILEINFO *);
 
 static int file_mod_date_changed (int);
@@ -174,7 +174,7 @@ update_mail_file (int i)
 /* Add this file to the list of remembered files and return its index
    in the list of mail files. */
 static int
-add_mail_file (char *file, char *msg)
+add_mail_file (char *file, const char *msg)
 {
   struct stat finfo;
   char *filename;
@@ -212,7 +212,7 @@ reset_mail_files (void)
 }
 
 static FILEINFO *
-alloc_mail_file (char *filename, char *msg)
+alloc_mail_file (char *filename, const char *msg)
 {
   FILEINFO *mf;
 
diff --git a/parse.y b/parse.y
index ed39bf1631422bf22d4bfd1f540d261fa830409b..8f330897c1fe8303985b62052418180a0861e2fd 100644 (file)
--- a/parse.y
+++ b/parse.y
@@ -4202,7 +4202,7 @@ INTERNAL_DEBUG(("current_token (%d) != shell_eof_token (%c)", current_token, she
    called by the word expansion code and so does not have to reset as much
    parser state before calling yyparse(). */
 char *
-xparse_dolparen (char *base, char *string, int *indp, int flags)
+xparse_dolparen (const char *base, char *string, int *indp, int flags)
 {
   sh_parser_state_t ps;
   sh_input_line_state_t ls;
index 0ae7862a536e24efdfb851abeabf998ed8e3043c..81cf543a9aa70f11b41b7691cb2af3c879d8a8e0 100644 (file)
--- a/pathexp.c
+++ b/pathexp.c
@@ -1,6 +1,6 @@
 /* pathexp.c -- The shell interface to the globbing library. */
 
-/* Copyright (C) 1995-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -441,7 +441,7 @@ static struct ignorevar globignore =
    has changed.  If GLOBIGNORE is being unset, we also need to disable
    the globbing of filenames beginning with a `.'. */
 void
-setup_glob_ignore (char *name)
+setup_glob_ignore (const char *name)
 {
   char *v;
 
index 7bd2665ce40be567d3ae7905a5e1466002627194..e78db524db00ff5e89f7e77e9d747059786ade2a 100644 (file)
--- a/pathexp.h
+++ b/pathexp.h
@@ -1,6 +1,6 @@
 /* pathexp.h -- The shell interface to the globbing library. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -97,7 +97,7 @@ struct ignorevar {
 
 extern void setup_ignore_patterns (struct ignorevar *);
 
-extern void setup_glob_ignore (char *);
+extern void setup_glob_ignore (const char *);
 extern int should_ignore_glob_matches (void);
 extern void ignore_glob_matches (char **);
 
index d8398c3fba710d931cdbda051bb1e67716c2072d..737b6cf6047132e788db3515f1a66c4219aa676f 100644 (file)
@@ -1,6 +1,6 @@
 /* pcomplete.c - functions to generate lists of matches for programmable completion. */
 
-/* Copyright (C) 1999-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -111,7 +111,7 @@ static int it_init_setopts (ITEMLIST *);
 static int it_init_shopts (ITEMLIST *);
 
 static int shouldexp_filterpat (char *);
-static char *preproc_filterpat (char *, const char *);
+static char *preproc_filterpat (const char *, const char *);
 
 static void init_itemlist_from_varlist (ITEMLIST *, SVFUNC *);
 
@@ -140,7 +140,7 @@ static SHELL_VAR *bind_comp_words (WORD_LIST *);
 #endif
 static void bind_compfunc_variables (char *, int, WORD_LIST *, int, int);
 static void unbind_compfunc_variables (int);
-static WORD_LIST *build_arg_list (char *, const char *, const char *, WORD_LIST *, int);
+static WORD_LIST *build_arg_list (const char *, const char *, const char *, WORD_LIST *, int);
 static WORD_LIST *command_line_to_word_list (char *, int, int, int *, int *);
 
 static int compgen_compspec = 0;       /* are we generating completions for compgen? */
@@ -263,7 +263,7 @@ shouldexp_filterpat (char *s)
    quote a `&' and inhibit substitution.  Returns a new string.  This just
    calls stringlib.c:strcreplace(). */
 static char *
-preproc_filterpat (char *pat, const char *text)
+preproc_filterpat (const char *pat, const char *text)
 {
   char *ret;
 
@@ -1004,7 +1004,7 @@ unbind_compfunc_variables (int exported)
    make do with the COMP_LINE and COMP_POINT variables. */
 
 static WORD_LIST *
-build_arg_list (char *cmd, const char *cname, const char *text, WORD_LIST *lwords, int ind)
+build_arg_list (const char *cmd, const char *cname, const char *text, WORD_LIST *lwords, int ind)
 {
   WORD_LIST *ret, *cl, *l;
   WORD_DESC *w;
index 1b2b0a0c688864f6589fc6c9cfe58f84a8ed6ca4..f0821b1928494427b78e12a03b34014688ea319f 100644 (file)
@@ -1,7 +1,7 @@
 /* pcomplete.h - structure definitions and other stuff for programmable
                 completion. */
 
-/* Copyright (C) 1999-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
diff --git a/redir.c b/redir.c
index 38a9428134c28cdbf1d85a05bb1fd11ec565e43c..f3407c69ada7ba42f0358af3a97c5c857bd4a33d 100644 (file)
--- a/redir.c
+++ b/redir.c
@@ -103,11 +103,11 @@ static int undoablefd (int);
 static int do_redirection_internal (REDIRECT *, int, char **);
 
 static char *heredoc_expand (WORD_DESC *, enum r_instruction, size_t *);
-static int heredoc_write (int, char *, size_t);
+static int heredoc_write (int, const char *, size_t);
 static int here_document_to_fd (WORD_DESC *, enum r_instruction);
 
 static int redir_special_open (int, char *, int, int, enum r_instruction);
-static int noclobber_open (char *, int, int, enum r_instruction);
+static int noclobber_open (const char *, int, int, enum r_instruction);
 static int redir_open (char *, int, int, enum r_instruction);
 
 static int redir_varassign (REDIRECT *, int);
@@ -400,7 +400,7 @@ heredoc_expand (WORD_DESC *redirectee, enum r_instruction ri, size_t *lenp)
 /* Write HEREDOC (of length HDLEN) to FD, returning 0 on success and ERRNO on
    error. Don't handle interrupts. */
 static int
-heredoc_write (int fd, char *heredoc, size_t herelen)
+heredoc_write (int fd, const char *heredoc, size_t herelen)
 {
   ssize_t nw;
   int e;
@@ -646,7 +646,7 @@ redir_special_open (int spec, char *filename, int flags, int mode, enum r_instru
    race conditions and avoiding the problem where the file is replaced
    between the stat(2) and open(2). */
 static int
-noclobber_open (char *filename, int flags, int mode, enum r_instruction ri)
+noclobber_open (const char *filename, int flags, int mode, enum r_instruction ri)
 {
   int r, fd;
   struct stat finfo, finfo2;
index c91fc2c2e25e05371dee6ac54cdeffa79d674fb4..068cd6a3dc23472975ef58c961fe5096ba6ba3e4 100644 (file)
@@ -1,6 +1,6 @@
 /* stringlib.c - Miscellaneous string functions. */
 
-/* Copyright (C) 1996-2009,2022 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2009,2022-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -131,7 +131,7 @@ substring (const char *string, int start, int end)
    replace all occurrences, otherwise replace only the first.
    This returns a new string; the caller should free it. */
 char *
-strsub (char *string, char *pat, char *rep, int global)
+strsub (const char *string, const char *pat, const char *rep, int global)
 {
   size_t patlen, replen, templen, tempsize, i;
   int repl;
@@ -146,8 +146,13 @@ strsub (char *string, char *pat, char *rep, int global)
          if (replen)
            RESIZE_MALLOCED_BUFFER (temp, templen, replen, tempsize, (replen * 2));
 
-         for (r = rep; *r; )   /* can rep == "" */
+#if 0
+         for (r = (char *)rep; *r; )   /* can rep == "" */
            temp[templen++] = *r++;
+#else
+         memcpy (temp + templen, rep, replen);
+         templen += replen;
+#endif
 
          i += patlen ? patlen : 1;     /* avoid infinite recursion */
          repl = global != 0;
@@ -170,9 +175,9 @@ strsub (char *string, char *pat, char *rep, int global)
    globbing.  Backslash may be used to quote C. If (FLAGS & 2) we allow
    backslash to escape backslash as well. */
 char *
-strcreplace (char *string, int c, const char *text, int flags)
+strcreplace (const char *string, int c, const char *text, int flags)
 {
-  char *ret, *p, *r, *t;
+  char *ret, *r, *p, *t;
   size_t len, rlen, ind, tlen;
   int do_glob, escape_backslash;
 
@@ -183,7 +188,7 @@ strcreplace (char *string, int c, const char *text, int flags)
   rlen = len + strlen (string) + 2;
   ret = (char *)xmalloc (rlen);
 
-  for (p = string, r = ret; p && *p; )
+  for (p = (char *)string, r = ret; p && *p; )
     {
       if (*p == c)
        {
diff --git a/subst.c b/subst.c
index c2146f96dcca5293b30ae3b72c10e14da2cf860b..a3b59c21454077b1352b3418404202369e8ab95c 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -4,7 +4,7 @@
 /* ``Have a little faith, there's magic in the night.  You ain't a
      beauty, but, hey, you're alright.'' */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -144,7 +144,7 @@ extern int errno;
 /* An expansion function that takes a string and a quoted flag and returns
    a WORD_LIST *.  Used as the type of the third argument to
    expand_string_if_necessary(). */
-typedef WORD_LIST *EXPFUNC (char *, int);
+typedef WORD_LIST *EXPFUNC (const char *, int);
 
 /* Process ID of the last command executed within command substitution. */
 pid_t last_command_subst_pid = NO_PID;
@@ -240,10 +240,10 @@ static char *quoted_strchr (char *, int, int);
 static char *expand_string_if_necessary (char *, int, EXPFUNC *);
 static inline char *expand_string_to_string_internal (char *, int, EXPFUNC *);
 static WORD_LIST *call_expand_word_internal (WORD_DESC *, int, int, int *, int *);
-static WORD_LIST *expand_string_internal (char *, int);
-static WORD_LIST *expand_string_leave_quoted (char *, int);
-static WORD_LIST *expand_string_for_rhs (char *, int, int, int, int *, int *);
-static WORD_LIST *expand_string_for_pat (char *, int, int *, int *);
+static WORD_LIST *expand_string_internal (const char *, int);
+static WORD_LIST *expand_string_leave_quoted (const char *, int);
+static WORD_LIST *expand_string_for_rhs (const char *, int, int, int, int *, int *);
+static WORD_LIST *expand_string_for_pat (const char *, int, int *, int *);
 
 static char *quote_escapes_internal (const char *, int);
 
@@ -253,28 +253,28 @@ static WORD_LIST *list_dequote_escapes (WORD_LIST *);
 static char *make_quoted_char (int);
 static WORD_LIST *quote_list (WORD_LIST *);
 
-static int unquoted_substring (char *, char *);
-static int unquoted_member (int, char *);
+static int unquoted_substring (const char *, const char *);
+static int unquoted_member (int, const char *);
 
 #if defined (ARRAY_VARS)
-static SHELL_VAR *do_compound_assignment (char *, char *, int);
+static SHELL_VAR *do_compound_assignment (const char *, char *, int);
 #endif
 static int do_assignment_internal (const WORD_DESC *, int);
 
-static char *string_extract_verbatim (char *, size_t, int *, char *, int);
-static char *string_extract (char *, int *, char *, int);
-static char *string_extract_double_quoted (char *, int *, int);
-static inline char *string_extract_single_quoted (char *, int *, int);
+static char *string_extract_verbatim (const char *, size_t, int *, char *, int);
+static char *string_extract (const char *, int *, const char *, int);
+static char *string_extract_double_quoted (const char *, int *, int);
+static inline char *string_extract_single_quoted (const char *, int *, int);
 static inline int skip_single_quoted (const char *, size_t, int, int);
-static int skip_double_quoted (char *, size_t, int, int);
-static char *extract_delimited_string (char *, int *, char *, char *, char *, int);
-static char *extract_heredoc_dolbrace_string (char *, int *, int, int);
-static char *extract_dollar_brace_string (char *, int *, int, int);
+static int skip_double_quoted (const char *, size_t, int, int);
+static char *extract_delimited_string (const char *, int *, char *, char *, char *, int);
+static char *extract_heredoc_dolbrace_string (const char *, int *, int, int);
+static char *extract_dollar_brace_string (const char *, int *, int, int);
 static int skip_matched_pair (const char *, int, int, int, int);
 
-static char *pos_params (char *, int, int, int, int);
+static char *pos_params (const char *, int, int, int, int);
 
-static unsigned char *mb_getcharlens (char *, int);
+static unsigned char *mb_getcharlens (const char *, int);
 
 static char *remove_upattern (char *, char *, int);
 #if defined (HANDLE_MULTIBYTE) 
@@ -287,7 +287,7 @@ static int match_upattern (char *, char *, int, char **, char **);
 static int match_wpattern (wchar_t *, char **, size_t, wchar_t *, int, char **, char **);
 #endif
 static int match_pattern (char *, char *, int, char **, char **);
-static int getpatspec (int, char *);
+static int getpatspec (int, const char *);
 static char *getpattern (char *, int, int);
 static char *variable_remove_pattern (char *, char *, int, int);
 static char *list_remove_pattern (WORD_LIST *, char *, int, int, int);
@@ -309,7 +309,7 @@ static char *parameter_list_transform (int, int, int);
 static char *array_transform (int, SHELL_VAR *, int, int);
 #endif
 static char *parameter_brace_transform (char *, char *, array_eltstate_t *, char *, int, int, int, int);
-static int valid_parameter_transform (char *);
+static int valid_parameter_transform (const char *);
 
 static char *process_substitute (char *, int);
 
@@ -317,11 +317,11 @@ static char *optimize_cat_file (REDIRECT *, int, int, int *);
 static char *read_comsub (int, int, int, int *);
 
 #ifdef ARRAY_VARS
-static arrayind_t array_length_reference (char *);
+static arrayind_t array_length_reference (const char *);
 #endif
 
-static int valid_brace_expansion_word (char *, int);
-static int chk_atstar (char *, int, int, int *, int *);
+static int valid_brace_expansion_word (const char *, int);
+static int chk_atstar (const char *, int, int, int *, int *);
 static int chk_arithsub (const char *, int);
 
 static WORD_DESC *parameter_brace_expand_word (char *, int, int, int, array_eltstate_t *);
@@ -330,16 +330,16 @@ static WORD_DESC *parameter_brace_expand_indir (char *, int, int, int, int *, in
 static WORD_DESC *parameter_brace_expand_rhs (char *, char *, int, int, int, int *, int *);
 static void parameter_brace_expand_error (char *, char *, int);
 
-static int valid_length_expression (char *);
+static int valid_length_expression (const char *);
 static intmax_t parameter_brace_expand_length (char *);
 
 static char *skiparith (char *, int);
 static int verify_substring_values (SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *);
 static int get_var_and_type (char *, char *, array_eltstate_t *, int, int, SHELL_VAR **, char **);
-static char *mb_substring (char *, int, int);
+static char *mb_subfstring (const char *, int, int);
 static char *parameter_brace_substring (char *, char *, array_eltstate_t *, char *, int, int, int);
 
-static int shouldexp_replacement (char *);
+static int shouldexp_replacement (const char *);
 
 static char *pos_params_pat_subst (char *, char *, char *, int);
 
@@ -636,7 +636,7 @@ quoted_strchr (char *s, int c, int flags)
 /* Return 1 if CHARACTER appears in an unquoted portion of
    STRING.  Return 0 otherwise.  CHARACTER must be a single-byte character. */
 static int
-unquoted_member (int character, char *string)
+unquoted_member (int character, const char *string)
 {
   size_t slen;
   int sindex, c;
@@ -675,7 +675,7 @@ unquoted_member (int character, char *string)
 
 /* Return 1 if SUBSTR appears in an unquoted portion of STRING. */
 static int
-unquoted_substring (char *substr, char *string)
+unquoted_substring (const char *substr, const char *string)
 {
   size_t slen;
   int sindex, c, sublen;
@@ -776,7 +776,7 @@ sub_append_number (intmax_t number, char *target, size_t *indx, size_t *size)
    update SINDEX.  If (flags & SX_REQMATCH) is non-zero, the string must
    contain a closing character from CHARLIST. */
 static char *
-string_extract (char *string, int *sindex, char *charlist, int flags)
+string_extract (const char *string, int *sindex, const char *charlist, int flags)
 {
   register int c, i;
   int found;
@@ -837,10 +837,10 @@ string_extract (char *string, int *sindex, char *charlist, int flags)
    Backslashes between the embedded double quotes are processed.  If STRIPDQ
    is zero, an unquoted `"' terminates the string. */
 static char *
-string_extract_double_quoted (char *string, int *sindex, int flags)
+string_extract_double_quoted (const char *string, int *sindex, int flags)
 {
   size_t slen;
-  char *send;
+  const char *send;
   int j, i, t;
   unsigned char c;
   char *temp, *ret;            /* The new string we return. */
@@ -948,7 +948,7 @@ add_one_character:
          if (ret == 0 && no_longjmp_on_fatal_error)
            {
              free_ret = 0;
-             ret = string + i + 2;
+             ret = (char *)string + i + 2;
            }
 
          /* XXX - CHECK_STRING_OVERRUN here? */
@@ -998,7 +998,7 @@ add_one_character:
 
 /* This should really be another option to string_extract_double_quoted. */
 static int
-skip_double_quoted (char *string, size_t slen, int sind, int flags)
+skip_double_quoted (const char *string, size_t slen, int sind, int flags)
 {
   int c, i;
   char *ret;
@@ -1069,7 +1069,7 @@ skip_double_quoted (char *string, size_t slen, int sind, int flags)
    the closing single quote. ALLOWESC allows the single quote to be quoted by
    a backslash; it's not used yet. */
 static inline char *
-string_extract_single_quoted (char *string, int *sindex, int allowesc)
+string_extract_single_quoted (const char *string, int *sindex, int allowesc)
 {
   register int i;
   size_t slen;
@@ -1130,7 +1130,7 @@ skip_single_quoted (const char *string, size_t slen, int sind, int flags)
 /* Just like string_extract, but doesn't hack backslashes or any of
    that other stuff.  Obeys CTLESC quoting.  Used to do splitting on $IFS. */
 static char *
-string_extract_verbatim (char *string, size_t slen, int *sindex, char *charlist, int flags)
+string_extract_verbatim (const char *string, size_t slen, int *sindex, char *charlist, int flags)
 {
   register int i;
 #if defined (HANDLE_MULTIBYTE)
@@ -1153,9 +1153,10 @@ string_extract_verbatim (char *string, size_t slen, int *sindex, char *charlist,
      *sindex */
   if (*charlist == 0)
     {
-      temp = string + *sindex;
-      c = (*sindex == 0) ? slen : STRLEN (temp);
-      temp = savestring (temp);
+      const char *xtemp;
+      xtemp = string + *sindex;
+      c = (*sindex == 0) ? slen : STRLEN (xtemp);
+      temp = savestring (xtemp);
       *sindex += c;
       return temp;
     }
@@ -1242,16 +1243,18 @@ string_extract_verbatim (char *string, size_t slen, int *sindex, char *charlist,
    Make (SINDEX) get the position of the matching ")". )
    XFLAGS is additional flags to pass to other extraction functions. */
 char *
-extract_command_subst (char *string, int *sindex, int xflags)
+extract_command_subst (const char *string, int *sindex, int xflags)
 {
   char *ret;
+  char *xstr;
 
   if (string[*sindex] == LPAREN || (xflags & SX_COMPLETE))
     return (extract_delimited_string (string, sindex, "$(", "(", ")", xflags|SX_COMMAND)); /*)*/
   else
     {
       xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
-      ret = xparse_dolparen (string, string+*sindex, sindex, xflags);
+      xstr = (char *)string + *sindex;
+      ret = xparse_dolparen (string, xstr, sindex, xflags);
       return ret;
     }
 }
@@ -1260,7 +1263,7 @@ extract_command_subst (char *string, int *sindex, int xflags)
    Start extracting at (SINDEX) as if we had just seen "$[".
    Make (SINDEX) get the position of the matching "]". */
 char *
-extract_arithmetic_subst (char *string, int *sindex)
+extract_arithmetic_subst (const char *string, int *sindex)
 {
   return (extract_delimited_string (string, sindex, "$[", "[", "]", 0)); /*]*/
 }
@@ -1270,14 +1273,17 @@ extract_arithmetic_subst (char *string, int *sindex)
    Start extracting at (SINDEX) as if we had just seen "<(".
    Make (SINDEX) get the position of the matching ")". */ /*))*/
 char *
-extract_process_subst (char *string, char *starter, int *sindex, int xflags)
+extract_process_subst (const char *string, char *starter, int *sindex, int xflags)
 {
 #if 0
   /* XXX - check xflags&SX_COMPLETE here? */
   return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
 #else
+  char *xstr;
+
   xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
-  return (xparse_dolparen (string, string+*sindex, sindex, xflags));
+  xstr = (char *)string + *sindex;
+  return (xparse_dolparen (string, xstr, sindex, xflags));
 #endif
 }
 #endif /* PROCESS_SUBSTITUTION */
@@ -1287,7 +1293,7 @@ extract_process_subst (char *string, char *starter, int *sindex, int xflags)
    each caller verifies that the last character in STRING is a right paren,
    we don't even need to call extract_delimited_string. */
 char *
-extract_array_assignment_list (char *string, int *sindex)
+extract_array_assignment_list (const char *string, int *sindex)
 {
   int slen;
   char *ret;
@@ -1312,7 +1318,7 @@ extract_array_assignment_list (char *string, int *sindex)
    contains a character string that can also match CLOSER and thus
    needs to be skipped. */
 static char *
-extract_delimited_string (char *string, int *sindex, char *opener, char *alt_opener, char *closer, int flags)
+extract_delimited_string (const char *string, int *sindex, char *opener, char *alt_opener, char *closer, int flags)
 {
   int i, c, si;
   size_t slen;
@@ -1480,12 +1486,13 @@ extract_delimited_string (char *string, int *sindex, char *opener, char *alt_ope
    This needs to match the logic in parse.y:parse_matched_pair so we get
    consistent behavior between here-documents and double-quoted strings. */
 static char *
-extract_heredoc_dolbrace_string (char *string, int *sindex, int quoted, int flags)
+extract_heredoc_dolbrace_string (const char *string, int *sindex, int quoted, int flags)
 {
   register int i, c;
   size_t slen, tlen, result_index, result_size;
   int pass_character, nesting_level, si, dolbrace_state;
-  char *result, *t, *send;
+  char *result, *t;
+  const char *send;
   DECLARE_MBSTATE;
 
   pass_character = 0;
@@ -1760,7 +1767,7 @@ static int dbstate[PARAMEXPNEST_MAX];
    occurs inside double quotes. */
 /* XXX -- this is very similar to extract_delimited_string -- XXX */
 static char *
-extract_dollar_brace_string (char *string, int *sindex, int quoted, int flags)
+extract_dollar_brace_string (const char *string, int *sindex, int quoted, int flags)
 {
   register int i, c;
   size_t slen;
@@ -2122,7 +2129,7 @@ skipsubscript (const char *string, int start, int flags)
    a lot of shell syntax.  It's very similar to skip_double_quoted and other
    functions of that ilk. */
 int
-skip_to_delim (char *string, int start, char *delims, int flags)
+skip_to_delim (const char *string, int start, const char *delims, int flags)
 {
   int i, pass_next, backq, dquote, si, c, oldjmp;
   int invert, skipquote, skipcmd, noprocsub, completeflag;
@@ -2300,7 +2307,7 @@ skip_to_delim (char *string, int start, char *delims, int flags)
    down version of skip_to_delims.  The essential difference is that this
    resets the quoting state when starting a command substitution */
 int
-skip_to_histexp (char *string, int start, char *delims, int flags)
+skip_to_histexp (const char *string, int start, const char *delims, int flags)
 {
   int i, pass_next, backq, dquote, c, oldjmp;
   int histexp_comsub, histexp_backq, old_dquote;
@@ -2539,7 +2546,7 @@ unclosed_pair (char *string, int eindex, char *openstr)
    the index of the word containing SENTINEL.  Non-whitespace chars in
    DELIMS delimit separate fields.  This is used by programmable completion. */
 WORD_LIST *
-split_at_delims (char *string, int slen, const char *delims, int sentinel, int flags, int *nwp, int *cwp)
+split_at_delims (const char *string, int slen, const char *delims, int sentinel, int flags, int *nwp, int *cwp)
 {
   int ts, te, i, nw, cw, ifs_split, dflags;
   char *token, *d, *d2;
@@ -2702,7 +2709,7 @@ split_at_delims (char *string, int slen, const char *delims, int sentinel, int f
 /* UNUSED */
 /* Extract the name of the variable to bind to from the assignment string. */
 char *
-assignment_name (char *string)
+assignment_name (const char *string)
 {
   int offset;
   char *temp;
@@ -3364,7 +3371,7 @@ list_string_with_quotes (char *string)
 
 #if defined (ARRAY_VARS)
 static SHELL_VAR *
-do_compound_assignment (char *name, char *value, int flags)
+do_compound_assignment (const char *name, char *value, int flags)
 {
   SHELL_VAR *v;
   int mklocal, mkassoc, mkglobal, chklocal;
@@ -3412,7 +3419,7 @@ do_compound_assignment (char *name, char *value, int flags)
          return (v);   /* XXX */
        }
       /* sanity check */
-      newname = (v == 0) ? nameref_transform_name (name, flags) : name;
+      newname = (v == 0) ? nameref_transform_name (name, flags) : (char *)name;
       list = expand_compound_array_assignment (v, value, flags);
       if (v == 0 && mkassoc)
        v = make_new_assoc_variable (newname);
@@ -3578,7 +3585,7 @@ do_assignment (char *string)
 }
 
 int
-do_word_assignment (WORD_DESC *word, int flags)
+do_word_assignment (const WORD_DESC *word, int flags)
 {
   return do_assignment_internal (word, 1);
 }
@@ -3660,7 +3667,7 @@ string_rest_of_args (int dollar_star)
    Q_HERE_DOCUMENT or Q_DOUBLE_QUOTES, this returns a quoted list, otherwise
    no quoting chars are added. */
 static char *
-pos_params (char *string, int start, int end, int quoted, int pflags)
+pos_params (const char *string, int start, int end, int quoted, int pflags)
 {
   WORD_LIST *save, *params, *h, *t;
   char *ret;
@@ -3806,7 +3813,7 @@ expand_assignment_string_to_string (char *string, int quoted)
    or a backslash into a backslash. The output of this function must eventually
    be processed by strcreplace(). */
 static char *
-quote_string_for_repl (char *string, int flags)
+quote_string_for_repl (const char *string, int flags)
 {
   size_t slen;
   char *result, *t;
@@ -3961,9 +3968,10 @@ expand_arith_string (char *string, int quoted)
 #if defined (COND_COMMAND)
 /* Just remove backslashes in STRING.  Returns a new string. */
 char *
-remove_backslashes (char *string)
+remove_backslashes (const char *string)
 {
-  char *r, *ret, *s;
+  char *r, *ret;
+  const char *s;
 
   r = ret = (char *)xmalloc (strlen (string) + 1);
   for (s = string; s && *s; )
@@ -4047,11 +4055,12 @@ cond_expand_word (WORD_DESC *w, int special)
    FLAGS argument is 1 if this function should treat CTLESC as a quote
    character (e.g., for here-documents) or not (e.g., for shell_expand_line). */
 char *
-expand_string_dollar_quote (char *string, int flags)
+expand_string_dollar_quote (const char *string, int flags)
 {
   size_t slen, retind, retsize;
   int sindex, c, translen, peekc, news;
-  char *ret, *trans, *send, *t;
+  char *ret, *trans, *t;
+  const char *send;
   DECLARE_MBSTATE;
 
   slen = strlen (string);
@@ -4215,7 +4224,7 @@ call_expand_word_internal (WORD_DESC *w, int q, int i, int *c, int *e)
    Since this does not perform word splitting, it leaves quoted nulls
    in the result.  */
 static WORD_LIST *
-expand_string_internal (char *string, int quoted)
+expand_string_internal (const char *string, int quoted)
 {
   WORD_DESC td;
   WORD_LIST *tresult;
@@ -4238,7 +4247,7 @@ expand_string_internal (char *string, int quoted)
    remove_quoted_nulls () is in here because word splitting normally
    takes care of quote removal. */
 WORD_LIST *
-expand_string_unsplit (char *string, int quoted)
+expand_string_unsplit (const char *string, int quoted)
 {
   WORD_LIST *value;
 
@@ -4263,7 +4272,7 @@ expand_string_unsplit (char *string, int quoted)
 
 /* Expand the rhs of an assignment statement */
 WORD_LIST *
-expand_string_assignment (char *string, int quoted)
+expand_string_assignment (const char *string, int quoted)
 {
   WORD_DESC td;
   WORD_LIST *value;
@@ -4307,7 +4316,7 @@ expand_string_assignment (char *string, int quoted)
    passed string when an error occurs.  Might want to trap other calls
    to jump_to_top_level here so we don't endlessly loop. */
 WORD_LIST *
-expand_prompt_string (char *string, int quoted, int wflags)
+expand_prompt_string (const char *string, int quoted, int wflags)
 {
   WORD_LIST *value;
   WORD_DESC td;
@@ -4346,7 +4355,7 @@ expand_prompt_string (char *string, int quoted, int wflags)
    things like ${1+"$@"}.  This does parameter expansion, command
    substitution, arithmetic expansion, and word splitting. */
 static WORD_LIST *
-expand_string_leave_quoted (char *string, int quoted)
+expand_string_leave_quoted (const char *string, int quoted)
 {
   WORD_LIST *tlist;
   WORD_LIST *tresult;
@@ -4368,7 +4377,7 @@ expand_string_leave_quoted (char *string, int quoted)
 /* This does not perform word splitting or dequote the WORD_LIST
    it returns. */
 static WORD_LIST *
-expand_string_for_rhs (char *string, int quoted, int op, int pflags, int *dollar_at_p, int *expanded_p)
+expand_string_for_rhs (const char *string, int quoted, int op, int pflags, int *dollar_at_p, int *expanded_p)
 {
   WORD_DESC td;
   WORD_LIST *tresult;
@@ -4413,7 +4422,7 @@ expand_string_for_rhs (char *string, int quoted, int op, int pflags, int *dollar
 /* This does not perform word splitting or dequote the WORD_LIST
    it returns and it treats $* as if it were quoted. */
 static WORD_LIST *
-expand_string_for_pat (char *string, int quoted, int *dollar_at_p, int *expanded_p)
+expand_string_for_pat (const char *string, int quoted, int *dollar_at_p, int *expanded_p)
 {
   WORD_DESC td;
   WORD_LIST *tresult;
@@ -4439,7 +4448,7 @@ expand_string_for_pat (char *string, int quoted, int *dollar_at_p, int *expanded
    does parameter expansion, command substitution, arithmetic expansion,
    and word splitting.  Dequote the resultant WORD_LIST before returning. */
 WORD_LIST *
-expand_string (char *string, int quoted)
+expand_string (const char *string, int quoted)
 {
   WORD_LIST *result;
 
@@ -4575,7 +4584,7 @@ quote_rhs (const char *string)
 static WORD_LIST *
 list_quote_escapes (WORD_LIST *list)
 {
-  register WORD_LIST *w;
+  WORD_LIST *w;
   char *t;
 
   for (w = list; w; w = w->next)
@@ -4680,11 +4689,12 @@ make_quoted_char (int c)
    the W_HASQUOTEDNULL flag needs to be set in any resultant WORD_DESC where
    this value is the word. */
 char *
-quote_string (char *string)
+quote_string (const char *string)
 {
   register char *t;
   size_t slen;
-  char *result, *send;
+  char *result;
+  const char *send;
 
   if (*string == 0)
     {
@@ -4713,11 +4723,12 @@ quote_string (char *string)
 
 /* De-quote quoted characters in STRING. */
 char *
-dequote_string (char *string)
+dequote_string (const char *string)
 {
   register char *s, *t;
   size_t slen;
-  char *result, *send;
+  char *result;
+  const char *send;
   DECLARE_MBSTATE;
 
   if (string[0] == CTLESC && string[1] == 0)
@@ -4747,7 +4758,7 @@ dequote_string (char *string)
     return (strcpy (result, string));
 
   send = string + slen;
-  s = string;
+  s = (char *)string;
   while (*s)
     {
       if (*s == CTLESC)
@@ -4767,7 +4778,7 @@ dequote_string (char *string)
 static WORD_LIST *
 quote_list (WORD_LIST *list)
 {
-  register WORD_LIST *w;
+  WORD_LIST *w;
   char *t;
 
   for (w = list; w; w = w->next)
@@ -4785,7 +4796,7 @@ quote_list (WORD_LIST *list)
 WORD_DESC *
 dequote_word (WORD_DESC *word)
 {
-  register char *s;
+  char *s;
 
   s = dequote_string (word->word);
   if (QUOTED_NULL (word->word))
@@ -4800,8 +4811,8 @@ dequote_word (WORD_DESC *word)
 WORD_LIST *
 dequote_list (WORD_LIST *list)
 {
-  register char *s;
-  register WORD_LIST *tlist;
+  char *s;
+  WORD_LIST *tlist;
 
   for (tlist = list; tlist; tlist = tlist->next)
     {
@@ -4835,12 +4846,13 @@ remove_quoted_escapes (char *string)
    added to protect them from word splitting, but we need to remove them
    if no word splitting takes place.  This returns newly-allocated memory,
    so callers can use it to replace savestring(). */
-char *
-remove_quoted_ifs (char *string)
+static char *
+remove_quoted_ifs (const char *string)
 {
   register size_t slen;
   register int i, j;
-  char *ret, *send;
+  char *ret;
+  const char *send;
   DECLARE_MBSTATE;
 
   slen = strlen (string);
@@ -4936,7 +4948,7 @@ word_list_remove_quoted_nulls (WORD_LIST *list)
 #if defined (HANDLE_MULTIBYTE)
 # ifdef INCLUDE_UNUSED
 static unsigned char *
-mb_getcharlens (char *string, int len)
+mb_getcharlens (const char *string, int len)
 {
   int i, offset, last;
   unsigned char *ret;
@@ -4975,9 +4987,9 @@ mb_getcharlens (char *string, int len)
 static char *
 remove_upattern (char *param, char *pattern, int op)
 {
-  register size_t len;
-  register char *end;
-  register char *p, *ret, c;
+  size_t len;
+  char *end, *p;
+  char *ret, c;
 
   len = STRLEN (param);
   end = param + len;
@@ -5515,7 +5527,7 @@ match_pattern (char *string, char *pat, int mtype, char **sp, char **ep)
 }
 
 static int
-getpatspec (int c, char *value)
+getpatspec (int c, const char *value)
 {
   if (c == '#')
     return ((*value == '#') ? RP_LONG_LEFT : RP_SHORT_LEFT);
@@ -6986,7 +6998,7 @@ command_substitute (char *string, int quoted, int flags)
 #if defined (ARRAY_VARS)
 
 static arrayind_t
-array_length_reference (char *s)
+array_length_reference (const char *s)
 {
   int len;
   arrayind_t ind;
@@ -7066,7 +7078,7 @@ array_length_reference (char *s)
 #endif /* ARRAY_VARS */
 
 static int
-valid_brace_expansion_word (char *name, int var_is_special)
+valid_brace_expansion_word (const char *name, int var_is_special)
 {
   if (DIGIT (*name) && all_digits (name))
     return 1;
@@ -7083,7 +7095,7 @@ valid_brace_expansion_word (char *name, int var_is_special)
 }
 
 static int
-chk_atstar (char *name, int quoted, int pflags, int *quoted_dollar_atp, int *contains_dollar_at)
+chk_atstar (const char *name, int quoted, int pflags, int *quoted_dollar_atp, int *contains_dollar_at)
 {
   char *temp1;
 
@@ -7712,7 +7724,7 @@ parameter_brace_expand_error (char *name, char *value, int check_null)
 /* Return 1 if NAME is something for which parameter_brace_expand_length is
    OK to do. */
 static int
-valid_length_expression (char *name)
+valid_length_expression (const char *name)
 {
   return (name[1] == '\0' ||                                   /* ${#} */
          ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0') ||  /* special param */
@@ -8356,7 +8368,7 @@ array_transform (int xc, SHELL_VAR *var, int starsub, int quoted)
 #endif /* ARRAY_VARS */
 
 static inline int
-valid_parameter_transform (char *xform)
+valid_parameter_transform (const char *xform)
 {
   if (xform[1])
     return 0;
@@ -8480,7 +8492,7 @@ parameter_brace_transform (char *varname, char *value, array_eltstate_t *estatep
    multibyte character) positions that require calculation.
    Used by the ${param:offset[:length]} expansion. */
 static char *
-mb_substring (char *string, int s, int e)
+mb_substring (const char *string, int s, int e)
 {
   char *tt;
   int start, stop, i;
@@ -8610,7 +8622,7 @@ parameter_brace_substring (char *varname, char *value, array_eltstate_t *estatep
 /****************************************************************/
 
 static int
-shouldexp_replacement (char *s)
+shouldexp_replacement (const char *s)
 {
   size_t slen;
   int sindex, c;
@@ -10486,7 +10498,7 @@ static char abstab[256] = { '\1' };
 
 /* Run an array subscript through the appropriate word expansions. */
 char *
-expand_subscript_string (char *string, int quoted)
+expand_subscript_string (const char *string, int quoted)
 {
   WORD_DESC td;
   WORD_LIST *tlist;
@@ -10526,7 +10538,7 @@ expand_subscript_string (char *string, int quoted)
    only expand it once, we quote the characters that would start another
    expansion and the bracket characters that are special to array subscripts. */
 static char *
-expand_array_subscript (char *string, int *sindex, int quoted, int flags)
+expand_array_subscript (const char *string, int *sindex, int quoted, int flags)
 {
   char *ret, *exp, *t;
   size_t slen;
@@ -11575,10 +11587,11 @@ set_word_flags:
 /* Perform quote removal on STRING.  If QUOTED > 0, assume we are obeying the
    backslash quoting rules for within double quotes or a here document. */
 char *
-string_quote_removal (char *string, int quoted)
+string_quote_removal (const char *string, int quoted)
 {
   size_t slen;
-  char *r, *result_string, *temp, *send;
+  char *r, *result_string, *temp;
+  const char *send;
   int sindex, tindex, dquote;
   unsigned char c;
   DECLARE_MBSTATE;
diff --git a/subst.h b/subst.h
index 9c9194ea5dcbb3eb1be5c512e8a55b7d6ffbd947..a59d20eccc83721d1ac40c4635228422314867e5 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-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -84,22 +84,22 @@ extern void unquote_bang (char *);
    Start extracting at (SINDEX) as if we had just seen "$(".
    Make (SINDEX) get the position just after the matching ")".
    XFLAGS is additional flags to pass to other extraction functions, */
-extern char *extract_command_subst (char *, int *, int);
+extern char *extract_command_subst (const char *, int *, int);
 
 /* Extract the $[ construct in STRING, and return a new string.
    Start extracting at (SINDEX) as if we had just seen "$[".
    Make (SINDEX) get the position just after the matching "]". */
-extern char *extract_arithmetic_subst (char *, int *);
+extern char *extract_arithmetic_subst (const char *, int *);
 
 #if defined (PROCESS_SUBSTITUTION)
 /* Extract the <( or >( construct in STRING, and return a new string.
    Start extracting at (SINDEX) as if we had just seen "<(".
    Make (SINDEX) get the position just after the matching ")". */
-extern char *extract_process_subst (char *, char *, int *, int);
+extern char *extract_process_subst (const char *, char *, int *, int);
 #endif /* PROCESS_SUBSTITUTION */
 
 /* Extract the name of the variable to bind to from the assignment string. */
-extern char *assignment_name (char *);
+extern char *assignment_name (const char *);
 
 /* Return a single string of all the words present in LIST, separating
    each word with SEP. */
@@ -140,7 +140,7 @@ extern char *strip_trailing_ifs_whitespace (char *, char *, int);
    splitting on the result of expansion. */
 extern int do_assignment (char *);
 extern int do_assignment_no_expand (char *);
-extern int do_word_assignment (WORD_DESC *, int);
+extern int do_word_assignment (const WORD_DESC *, int);
 
 /* Append SOURCE to TARGET at INDEX.  SIZE is the current amount
    of space allocated to TARGET.  SOURCE can be NULL, in which
@@ -165,20 +165,20 @@ extern char *string_rest_of_args (int);
    returning it, but do not perform word splitting.  The call to
    remove_quoted_nulls () is made here because word splitting normally
    takes care of quote removal. */
-extern WORD_LIST *expand_string_unsplit (char *, int);
+extern WORD_LIST *expand_string_unsplit (const char *, int);
 
 /* Expand the rhs of an assignment statement. */
-extern WORD_LIST *expand_string_assignment (char *, int);
+extern WORD_LIST *expand_string_assignment (const char *, int);
 
 /* Expand a prompt string. */
-extern WORD_LIST *expand_prompt_string (char *, int, int);
+extern WORD_LIST *expand_prompt_string (const char *, int, int);
 
 /* Expand STRING just as if you were expanding a word.  This also returns
    a list of words.  Note that filename globbing is *NOT* done for word
    or string expansion, just when the shell is expanding a command.  This
    does parameter expansion, command substitution, arithmetic expansion,
    and word splitting.  Dequote the resultant WORD_LIST before returning. */
-extern WORD_LIST *expand_string (char *, int);
+extern WORD_LIST *expand_string (const char *, int);
 
 /* Convenience functions that expand strings to strings, taking care of
    converting the WORD_LIST * returned by the expand_string* functions
@@ -186,16 +186,16 @@ extern WORD_LIST *expand_string (char *, int);
 extern char *expand_string_to_string (char *, int);
 extern char *expand_string_unsplit_to_string (char *, int);
 extern char *expand_assignment_string_to_string (char *, int);
-extern char *expand_subscript_string (char *, int);
+extern char *expand_subscript_string (const char *, int);
 
 /* Expand an arithmetic expression string */
 extern char *expand_arith_string (char *, int);
 
 /* Expand $'...' and $"..." in a string for code paths that do not. */
-extern char *expand_string_dollar_quote (char *, int);
+extern char *expand_string_dollar_quote (const char *, int);
 
 /* De-quote quoted characters in STRING. */
-extern char *dequote_string (char *);
+extern char *dequote_string (const char *);
 
 /* De-quote CTLESC-escaped CTLESC or CTLNUL characters in STRING. */
 extern char *dequote_escapes (const char *);
@@ -220,7 +220,7 @@ extern WORD_LIST *expand_word_leave_quoted (WORD_DESC *, int);
 extern char *get_dollar_var_value (intmax_t);
 
 /* Quote a string to protect it from word splitting. */
-extern char *quote_string (char *);
+extern char *quote_string (const char *);
 
 /* Quote escape characters (characters special to internals of expansion)
    in a string. */
@@ -234,7 +234,7 @@ extern char *remove_quoted_nulls (char *);
 
 /* Perform quote removal on STRING.  If QUOTED > 0, assume we are obeying the
    backslash quoting rules for within double quotes. */
-extern char *string_quote_removal (char *, int);
+extern char *string_quote_removal (const char *, int);
 
 /* Perform quote removal on word WORD.  This allocates and returns a new
    WORD_DESC *. */
@@ -295,11 +295,11 @@ extern void reap_procsubs (void);
 extern WORD_LIST *list_string_with_quotes (char *);
 
 #if defined (ARRAY_VARS)
-extern char *extract_array_assignment_list (char *, int *);
+extern char *extract_array_assignment_list (const char *, int *);
 #endif
 
 #if defined (COND_COMMAND)
-extern char *remove_backslashes (char *);
+extern char *remove_backslashes (const char *);
 extern char *cond_expand_word (WORD_DESC *, int);
 #endif
 
@@ -317,16 +317,16 @@ extern char *cond_expand_word (WORD_DESC *, int);
 #define SD_ARITHEXP    0x400   /* skip_to_delim during arithmetic expansion */
 #define SD_NOERROR     0x800   /* don't print error messages */
 
-extern int skip_to_delim (char *, int, char *, int);
+extern int skip_to_delim (const char *, int, const char *, int);
 
 #if defined (BANG_HISTORY)
-extern int skip_to_histexp (char *, int, char *, int);
+extern int skip_to_histexp (const char *, int, const char *, int);
 #endif
 
 #if defined (READLINE)
 extern int char_is_quoted (char *, int);
 extern int unclosed_pair (char *, int, char *);
-extern WORD_LIST *split_at_delims (char *, int, const char *, int, int, int *, int *);
+extern WORD_LIST *split_at_delims (const char *, int, const char *, int, int, int *, int *);
 #endif
 
 /* Variables used to keep track of the characters in IFS. */
diff --git a/test.c b/test.c
index 5098e325c4fdd688bff7fa45e19ac4b63a82268b..26ef95f25374f53fa73f057e5aa72b796348323a 100644 (file)
--- a/test.c
+++ b/test.c
@@ -2,7 +2,7 @@
 
 /* Modified to run with the GNU shell Apr 25, 1988 by bfox. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -125,7 +125,7 @@ static int term (void);
 static int and (void);
 static int or (void);
 
-static int filecomp (char *, char *, int);
+static int filecomp (const char *, const char *, int);
 static int arithcomp (char *, char *, int, int);
 static int patcomp (char *, char *, int);
 
@@ -286,7 +286,7 @@ term (void)
 }
 
 static int
-stat_mtime (char *fn, struct stat *st, struct timespec *ts)
+stat_mtime (const char *fn, struct stat *st, struct timespec *ts)
 {
   int r;
 
@@ -298,7 +298,7 @@ stat_mtime (char *fn, struct stat *st, struct timespec *ts)
 }
 
 static int
-filecomp (char *s, char *t, int op)
+filecomp (const char *s, const char *t, int op)
 {
   struct stat st1, st2;
   struct timespec ts1, ts2;
diff --git a/trap.c b/trap.c
index 3dc4763534a1ee77c4584cd9833d3dff5ba4b8e2..637c823767c0b2887556e29fe98e05c07bc91889 100644 (file)
--- a/trap.c
+++ b/trap.c
@@ -1,7 +1,7 @@
 /* trap.c -- Not the trap command, but useful functions for manipulating
    those objects.  The trap command is in builtins/trap.def. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -85,7 +85,7 @@ static void restore_signal (int);
 static void reset_or_restore_signal_handlers (sh_resetsig_func_t *);
 static void reinit_trap (int);
 
-static void trap_if_untrapped (int, char *);
+static void trap_if_untrapped (int, const char *);
 
 /* Variables used here but defined in other files. */
 
@@ -232,7 +232,7 @@ signal_name (int sig)
    then (int)2 is returned.  Return NO_SIG if STRING doesn't
    contain a valid signal descriptor. */
 int
-decode_signal (char *string, int flags)
+decode_signal (const char *string, int flags)
 {
   intmax_t sig;
   char *name;
@@ -639,7 +639,7 @@ check_signals_and_traps (void)
 #ifdef INCLUDE_UNUSED
 /* Make COMMAND_STRING be executed when SIGCHLD is caught. */
 void
-set_sigchld_trap (char *command_string)
+set_sigchld_trap (const char *command_string)
 {
   set_signal (SIGCHLD, command_string);
 }
@@ -651,7 +651,7 @@ set_sigchld_trap (char *command_string)
    reset the disposition to the default and not have the original signal
    accidentally restored, undoing the user's command. */
 void
-maybe_set_sigchld_trap (char *command_string)
+maybe_set_sigchld_trap (const char *command_string)
 {
   if ((sigmodes[SIGCHLD] & SIG_TRAPPED) == 0 && trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER)
     set_signal (SIGCHLD, command_string);
@@ -685,14 +685,14 @@ queue_sigchld_trap (int nchild)
 
 /* Set a trap for SIG only if SIG is not already trapped. */
 static inline void
-trap_if_untrapped (int sig, char *command)
+trap_if_untrapped (int sig, const char *command)
 {
   if ((sigmodes[sig] & SIG_TRAPPED) == 0)
     set_signal (sig, command);
 }
 
 void
-set_debug_trap (char *command)
+set_debug_trap (const char *command)
 {
   set_signal (DEBUG_TRAP, command);
 }
@@ -704,38 +704,38 @@ set_debug_trap (char *command)
    SIG_TRAPPED will be set and we don't bother restoring the original trap string.
    This is used by both functions and the source builtin. */
 void
-maybe_set_debug_trap (char *command)
+maybe_set_debug_trap (const char *command)
 {
   trap_if_untrapped (DEBUG_TRAP, command);
 }
 
 void
-set_error_trap (char *command)
+set_error_trap (const char *command)
 {
   set_signal (ERROR_TRAP, command);
 }
 
 void
-maybe_set_error_trap (char *command)
+maybe_set_error_trap (const char *command)
 {
   trap_if_untrapped (ERROR_TRAP, command);
 }
 
 void
-set_return_trap (char *command)
+set_return_trap (const char *command)
 {
   set_signal (RETURN_TRAP, command);
 }
 
 void
-maybe_set_return_trap (char *command)
+maybe_set_return_trap (const char *command)
 {
   trap_if_untrapped (RETURN_TRAP, command);
 }
 
 #ifdef INCLUDE_UNUSED
 void
-set_sigint_trap (char *command)
+set_sigint_trap (const char *command)
 {
   set_signal (SIGINT, command);
 }
@@ -780,7 +780,7 @@ trap_to_sighandler (int sig)
 
 /* Set SIG to call STRING as a command. */
 void
-set_signal (int sig, char *string)
+set_signal (int sig, const char *string)
 {
   sigset_t set, oset;
 
diff --git a/trap.h b/trap.h
index 3a0035f2c22e63f93f09cfa0951b42d4092a1979..8ecf5dc171020658049415f5f360740b7673fdfb 100644 (file)
--- a/trap.h
+++ b/trap.h
@@ -1,6 +1,6 @@
 /* trap.h -- data structures used in the trap mechanism. */
 
-/* Copyright (C) 1993-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -73,20 +73,20 @@ extern void initialize_traps (void);
 extern void run_pending_traps (void);
 
 extern void queue_sigchld_trap (int);
-extern void maybe_set_sigchld_trap (char *);
+extern void maybe_set_sigchld_trap (const char *);
 extern void set_impossible_sigchld_trap (void);
-extern void set_sigchld_trap (char *);
+extern void set_sigchld_trap (const char *);
 
-extern void set_debug_trap (char *);
-extern void set_error_trap (char *);
-extern void set_return_trap (char *);
+extern void set_debug_trap (const char *);
+extern void set_error_trap (const char *);
+extern void set_return_trap (const char *);
 
-extern void maybe_set_debug_trap (char *);
-extern void maybe_set_error_trap (char *);
-extern void maybe_set_return_trap (char *);
+extern void maybe_set_debug_trap (const char *);
+extern void maybe_set_error_trap (const char *);
+extern void maybe_set_return_trap (const char *);
 
-extern void set_sigint_trap (char *);
-extern void set_signal (int, char *);
+extern void set_sigint_trap (const char *);
+extern void set_signal (int, const char *);
 
 extern void restore_default_signal (int);
 extern void ignore_signal (int);
@@ -106,7 +106,7 @@ extern void get_all_original_signals (void);
 
 extern char *signal_name (int);
 
-extern int decode_signal (char *, int);
+extern int decode_signal (const char *, int);
 extern void run_interrupt_trap (int);
 extern int maybe_call_trap_handler (int);
 extern int signal_is_special (int);
index 04dbaedb164cad76c7e5e15b9ae1dfde91e48b3f..24f3ef8c8d1fd4083d01310d2156f103366f47df 100644 (file)
@@ -1,6 +1,6 @@
 /* variables.c -- Functions for hacking shell variables. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -259,11 +259,11 @@ static SHELL_VAR *get_bashargcv (SHELL_VAR *);
 #  endif
 static SHELL_VAR *build_hashcmd (SHELL_VAR *);
 static SHELL_VAR *get_hashcmd (SHELL_VAR *);
-static SHELL_VAR *assign_hashcmd (SHELL_VAR *,  char *, arrayind_t, char *);
+static SHELL_VAR *assign_hashcmd (SHELL_VAR *, char *, arrayind_t, char *);
 #  if defined (ALIAS)
 static SHELL_VAR *build_aliasvar (SHELL_VAR *);
 static SHELL_VAR *get_aliasvar (SHELL_VAR *);
-static SHELL_VAR *assign_aliasvar (SHELL_VAR *,  char *, arrayind_t, char *);
+static SHELL_VAR *assign_aliasvar (SHELL_VAR *, char *, arrayind_t, char *);
 #  endif
 #endif
 
@@ -272,14 +272,14 @@ static SHELL_VAR *init_funcname_var (void);
 
 static void initialize_dynamic_variables (void);
 
-static SHELL_VAR *bind_invalid_envvar (const char *, char *, int);
+static SHELL_VAR *bind_invalid_envvar (const char *, const char *, int);
 
 static int var_sametype (SHELL_VAR *, SHELL_VAR *);
 
 static SHELL_VAR *hash_lookup (const char *, HASH_TABLE *);
 static SHELL_VAR *new_shell_variable (const char *);
 static SHELL_VAR *make_new_variable (const char *, HASH_TABLE *);
-static SHELL_VAR *bind_variable_internal (const char *, char *, HASH_TABLE *, int, int);
+static SHELL_VAR *bind_variable_internal (const char *, const char *, HASH_TABLE *, int, int);
 
 static void dispose_variable_value (SHELL_VAR *);
 static void free_variable_hash_data (PTR_T);
@@ -311,7 +311,7 @@ static SHELL_VAR *find_nameref_at_context (SHELL_VAR *, VAR_CONTEXT *);
 static SHELL_VAR *find_variable_nameref_context (SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **);
 static SHELL_VAR *find_variable_last_nameref_context (SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **);
 
-static SHELL_VAR *bind_tempenv_variable (const char *, char *);
+static SHELL_VAR *bind_tempenv_variable (const char *, const char *);
 static void push_posix_temp_var (PTR_T);
 static void push_temp_var (PTR_T);
 static void propagate_temp_var (PTR_T);
@@ -2215,7 +2215,7 @@ find_variable_nameref_for_assignment (const char *name, int flags)
    function, but dealing strictly with names. This takes assignment flags
    so it can deal with the various assignment modes used by `declare'. */
 char *
-nameref_transform_name (char *name, int flags)
+nameref_transform_name (const char *name, int flags)
 {
   SHELL_VAR *v;
   char *newname;
@@ -2234,7 +2234,7 @@ nameref_transform_name (char *name, int flags)
                               : find_global_variable_last_nameref (name, 1);
   if (v && nameref_p (v) && valid_nameref_value (nameref_cell (v), 1))
     return nameref_cell (v);
-  return name;
+  return (char *)name;
 }
 
 /* Find a variable, forcing a search of the temporary environment first */
@@ -2522,7 +2522,7 @@ validate_inherited_value (SHELL_VAR *var, int type)
 
 /* Set NAME to VALUE if NAME has no value. */
 SHELL_VAR *
-set_if_not (char *name, char *value)
+set_if_not (const char *name, const char *value)
 {
   SHELL_VAR *v;
 
@@ -2736,7 +2736,7 @@ make_new_variable (const char *name, HASH_TABLE *table)
 
 #if defined (ARRAY_VARS)
 SHELL_VAR *
-make_new_array_variable (char *name)
+make_new_array_variable (const char *name)
 {
   SHELL_VAR *entry;
   ARRAY *array;
@@ -2750,7 +2750,7 @@ make_new_array_variable (char *name)
 }
 
 SHELL_VAR *
-make_local_array_variable (char *name, int flags)
+make_local_array_variable (const char *name, int flags)
 {
   SHELL_VAR *var;
   ARRAY *array;
@@ -2789,7 +2789,7 @@ make_local_array_variable (char *name, int flags)
 }
 
 SHELL_VAR *
-make_new_assoc_variable (char *name)
+make_new_assoc_variable (const char *name)
 {
   SHELL_VAR *entry;
   HASH_TABLE *hash;
@@ -2803,7 +2803,7 @@ make_new_assoc_variable (char *name)
 }
 
 SHELL_VAR *
-make_local_assoc_variable (char *name, int flags)
+make_local_assoc_variable (const char *name, int flags)
 {
   SHELL_VAR *var;
   HASH_TABLE *hash;
@@ -2843,7 +2843,7 @@ make_local_assoc_variable (char *name, int flags)
 #endif
 
 char *
-make_variable_value (SHELL_VAR *var, char *value, int flags)
+make_variable_value (SHELL_VAR *var, const char *value, int flags)
 {
   char *retval, *oval;
   intmax_t lval, rval;
@@ -2949,7 +2949,7 @@ make_value:
 
 /* If we can optimize appending to string variables, say so */
 static int
-can_optimize_assignment (SHELL_VAR *entry, char *value, int aflags)
+can_optimize_assignment (SHELL_VAR *entry, const char *value, int aflags)
 {
   if ((aflags & ASS_APPEND) == 0)
     return 0;
@@ -2966,7 +2966,7 @@ can_optimize_assignment (SHELL_VAR *entry, char *value, int aflags)
 
 /* right now we optimize appends to string variables */
 static SHELL_VAR *
-optimized_assignment (SHELL_VAR *entry, char *value, int aflags)
+optimized_assignment (SHELL_VAR *entry, const char *value, int aflags)
 {
   size_t len, vlen;
   char *v, *new;
@@ -2991,7 +2991,7 @@ optimized_assignment (SHELL_VAR *entry, char *value, int aflags)
    temporary environment (but usually is not).  HFLAGS controls how NAME
    is looked up in TABLE; AFLAGS controls how VALUE is assigned */
 static SHELL_VAR *
-bind_variable_internal (const char *name, char *value, HASH_TABLE *table, int hflags, int aflags)
+bind_variable_internal (const char *name, const char *value, HASH_TABLE *table, int hflags, int aflags)
 {
   char *newval, *tname;
   SHELL_VAR *entry, *tentry;
@@ -3075,7 +3075,7 @@ bind_variable_internal (const char *name, char *value, HASH_TABLE *table, int hf
        }
 
       INVALIDATE_EXPORTSTR (entry);
-      newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value;
+      newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : (char *)value;
       if (assoc_p (entry))
        entry = (*(entry->assign_func)) (entry, newval, -1, savestring ("0"));
       else if (array_p (entry))
@@ -3162,7 +3162,7 @@ assign_value:
    first, then we bind into shell_variables. */
 
 SHELL_VAR *
-bind_variable (const char *name, char *value, int flags)
+bind_variable (const char *name, const char *value, int flags)
 {
   SHELL_VAR *v, *nv;
   VAR_CONTEXT *vc, *nvc;
@@ -3233,7 +3233,7 @@ bind_variable (const char *name, char *value, int flags)
 }
 
 SHELL_VAR *
-bind_global_variable (const char *name, char *value, int flags)
+bind_global_variable (const char *name, const char *value, int flags)
 {
   if (shell_variables == 0)
     create_variable_tables ();
@@ -3243,7 +3243,7 @@ bind_global_variable (const char *name, char *value, int flags)
 }
 
 static SHELL_VAR *
-bind_invalid_envvar (const char *name, char *value, int aflags)
+bind_invalid_envvar (const char *name, const char *value, int aflags)
 {
   if (invalid_env == 0)
     invalid_env = hash_create (64);    /* XXX */
@@ -3322,7 +3322,7 @@ bind_variable_value (SHELL_VAR *var, char *value, int aflags)
    variable we set here, then turn it back on after binding as necessary. */
 
 SHELL_VAR *
-bind_int_variable (char *lhs, char *rhs, int flags)
+bind_int_variable (const char *lhs, const char *rhs, int flags)
 {
   register SHELL_VAR *v;
   int isint, isarr, implicitarray, vflags, avflags;
@@ -3386,7 +3386,7 @@ bind_int_variable (char *lhs, char *rhs, int flags)
 }
 
 SHELL_VAR *
-bind_var_to_int (char *var, intmax_t val, int flags)
+bind_var_to_int (const char *var, intmax_t val, int flags)
 {
   char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p;
 
@@ -3476,7 +3476,7 @@ bind_function_def (const char *name, FUNCTION_DEF *value, int flags)
    responsible for moving the main temporary env to one of the other
    temporary environments.  The expansion code in subst.c calls this. */
 int
-assign_in_env (WORD_DESC *word, int flags)
+assign_in_env (const WORD_DESC *word, int flags)
 {
   int offset, aflags;
   char *name, *temp, *value, *newname;
@@ -4362,7 +4362,7 @@ all_variables_matching_prefix (const char *prefix)
 
 /* Make variable NAME have VALUE in the temporary environment. */
 static SHELL_VAR *
-bind_tempenv_variable (const char *name, char *value)
+bind_tempenv_variable (const char *name, const char *value)
 {
   SHELL_VAR *var;
 
@@ -5728,7 +5728,7 @@ find_special_var (const char *name)
 /* The variable in NAME has just had its state changed.  Check to see if it
    is one of the special ones where something special happens. */
 void
-stupidly_hack_special_variables (char *name)
+stupidly_hack_special_variables (const char *name)
 {
   static int sv_sorted = 0;
   int i;
@@ -5742,7 +5742,7 @@ stupidly_hack_special_variables (char *name)
 
   i = find_special_var (name);
   if (i != -1)
-    (*(special_vars[i].function)) (name);
+    (*(special_vars[i].function)) ((char *)name);
 }
 
 /* Special variables that need hooks to be run when they are unset as part
@@ -5758,7 +5758,7 @@ reinit_special_variables (void)
 }
 
 void
-sv_ifs (char *name)
+sv_ifs (const char *name)
 {
   SHELL_VAR *v;
 
@@ -5768,7 +5768,7 @@ sv_ifs (char *name)
 
 /* What to do just after the PATH variable has changed. */
 void
-sv_path (char *name)
+sv_path (const char *name)
 {
   /* hash -r */
   phash_flush ();
@@ -5778,7 +5778,7 @@ sv_path (char *name)
    is the name of the variable.  This is called with NAME set to one of
    MAIL, MAILCHECK, or MAILPATH.  */
 void
-sv_mail (char *name)
+sv_mail (const char *name)
 {
   /* If the time interval for checking the files has changed, then
      reset the mail timer.  Otherwise, one of the pathname vars
@@ -5794,7 +5794,7 @@ sv_mail (char *name)
 }
 
 void
-sv_funcnest (char *name)
+sv_funcnest (const char *name)
 {
   SHELL_VAR *v;
   intmax_t num;
@@ -5810,14 +5810,14 @@ sv_funcnest (char *name)
 
 /* What to do when EXECIGNORE changes. */
 void
-sv_execignore (char *name)
+sv_execignore (const char *name)
 {
   setup_exec_ignore (name);
 }
 
 /* What to do when GLOBIGNORE changes. */
 void
-sv_globignore (char *name)
+sv_globignore (const char *name)
 {
   if (privileged_mode == 0)
     setup_glob_ignore (name);
@@ -5825,7 +5825,7 @@ sv_globignore (char *name)
 
 #if defined (READLINE)
 void
-sv_comp_wordbreaks (char *name)
+sv_comp_wordbreaks (const char *name)
 {
   SHELL_VAR *sv;
 
@@ -5838,14 +5838,14 @@ sv_comp_wordbreaks (char *name)
    If we are an interactive shell, then try to reset the terminal
    information in readline. */
 void
-sv_terminal (char *name)
+sv_terminal (const char *name)
 {
   if (interactive_shell && no_line_editing == 0)
     rl_reset_terminal (get_string_value ("TERM"));
 }
 
 void
-sv_hostfile (char *name)
+sv_hostfile (const char *name)
 {
   SHELL_VAR *v;
 
@@ -5861,7 +5861,7 @@ sv_hostfile (char *name)
    found in the initial environment) to override the terminal size reported by
    the kernel. */
 void
-sv_winsize (char *name)
+sv_winsize (const char *name)
 {
   SHELL_VAR *v;
   intmax_t xd;
@@ -5892,7 +5892,7 @@ sv_winsize (char *name)
 /* Update the value of HOME in the export environment so tilde expansion will
    work on cygwin. */
 #if defined (__CYGWIN__)
-sv_home (char *name)
+sv_home (const char *name)
 {
   array_needs_making = 1;
   maybe_make_export_env ();
@@ -5907,7 +5907,7 @@ sv_home (char *name)
    numeric, truncate the history file to hold no more than that many
    lines. */
 void
-sv_histsize (char *name)
+sv_histsize (const char *name)
 {
   char *temp;
   intmax_t num;
@@ -5946,14 +5946,14 @@ sv_histsize (char *name)
 
 /* What to do after the HISTIGNORE variable changes. */
 void
-sv_histignore (char *name)
+sv_histignore (const char *name)
 {
   setup_history_ignore (name);
 }
 
 /* What to do after the HISTCONTROL variable changes. */
 void
-sv_history_control (char *name)
+sv_history_control (const char *name)
 {
   char *temp;
   char *val;
@@ -5984,7 +5984,7 @@ sv_history_control (char *name)
 #if defined (BANG_HISTORY)
 /* Setting/unsetting of the history expansion character. */
 void
-sv_histchars (char *name)
+sv_histchars (const char *name)
 {
   char *temp;
 
@@ -6009,7 +6009,7 @@ sv_histchars (char *name)
 #endif /* BANG_HISTORY */
 
 void
-sv_histtimefmt (char *name)
+sv_histtimefmt (const char *name)
 {
   SHELL_VAR *v;
 
@@ -6024,7 +6024,7 @@ sv_histtimefmt (char *name)
 
 #if defined (HAVE_TZSET)
 void
-sv_tz (char *name)
+sv_tz (const char *name)
 {
   SHELL_VAR *v;
 
@@ -6046,7 +6046,7 @@ sv_tz (char *name)
    of times we actually ignore the EOF.  The default is small,
    (smaller than csh, anyway). */
 void
-sv_ignoreeof (char *name)
+sv_ignoreeof (const char *name)
 {
   SHELL_VAR *tmp_var;
   char *temp;
@@ -6062,7 +6062,7 @@ sv_ignoreeof (char *name)
 }
 
 void
-sv_optind (char *name)
+sv_optind (const char *name)
 {
   SHELL_VAR *var;
   char *tt;
@@ -6089,7 +6089,7 @@ sv_optind (char *name)
 }
 
 void
-sv_opterr (char *name)
+sv_opterr (const char *name)
 {
   char *tt;
 
@@ -6098,7 +6098,7 @@ sv_opterr (char *name)
 }
 
 void
-sv_strict_posix (char *name)
+sv_strict_posix (const char *name)
 {
   SHELL_VAR *var;
 
@@ -6113,7 +6113,7 @@ sv_strict_posix (char *name)
 }
 
 void
-sv_locale (char *name)
+sv_locale (const char *name)
 {
   char *v;
   int r;
@@ -6265,7 +6265,7 @@ set_pipestatus_from_exit (int s)
 }
 
 void
-sv_xtracefd (char *name)
+sv_xtracefd (const char *name)
 {
   SHELL_VAR *v;
   char *t, *e;
@@ -6301,7 +6301,7 @@ sv_xtracefd (char *name)
 #define MIN_COMPAT_LEVEL 31
 
 void
-sv_shcompat (char *name)
+sv_shcompat (const char *name)
 {
   SHELL_VAR *v;
   char *val;
@@ -6353,7 +6353,7 @@ compat_error:
 
 #if defined (JOB_CONTROL)
 void
-sv_childmax (char *name)
+sv_childmax (const char *name)
 {
   char *tt;
   int s;
index 38c8720f5b240aca0f0629328671d6a91a2e58c3..63779fd756906d48960b58210b37d7126a2b5f6e 100644 (file)
@@ -1,6 +1,6 @@
 /* variables.h -- data structures for shell variables. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -259,7 +259,7 @@ extern void initialize_shell_variables (char **, int);
 
 extern int validate_inherited_value (SHELL_VAR *, int);
 
-extern SHELL_VAR *set_if_not (char *, char *);
+extern SHELL_VAR *set_if_not (const char *, const char *);
 
 extern void sh_set_lines_and_columns (int, int);
 extern void set_pwd (void);
@@ -286,11 +286,11 @@ extern SHELL_VAR *find_shell_variable (const char *);
 extern SHELL_VAR *find_tempenv_variable (const char *);
 extern SHELL_VAR *find_variable_no_invisible (const char *);
 extern SHELL_VAR *find_variable_for_assignment (const char *);
-extern char *nameref_transform_name (char *, int);
+extern char *nameref_transform_name (const char *, int);
 extern SHELL_VAR *copy_variable (SHELL_VAR *);
 extern SHELL_VAR *make_local_variable (const char *, int);
-extern SHELL_VAR *bind_variable (const char *, char *, int);
-extern SHELL_VAR *bind_global_variable (const char *, char *, int);
+extern SHELL_VAR *bind_variable (const char *, const char *, int);
+extern SHELL_VAR *bind_global_variable (const char *, const char *, int);
 extern SHELL_VAR *bind_function (const char *, COMMAND *);
 
 extern void bind_function_def (const char *, FUNCTION_DEF *, int);
@@ -316,13 +316,13 @@ extern char **add_or_supercede_exported_var (char *, int);
 extern char *get_variable_value (SHELL_VAR *);
 extern char *get_string_value (const char *);
 extern char *sh_get_env_value (const char *);
-extern char *make_variable_value (SHELL_VAR *, char *, int);
+extern char *make_variable_value (SHELL_VAR *, const char *, int);
 
 extern SHELL_VAR *bind_variable_value (SHELL_VAR *, char *, int);
-extern SHELL_VAR *bind_int_variable (char *, char *, int);
-extern SHELL_VAR *bind_var_to_int (char *, intmax_t, int);
+extern SHELL_VAR *bind_int_variable (const char *, const char *, int);
+extern SHELL_VAR *bind_var_to_int (const char *, intmax_t, int);
 
-extern int assign_in_env (WORD_DESC *, int);
+extern int assign_in_env (const WORD_DESC *, int);
 
 extern int unbind_variable (const char *);
 extern int check_unbind_variable (const char *);
@@ -391,11 +391,11 @@ extern void print_var_value (SHELL_VAR *, int);
 extern void print_var_function (SHELL_VAR *);
 
 #if defined (ARRAY_VARS)
-extern SHELL_VAR *make_new_array_variable (char *);
-extern SHELL_VAR *make_local_array_variable (char *, int);
+extern SHELL_VAR *make_new_array_variable (const char *);
+extern SHELL_VAR *make_local_array_variable (const char *, int);
 
-extern SHELL_VAR *make_new_assoc_variable (char *);
-extern SHELL_VAR *make_local_assoc_variable (char *, int);
+extern SHELL_VAR *make_new_assoc_variable (const char *);
+extern SHELL_VAR *make_local_assoc_variable (const char *, int);
 
 extern void set_pipestatus_array (int *, int);
 extern ARRAY *save_pipestatus_array (void);
@@ -406,7 +406,7 @@ extern void set_pipestatus_from_exit (int);
 
 /* The variable in NAME has just had its state changed.  Check to see if it
    is one of the special ones where something special happens. */
-extern void stupidly_hack_special_variables (char *);
+extern void stupidly_hack_special_variables (const char *);
 
 /* Reinitialize some special variables that have external effects upon unset
    when the shell reinitializes itself. */
@@ -416,47 +416,47 @@ extern int get_random_number (void);
 
 /* The `special variable' functions that get called when a particular
    variable is set. */
-extern void sv_ifs (char *);
-extern void sv_path (char *);
-extern void sv_mail (char *);
-extern void sv_funcnest (char *);
-extern void sv_execignore (char *);
-extern void sv_globignore (char *);
-extern void sv_ignoreeof (char *);
-extern void sv_strict_posix (char *);
-extern void sv_optind (char *);
-extern void sv_opterr (char *);
-extern void sv_locale (char *);
-extern void sv_xtracefd (char *);
-extern void sv_shcompat (char *);
+extern void sv_ifs (const char *);
+extern void sv_path (const char *);
+extern void sv_mail (const char *);
+extern void sv_funcnest (const char *);
+extern void sv_execignore (const char *);
+extern void sv_globignore (const char *);
+extern void sv_ignoreeof (const char *);
+extern void sv_strict_posix (const char *);
+extern void sv_optind (const char *);
+extern void sv_opterr (const char *);
+extern void sv_locale (const char *);
+extern void sv_xtracefd (const char *);
+extern void sv_shcompat (const char *);
 
 #if defined (READLINE)
-extern void sv_comp_wordbreaks (char *);
-extern void sv_terminal (char *);
-extern void sv_hostfile (char *);
-extern void sv_winsize (char *);
+extern void sv_comp_wordbreaks (const char *);
+extern void sv_terminal (const char *);
+extern void sv_hostfile (const char *);
+extern void sv_winsize (const char *);
 #endif
 
 #if defined (__CYGWIN__)
-extern void sv_home (char *);
+extern void sv_home (const char *);
 #endif
 
 #if defined (HISTORY)
-extern void sv_histsize (char *);
-extern void sv_histignore (char *);
-extern void sv_history_control (char *);
+extern void sv_histsize (const char *);
+extern void sv_histignore (const char *);
+extern void sv_history_control (const char *);
 #  if defined (BANG_HISTORY)
-extern void sv_histchars (char *);
+extern void sv_histchars (const char *);
 #  endif
-extern void sv_histtimefmt (char *);
+extern void sv_histtimefmt (const char *);
 #endif /* HISTORY */
 
 #if defined (HAVE_TZSET)
-extern void sv_tz (char *);
+extern void sv_tz (const char *);
 #endif
 
 #if defined (JOB_CONTROL)
-extern void sv_childmax (char *);
+extern void sv_childmax (const char *);
 #endif
 
 #endif /* !_VARIABLES_H_ */