]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
additional error checking for declare; changes for MSYS32; add support for unlocked...
authorChet Ramey <chet.ramey@case.edu>
Fri, 16 Feb 2024 15:55:13 +0000 (10:55 -0500)
committerChet Ramey <chet.ramey@case.edu>
Fri, 16 Feb 2024 15:55:13 +0000 (10:55 -0500)
28 files changed:
CWRU/CWRU.chlog
MANIFEST
bashline.c
builtins/declare.def
builtins/fc.def
builtins/read.def
config.h.in
configure
configure.ac
cross-build/msys32.cache [new file with mode: 0644]
general.c
general.h
include/unlocked-io.h [new file with mode: 0644]
lib/malloc/malloc.c
lib/malloc/table.h
lib/sh/pathphys.c
lib/sh/strlcpy.c
m4/unlocked-io.m4 [new file with mode: 0644]
mksyntax.c
parse.y
po/tr.gmo
po/tr.po
stringlib.c
subst.c
support/bashversion.c
support/config.rpath
support/shobj-conf
variables.c

index 77b8ad5aaa0fe327e41e8bfb4aaa3717821af703..117fbd200c7c21ab25208a87bb25845c0a43dc37 100644 (file)
@@ -8607,3 +8607,36 @@ execute_cmd.c
        - execute_function: if we didn't compile with debugger support, restore
          currently_executing_command after run_debug_trap, like in other
          cases
+
+                                  2/13
+                                  ----
+builtins/declare.def
+       - declare_invalid_opts: move the code that checks for invalid option
+         combinations to its own function; it returns 0 for no errors and
+         a return code for declare_internal to return otherwise
+         Inspired by report from Grisha Levit <grishalevit@gmail.com>
+       - declare_invalid_opts: make -A -a and -A +A/-a +a option combinations
+         invalid
+         Report from Grisha Levit <grishalevit@gmail.com>
+
+                                  2/14
+                                  ----
+bashline.c,general.c,subst.c,lib/sh/pathphys.c,builtins/read.def,
+support/bashversion.c
+       - changes for cygwin and msys (no new features)
+
+bashline.c,builtins/fc.def,general.c,parse.y,stringlib.c,subst.c,variables.c
+       - MSYS-specific changes to support \r\n line endings and DOS-style
+         paths
+
+configure.ac,cross-build/msys32.cache,support/config.rpath,support/shobj-conf
+       - MSYS-specific build options
+
+configure.ac,config.h.in,m4/unlocked-io.m4,general.h,include/unlocked-io.h
+MANIFEST
+       - adapt Gnulib's unlocked-io module for faster stdio functions.
+         From Grisha Levit <grishalevit@gmail.com>
+
+lib/malloc/malloc.c,lib/malloc/table.h,lib/sh/strlcpy.c
+       - fixes for ISO C 23
+         Patch from Collin Funk <collin.funk1@gmail.com>
index 164b1b75e62a0d0d247d15effc14041a1b9747c5..9f74b765e43f74518cd41a0d9bf14384bc500a14 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -211,6 +211,7 @@ builtins/bashgetopt.c       f
 builtins/common.h      f
 builtins/bashgetopt.h  f
 #cross-build/cygwin32.cache    f
+cross-build/msys32.cache       f
 cross-build/x86-beos.cache     f
 cross-build/opennt.cache       f
 cross-build/qnx.cache  f
@@ -236,6 +237,7 @@ include/systimes.h  f
 include/timer.h                f
 include/typemax.h      f
 include/unionwait.h    f
+include/unlocked-io.h  f
 lib/glob/Makefile.in   f
 lib/glob/sm_loop.c     f
 lib/glob/smatch.c      f
@@ -521,6 +523,7 @@ lib/tilde/Makefile.in       f
 lib/tilde/tilde.c      f
 lib/tilde/tilde.h      f
 lib/tilde/shell.c      f
+m4/unlocked-io.m4      f
 m4/strtoimax.m4                f
 m4/stat-time.m4                f
 m4/timespec.m4         f
index d51693b2ee3db7134bfa403aefad42c1ca3e1704..353e8b1e68aab2578cbcb2db8e003e14a8aa6dd3 100644 (file)
@@ -798,7 +798,11 @@ snarf_hosts_from_file (const char *filename)
   char *temp, buffer[256], name[256];
   register int i, start;
 
+#ifdef __MSYS__
+  file = fopen (filename, "rt");
+#else
   file = fopen (filename, "r");
+#endif
   if (file == 0)
     return;
 
@@ -3129,6 +3133,19 @@ test_for_directory (const char *name)
   int r;
 
   fn = bash_tilde_expand (name, 0);
+
+#if __CYGWIN
+  /* stat("//server") can only be successful as a directory, but can take
+     seconds to time out on failure.  It is much faster to assume that
+     "//server" is a valid name than it is to wait for a stat, even if it
+     gives false positives on bad names.  */
+  if (fn[0] == '/' && fn[1] == '/' && ! strchr (&fn[2], '/'))
+    {
+      free (fn);
+      return 1;
+    }
+#endif
+
   r = file_isdir (fn);
   free (fn);
 
index eaa5ce2546e6c9427d736a12b851cee218632d6b..ed910d577d6d1531359bbebba55a2a741696eee5 100644 (file)
@@ -218,6 +218,45 @@ declare_transform_name (char *name, int flags_on, int flags_off)
   return (newname);
 }
 
+/* Some option combinations that don't make any sense */
+static int
+declare_invalid_opts (int flags_on, int flags_off)
+{
+  if ((flags_on & att_function) && (flags_on & (att_array|att_assoc|att_integer|att_nameref)))
+    {
+      char *optchar;
+
+      if (flags_on & att_nameref)
+       optchar = "-n";
+      else if (flags_on & att_integer)
+       optchar = "-i";
+      else if (flags_on & att_assoc)
+       optchar = "-A";
+      else if (flags_on & att_array)
+       optchar = "-a";
+
+      sh_invalidopt (optchar); 
+      return (EXECUTION_FAILURE);
+    }
+  else if ((flags_on & att_assoc) && (flags_off & att_assoc))
+    {
+      sh_invalidopt ("-A");
+      return (EX_BADUSAGE);
+    }
+  else if ((flags_on & att_array) && (flags_off & att_array))
+    {
+      sh_invalidopt ("-a");
+      return (EX_BADUSAGE);
+    }
+  else if ((flags_on & att_assoc) && (flags_on & att_array))
+    {
+      sh_invalidopt ("-a");
+      return (EX_BADUSAGE);
+    }
+
+  return 0;
+}
+
 /* The workhorse function. */
 static int
 declare_internal (WORD_LIST *list, int local_var)
@@ -244,6 +283,10 @@ declare_internal (WORD_LIST *list, int local_var)
        case 'a':
 #if defined (ARRAY_VARS)
          *flags |= att_array;
+#if 0
+         if (flags == &flags_on)
+           *flags &= ~att_assoc;       /* last one wins */
+#endif
          break;
 #else
          builtin_usage ();
@@ -252,6 +295,10 @@ declare_internal (WORD_LIST *list, int local_var)
        case 'A':
 #if defined (ARRAY_VARS)
          *flags |= att_assoc;
+#if 0
+         if (flags == &flags_on)
+           *flags &= ~att_array;       /* last one wins */
+#endif
          break;
 #else
          builtin_usage ();
@@ -359,24 +406,11 @@ declare_internal (WORD_LIST *list, int local_var)
       return (sh_chkwrite (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS));
     }
 
-  /* Some option combinations that don't make any sense */
-  if ((flags_on & att_function) && (flags_on & (att_array|att_assoc|att_integer|att_nameref)))
-    {
-      char *optchar;
-
-      if (flags_on & att_nameref)
-       optchar = "-n";
-      else if (flags_on & att_integer)
-       optchar = "-i";
-      else if (flags_on & att_assoc)
-       optchar = "-A";
-      else if (flags_on & att_array)
-       optchar = "-a";
-
-      sh_invalidopt (optchar); 
-      return (EXECUTION_FAILURE);
-    }
-
+  /* check for some invalid option combinations that are usage errors */
+  opt = declare_invalid_opts (flags_on, flags_off);
+  if (opt != 0)
+    return (opt);
+  
 #define NEXT_VARIABLE() free (name); list = list->next; continue
 
   /* There are arguments left, so we are making variables. */
index 91c4d21a73e7ccaad592e8594ebe6f4725c7495c..d5f7beaa459db8124e6ab7e3119f388916d86496 100644 (file)
@@ -690,6 +690,9 @@ static char *
 fc_readline (FILE *stream)
 {
   register int c;
+#ifdef __MSYS__
+  register int d;
+#endif
   int line_len = 0, lindex = 0;
   char *line = (char *)NULL;
 
@@ -698,6 +701,11 @@ fc_readline (FILE *stream)
       if ((lindex + 2) >= line_len)
        line = (char *)xrealloc (line, (line_len += 128));
 
+#ifdef __MSYS__
+      if (d == '\r')
+       lindex--;
+#endif
+
       if (c == '\n')
        {
          line[lindex++] = '\n';
@@ -706,6 +714,10 @@ fc_readline (FILE *stream)
        }
       else
        line[lindex++] = c;
+
+#ifdef __MSYS__
+      d = c;
+#endif
     }
 
   if (!lindex)
index fa9730ffda33547204741c40dbebe6ef753d848a..28491d300e779471b7df65677e57ae1452cd9ae7 100644 (file)
@@ -88,7 +88,6 @@ $END
 
 #ifdef __CYGWIN__
 #  include <fcntl.h>
-#  include <io.h>
 #endif
 
 #include "../bashintl.h"
@@ -643,10 +642,6 @@ read_builtin (WORD_LIST *list)
       fflush (stderr);
     }
 
-#if defined (__CYGWIN__) && defined (O_TEXT)
-  setmode (0, O_TEXT);
-#endif
-
   ps2 = 0;
   for (print_ps2 = eof = retval = 0;;)
     {
index f0c8be79dc0a26be8c8e426fba5667a5e1510dfb..c9411fa58c44eec7030176ea715b02f9ba3c169c 100644 (file)
@@ -1,6 +1,6 @@
 /* config.h -- Configuration file for bash. */
 
-/* Copyright (C) 1987-2009,2011-2012,2013-2023 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2009,2011-2012,2013-2024 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 #undef HAVE_DECL_STRTOULL
 #undef HAVE_DECL_STRTOUMAX
 
+/* These are checked with BASH_FUNC_UNLOCKED_IO */
+
+#undef HAVE_DECL_CLEARERR_UNLOCKED
+#undef HAVE_DECL_FEOF_UNLOCKED
+#undef HAVE_DECL_FERROR_UNLOCKED
+#undef HAVE_DECL_FFLUSH_UNLOCKED
+#undef HAVE_DECL_FGETS_UNLOCKED
+#undef HAVE_DECL_FPUTC_UNLOCKED
+#undef HAVE_DECL_FPUTS_UNLOCKED
+#undef HAVE_DECL_FREAD_UNLOCKED
+#undef HAVE_DECL_FWRITE_UNLOCKED
+#undef HAVE_DECL_GETC_UNLOCKED
+#undef HAVE_DECL_GETCHAR_UNLOCKED
+#undef HAVE_DECL_PUTC_UNLOCKED
+#undef HAVE_DECL_PUTCHAR_UNLOCKED
+
 /* Characteristics of system calls and C library functions. */
 
 /* Define if the `getpgrp' function takes no argument.  */
index 290fdd2830d342282c53b09d9dc77aa31e1a6550..d3ca0ace49f5c2c586e99f7900fa800ce17bb3fc 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac for Bash 5.3, version 5.060.
+# From configure.ac for Bash 5.3, version 5.061.
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.71 for bash 5.3-devel.
 #
@@ -3284,7 +3284,7 @@ m68k-sysv)        opt_bash_malloc=no ;;   # fixes file descriptor leak in closedir
 # These need additional investigation
 sparc-linux*)  opt_bash_malloc=no ;;   # sparc running linux; requires ELF
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
-*-cygwin*)     opt_bash_malloc=no ;;   # Cygnus's CYGWIN environment
+*-cygwin*|msys*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
 # These lack a working sbrk(2)
 aarch64-freebsd*)      opt_bash_malloc=no ;;
 riscv*-freebsd*)       opt_bash_malloc=no ;;
@@ -5290,6 +5290,9 @@ if test "x$cross_compiling" = "xyes"; then
     *-cygwin*)
        cross_cache=${srcdir}/cross-build/cygwin32.cache
        ;;
+    *-msys*)
+       cross_cache=${srcdir}/cross-build/msys32.cache
+       ;;
     *-mingw*)
        cross_cache=${srcdir}/cross-build/cygwin32.cache
        ;;
@@ -6147,7 +6150,7 @@ if test $opt_readline = yes; then
                # section for OS versions that don't allow unresolved symbols
                # to be compiled into dynamic libraries.
                case "$host_os" in
-               cygwin*)        TILDE_LIB= ;;
+               cygwin*|msys*)  TILDE_LIB= ;;
                esac
        else
                RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
@@ -6670,6 +6673,16 @@ fi
 
 
 
+# unlocked-io.m4 serial 16
+
+# Copyright (C) 1998-2006, 2009-2024 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+
 
 
 # codeset.m4 serial 5 (gettext-0.18.2)
@@ -9055,8 +9068,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
         LIBS=$save_LIBS
         test $gl_pthread_api = yes && break
       done
-      echo "$as_me:9058: gl_pthread_api=$gl_pthread_api" >&5
-      echo "$as_me:9059: LIBPTHREAD=$LIBPTHREAD" >&5
+      echo "$as_me:9071: gl_pthread_api=$gl_pthread_api" >&5
+      echo "$as_me:9072: LIBPTHREAD=$LIBPTHREAD" >&5
 
       gl_pthread_in_glibc=no
       # On Linux with glibc >= 2.34, libc contains the fully functional
@@ -9082,7 +9095,7 @@ rm -rf conftest*
 
           ;;
       esac
-      echo "$as_me:9085: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
+      echo "$as_me:9098: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
 
       # Test for libpthread by looking for pthread_kill. (Not pthread_self,
       # since it is defined as a macro on OSF/1.)
@@ -9236,7 +9249,7 @@ fi
 
         fi
       fi
-      echo "$as_me:9239: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
+      echo "$as_me:9252: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
     fi
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
 printf %s "checking whether POSIX threads API is available... " >&6; }
@@ -9464,8 +9477,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
         LIBS=$save_LIBS
         test $gl_pthread_api = yes && break
       done
-      echo "$as_me:9467: gl_pthread_api=$gl_pthread_api" >&5
-      echo "$as_me:9468: LIBPTHREAD=$LIBPTHREAD" >&5
+      echo "$as_me:9480: gl_pthread_api=$gl_pthread_api" >&5
+      echo "$as_me:9481: LIBPTHREAD=$LIBPTHREAD" >&5
 
       gl_pthread_in_glibc=no
       # On Linux with glibc >= 2.34, libc contains the fully functional
@@ -9491,7 +9504,7 @@ rm -rf conftest*
 
           ;;
       esac
-      echo "$as_me:9494: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
+      echo "$as_me:9507: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
 
       # Test for libpthread by looking for pthread_kill. (Not pthread_self,
       # since it is defined as a macro on OSF/1.)
@@ -9645,7 +9658,7 @@ fi
 
         fi
       fi
-      echo "$as_me:9648: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
+      echo "$as_me:9661: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
     fi
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
 printf %s "checking whether POSIX threads API is available... " >&6; }
@@ -18467,6 +18480,96 @@ printf "%s\n" "#define DUP2_BROKEN 1" >>confdefs.h
 
 fi
 
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pgrps need synchronization" >&5
+printf %s "checking whether pgrps need synchronization... " >&6; }
+if test ${bash_cv_pgrp_pipe+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test "$cross_compiling" = yes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;}
+    bash_cv_pgrp_pipe=no
+
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#  include <sys/wait.h>
+#endif
+#include <stdlib.h>
+int
+main()
+{
+# ifdef GETPGRP_VOID
+#  define getpgID()    getpgrp()
+# else
+#  define getpgID()    getpgrp(0)
+#  define setpgid(x,y) setpgrp(x,y)
+# endif
+       int pid1, pid2, fds[2];
+       int status;
+       char ok;
+
+       switch (pid1 = fork()) {
+         case -1:
+           exit(1);
+         case 0:
+           setpgid(0, getpid());
+           exit(0);
+       }
+       setpgid(pid1, pid1);
+
+       sleep(2);       /* let first child die */
+
+       if (pipe(fds) < 0)
+         exit(2);
+
+       switch (pid2 = fork()) {
+         case -1:
+           exit(3);
+         case 0:
+           setpgid(0, pid1);
+           ok = getpgID() == pid1;
+           write(fds[1], &ok, 1);
+           exit(0);
+       }
+       setpgid(pid2, pid1);
+
+       close(fds[1]);
+       if (read(fds[0], &ok, 1) != 1)
+         exit(4);
+       wait(&status);
+       wait(&status);
+       exit(ok ? 0 : 5);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  bash_cv_pgrp_pipe=no
+else $as_nop
+  bash_cv_pgrp_pipe=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_pgrp_pipe" >&5
+printf "%s\n" "$bash_cv_pgrp_pipe" >&6; }
+if test $bash_cv_pgrp_pipe = yes; then
+printf "%s\n" "#define PGRP_PIPE 1" >>confdefs.h
+
+fi
+
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5
 printf %s "checking for type of signal functions... " >&6; }
 if test ${bash_cv_signal_vintage+y}
@@ -18605,9 +18708,6 @@ printf "%s\n" "#define HAVE_USG_SIGHOLD 1" >>confdefs.h
 fi
 
 
-printf "%s\n" "#define PGRP_PIPE 1" >>confdefs.h
-
-
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys_errlist and sys_nerr" >&5
 printf %s "checking for sys_errlist and sys_nerr... " >&6; }
 if test ${bash_cv_sys_errlist+y}
@@ -20738,6 +20838,140 @@ esac
 
 fi
 
+ac_fn_check_decl "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_clearerr_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_CLEARERR_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_feof_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "ferror_unlocked" "ac_cv_have_decl_ferror_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ferror_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FERROR_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "fflush_unlocked" "ac_cv_have_decl_fflush_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fflush_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FFLUSH_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fgets_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "fputc_unlocked" "ac_cv_have_decl_fputc_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fputc_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FPUTC_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "fputs_unlocked" "ac_cv_have_decl_fputs_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fputs_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FPUTS_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "fread_unlocked" "ac_cv_have_decl_fread_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fread_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FREAD_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "fwrite_unlocked" "ac_cv_have_decl_fwrite_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fwrite_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_FWRITE_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "getchar_unlocked" "ac_cv_have_decl_getchar_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getchar_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_GETCHAR_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "putc_unlocked" "ac_cv_have_decl_putc_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_putc_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_PUTC_UNLOCKED $ac_have_decl" >>confdefs.h
+
+ac_fn_check_decl "$LINENO" "putchar_unlocked" "ac_cv_have_decl_putchar_unlocked" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_putchar_unlocked" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_PUTCHAR_UNLOCKED $ac_have_decl" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 if test "$ac_cv_func_putenv" = "yes"; then
@@ -22006,7 +22240,7 @@ freebsd*|midnightbsd*)  LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
 *qnx[67]*)     LOCAL_LIBS="-lncurses" ;;
 *qnx*)         LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
 powerux*)      LOCAL_LIBS="-lgen" ;;
-cygwin*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+cygwin*|msys*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
 opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
 *openstep*)    LOCAL_CFLAGS="-D__APPLE_CC__" ;;
 esac
index c25a8088e65ccb217a94a7dde2aed9e708421342..d4ca74e5ffaa9078f18c25303953c050e9e44ff6 100644 (file)
@@ -1,11 +1,11 @@
 dnl
 dnl Configure script for bash-5.3
 dnl
-dnl report bugs to chet@po.cwru.edu
+dnl report bugs to chet.ramey@case.edu
 dnl
 dnl Process this file with autoconf to produce a configure script.
 
-# Copyright (C) 1987-2023 Free Software Foundation, Inc.
+# Copyright (C) 1987-2024 Free Software Foundation, Inc.
 
 #
 #   This program is free software: you can redistribute it and/or modify
@@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script.
 #   You should have received a copy of the GNU General Public License
 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_REVISION([for Bash 5.3, version 5.059])dnl
+AC_REVISION([for Bash 5.3, version 5.061])dnl
 
 define(bashvers, 5.3)
 define(relstatus, devel)
@@ -76,7 +76,7 @@ m68k-sysv)    opt_bash_malloc=no ;;   # fixes file descriptor leak in closedir
 # These need additional investigation
 sparc-linux*)  opt_bash_malloc=no ;;   # sparc running linux; requires ELF
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
-*-cygwin*)     opt_bash_malloc=no ;;   # Cygnus's CYGWIN environment
+*-cygwin*|msys*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
 # These lack a working sbrk(2)
 aarch64-freebsd*)      opt_bash_malloc=no ;;
 riscv*-freebsd*)       opt_bash_malloc=no ;;
@@ -464,6 +464,9 @@ if test "x$cross_compiling" = "xyes"; then
     *-cygwin*)
        cross_cache=${srcdir}/cross-build/cygwin32.cache
        ;;
+    *-msys*)
+       cross_cache=${srcdir}/cross-build/msys32.cache
+       ;;
     *-mingw*)
        cross_cache=${srcdir}/cross-build/cygwin32.cache
        ;;
@@ -605,7 +608,7 @@ if test $opt_readline = yes; then
                # section for OS versions that don't allow unresolved symbols
                # to be compiled into dynamic libraries.
                case "$host_os" in
-               cygwin*)        TILDE_LIB= ;;
+               cygwin*|msys*)  TILDE_LIB= ;;
                esac
        else
                RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
@@ -717,6 +720,7 @@ m4_include([m4/stat-time.m4])
 m4_include([m4/timespec.m4])
 
 m4_include([m4/strtoimax.m4])
+m4_include([m4/unlocked-io.m4])
 
 dnl include files for gettext
 
@@ -1092,6 +1096,7 @@ BASH_FUNC_SNPRINTF
 BASH_FUNC_VSNPRINTF
 
 BASH_FUNC_STRTOIMAX
+BASH_FUNC_UNLOCKED_IO
 
 dnl If putenv or unsetenv is not present, set the right define so the
 dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
@@ -1202,7 +1207,7 @@ freebsd*|midnightbsd*)    LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
 *qnx[[67]]*)   LOCAL_LIBS="-lncurses" ;;
 *qnx*)         LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
 powerux*)      LOCAL_LIBS="-lgen" ;;
-cygwin*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+cygwin*|msys*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
 opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
 *openstep*)    LOCAL_CFLAGS="-D__APPLE_CC__" ;;
 esac
diff --git a/cross-build/msys32.cache b/cross-build/msys32.cache
new file mode 100644 (file)
index 0000000..7d9f257
--- /dev/null
@@ -0,0 +1,251 @@
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+ac_cv_build=${ac_cv_build='i686-pc-msys'}
+ac_cv_build_alias=${ac_cv_build_alias='i686-pc-msys'}
+ac_cv_c_bigendian=${ac_cv_c_bigendian='no'}
+ac_cv_c_char_unsigned=${ac_cv_c_char_unsigned='no'}
+ac_cv_c_compiler_gnu=${ac_cv_c_compiler_gnu='yes'}
+ac_cv_c_const=${ac_cv_c_const='yes'}
+ac_cv_c_inline=${ac_cv_c_inline='inline'}
+ac_cv_c_long_double=${ac_cv_c_long_double='yes'}
+ac_cv_c_stringize=${ac_cv_c_stringize='yes'}
+ac_cv_decl_sys_siglist=${ac_cv_decl_sys_siglist='no'}
+ac_cv_exeext=${ac_cv_exeext='.exe'}
+ac_cv_func___setostype=${ac_cv_func___setostype='no'}
+ac_cv_func__doprnt=${ac_cv_func__doprnt='no'}
+ac_cv_func_alloca_works=${ac_cv_func_alloca_works='yes'}
+ac_cv_func_asprintf=${ac_cv_func_asprintf='no'}
+ac_cv_func_bcopy=${ac_cv_func_bcopy='yes'}
+ac_cv_func_bindtextdomain=${ac_cv_func_bindtextdomain='no'}
+ac_cv_func_bzero=${ac_cv_func_bzero='yes'}
+ac_cv_func_confstr=${ac_cv_func_confstr='no'}
+ac_cv_func_dlclose=${ac_cv_func_dlclose='yes'}
+ac_cv_func_dlopen=${ac_cv_func_dlopen='yes'}
+ac_cv_func_dlsym=${ac_cv_func_dlsym='yes'}
+ac_cv_func_dup2=${ac_cv_func_dup2='yes'}
+ac_cv_func_fnmatch=${ac_cv_func_fnmatch='no'}
+ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo='no'}
+ac_cv_func_getcwd=${ac_cv_func_getcwd='yes'}
+ac_cv_func_getdtablesize=${ac_cv_func_getdtablesize='yes'}
+ac_cv_func_getgroups=${ac_cv_func_getgroups='yes'}
+ac_cv_func_gethostbyname=${ac_cv_func_gethostbyname='yes'}
+ac_cv_func_gethostname=${ac_cv_func_gethostname='yes'}
+ac_cv_func_getpagesize=${ac_cv_func_getpagesize='yes'}
+ac_cv_func_getpeername=${ac_cv_func_getpeername='yes'}
+ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'}
+ac_cv_func_getrlimit=${ac_cv_func_getrlimit='yes'}
+ac_cv_func_getrusage=${ac_cv_func_getrusage='yes'}
+ac_cv_func_getservbyname=${ac_cv_func_getservbyname='yes'}
+ac_cv_func_gettext=${ac_cv_func_gettext='no'}
+ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday='yes'}
+ac_cv_func_inet_aton=${ac_cv_func_inet_aton='yes'}
+ac_cv_func_isascii=${ac_cv_func_isascii='yes'}
+ac_cv_func_isblank=${ac_cv_func_isblank='no'}
+ac_cv_func_isgraph=${ac_cv_func_isgraph='yes'}
+ac_cv_func_isprint=${ac_cv_func_isprint='yes'}
+ac_cv_func_isspace=${ac_cv_func_isspace='yes'}
+ac_cv_func_isxdigit=${ac_cv_func_isxdigit='yes'}
+ac_cv_func_killpg=${ac_cv_func_killpg='yes'}
+ac_cv_func_lstat=${ac_cv_func_lstat='yes'}
+ac_cv_func_memmove=${ac_cv_func_memmove='yes'}
+ac_cv_func_mkfifo=${ac_cv_func_mkfifo='yes'}
+ac_cv_func_pathconf=${ac_cv_func_pathconf='yes'}
+ac_cv_func_putenv=${ac_cv_func_putenv='yes'}
+ac_cv_func_readlink=${ac_cv_func_readlink='yes'}
+ac_cv_func_rename=${ac_cv_func_rename='yes'}
+ac_cv_func_sbrk=${ac_cv_func_sbrk='yes'}
+ac_cv_func_select=${ac_cv_func_select='yes'}
+ac_cv_func_setdtablesize=${ac_cv_func_setdtablesize='yes'}
+ac_cv_func_setenv=${ac_cv_func_setenv='yes'}
+ac_cv_func_setlinebuf=${ac_cv_func_setlinebuf='no'}
+ac_cv_func_setlocale=${ac_cv_func_setlocale='yes'}
+ac_cv_func_setvbuf=${ac_cv_func_setvbuf='yes'}
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'}
+ac_cv_func_siginterrupt=${ac_cv_func_siginterrupt='no'}
+ac_cv_func_snprintf=${ac_cv_func_snprintf='yes'}
+ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp='yes'}
+ac_cv_func_strchr=${ac_cv_func_strchr='yes'}
+ac_cv_func_strcoll_works=${ac_cv_func_strcoll_works='yes'}
+ac_cv_func_strerror=${ac_cv_func_strerror='yes'}
+ac_cv_func_strpbrk=${ac_cv_func_strpbrk='yes'}
+ac_cv_func_strtod=${ac_cv_func_strtod='yes'}
+ac_cv_func_strtoimax=${ac_cv_func_strtoimax='no'}
+ac_cv_func_strtol=${ac_cv_func_strtol='yes'}
+ac_cv_func_strtoll=${ac_cv_func_strtoll='no'}
+ac_cv_func_strtoul=${ac_cv_func_strtoul='yes'}
+ac_cv_func_strtoull=${ac_cv_func_strtoull='no'}
+ac_cv_func_strtoumax=${ac_cv_func_strtoumax='no'}
+ac_cv_func_sysconf=${ac_cv_func_sysconf='yes'}
+ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr='yes'}
+ac_cv_func_tcgetpgrp=${ac_cv_func_tcgetpgrp='yes'}
+ac_cv_func_textdomain=${ac_cv_func_textdomain='no'}
+ac_cv_func_times=${ac_cv_func_times='yes'}
+ac_cv_func_ttyname=${ac_cv_func_ttyname='yes'}
+ac_cv_func_tzset=${ac_cv_func_tzset='yes'}
+ac_cv_func_ulimit=${ac_cv_func_ulimit='no'}
+ac_cv_func_uname=${ac_cv_func_uname='yes'}
+ac_cv_func_vasprintf=${ac_cv_func_vasprintf='no'}
+ac_cv_func_vprintf=${ac_cv_func_vprintf='yes'}
+ac_cv_func_vsnprintf=${ac_cv_func_vsnprintf='yes'}
+ac_cv_func_wait3=${ac_cv_func_wait3='yes'}
+ac_cv_func_waitpid=${ac_cv_func_waitpid='yes'}
+ac_cv_have_decl_confstr=${ac_cv_have_decl_confstr='no'}
+ac_cv_have_decl_printf=${ac_cv_have_decl_printf='yes'}
+ac_cv_have_decl_sbrk=${ac_cv_have_decl_sbrk='yes'}
+ac_cv_have_decl_strsignal=${ac_cv_have_decl_strsignal='yes'}
+ac_cv_have_decl_strtold=${ac_cv_have_decl_strtold='no'}
+ac_cv_header_arpa_inet_h=${ac_cv_header_arpa_inet_h='yes'}
+ac_cv_header_dirent_dirent_h=${ac_cv_header_dirent_dirent_h='yes'}
+ac_cv_header_dlfcn_h=${ac_cv_header_dlfcn_h='yes'}
+ac_cv_header_grp_h=${ac_cv_header_grp_h='yes'}
+ac_cv_header_inttypes_h=${ac_cv_header_inttypes_h='no'}
+ac_cv_header_libintl_h=${ac_cv_header_libintl_h='yes'}
+ac_cv_header_limits_h=${ac_cv_header_limits_h='yes'}
+ac_cv_header_locale_h=${ac_cv_header_locale_h='yes'}
+ac_cv_header_memory_h=${ac_cv_header_memory_h='yes'}
+ac_cv_header_minix_config_h=${ac_cv_header_minix_config_h='no'}
+ac_cv_header_netdb_h=${ac_cv_header_netdb_h='yes'}
+ac_cv_header_netinet_in_h=${ac_cv_header_netinet_in_h='yes'}
+ac_cv_header_stat_broken=${ac_cv_header_stat_broken='no'}
+ac_cv_header_stdarg_h=${ac_cv_header_stdarg_h='yes'}
+ac_cv_header_stdc=${ac_cv_header_stdc='yes'}
+ac_cv_header_stddef_h=${ac_cv_header_stddef_h='yes'}
+ac_cv_header_stdint_h=${ac_cv_header_stdint_h='no'}
+ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h='yes'}
+ac_cv_header_string_h=${ac_cv_header_string_h='yes'}
+ac_cv_header_strings_h=${ac_cv_header_strings_h='yes'}
+ac_cv_header_sys_file_h=${ac_cv_header_sys_file_h='yes'}
+ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h='yes'}
+ac_cv_header_sys_pte_h=${ac_cv_header_sys_pte_h='no'}
+ac_cv_header_sys_ptem_h=${ac_cv_header_sys_ptem_h='no'}
+ac_cv_header_sys_resource_h=${ac_cv_header_sys_resource_h='yes'}
+ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h='yes'}
+ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h='yes'}
+ac_cv_header_sys_stat_h=${ac_cv_header_sys_stat_h='yes'}
+ac_cv_header_sys_stream_h=${ac_cv_header_sys_stream_h='no'}
+ac_cv_header_sys_time_h=${ac_cv_header_sys_time_h='yes'}
+ac_cv_header_sys_times_h=${ac_cv_header_sys_times_h='yes'}
+ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h='yes'}
+ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h='yes'}
+ac_cv_header_termcap_h=${ac_cv_header_termcap_h='yes'}
+ac_cv_header_termio_h=${ac_cv_header_termio_h='yes'}
+ac_cv_header_termios_h=${ac_cv_header_termios_h='yes'}
+ac_cv_header_time=${ac_cv_header_time='yes'}
+ac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'}
+ac_cv_header_varargs_h=${ac_cv_header_varargs_h='yes'}
+ac_cv_host=${ac_cv_host='i686-pc-msys'}
+ac_cv_host_alias=${ac_cv_host_alias='i686-pc-msys'}
+ac_cv_lib_dir_opendir=${ac_cv_lib_dir_opendir='no'}
+ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen='no'}
+ac_cv_lib_intl_bindtextdomain=${ac_cv_lib_intl_bindtextdomain='yes'}
+ac_cv_lib_termcap_tgetent=${ac_cv_lib_termcap_tgetent='yes'}
+ac_cv_member_struct_stat_st_blocks=${ac_cv_member_struct_stat_st_blocks='yes'}
+ac_cv_member_struct_termio_c_line=${ac_cv_member_struct_termio_c_line='yes'}
+ac_cv_member_struct_termios_c_line=${ac_cv_member_struct_termios_c_line='yes'}
+ac_cv_objext=${ac_cv_objext='o'}
+ac_cv_path_install=${ac_cv_path_install='/usr/bin/install -c'}
+ac_cv_prog_AR=${ac_cv_prog_AR='ar'}
+ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'}
+ac_cv_prog_YACC=${ac_cv_prog_YACC='bison -y'}
+ac_cv_prog_ac_ct_CC=${ac_cv_prog_ac_ct_CC='gcc'}
+ac_cv_prog_ac_ct_RANLIB=${ac_cv_prog_ac_ct_RANLIB='ranlib'}
+ac_cv_prog_cc_g=${ac_cv_prog_cc_g='yes'}
+ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=''}
+ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional='no'}
+ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set='yes'}
+ac_cv_sizeof_char=${ac_cv_sizeof_char='1'}
+ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'}
+ac_cv_sizeof_double=${ac_cv_sizeof_double='8'}
+ac_cv_sizeof_int=${ac_cv_sizeof_int='4'}
+ac_cv_sizeof_long=${ac_cv_sizeof_long='4'}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long='8'}
+ac_cv_sizeof_short=${ac_cv_sizeof_short='2'}
+ac_cv_sys_file_offset_bits=${ac_cv_sys_file_offset_bits='no'}
+ac_cv_sys_interpreter=${ac_cv_sys_interpreter='yes'}
+ac_cv_sys_large_files=${ac_cv_sys_large_files='no'}
+ac_cv_sys_largefile_CC=${ac_cv_sys_largefile_CC='no'}
+ac_cv_sys_posix_termios=${ac_cv_sys_posix_termios='yes'}
+ac_cv_sys_tiocgwinsz_in_termios_h=${ac_cv_sys_tiocgwinsz_in_termios_h='yes'}
+ac_cv_type_bits16_t=${ac_cv_type_bits16_t='no'}
+ac_cv_type_bits32_t=${ac_cv_type_bits32_t='no'}
+ac_cv_type_bits64_t=${ac_cv_type_bits64_t='no'}
+ac_cv_type_char=${ac_cv_type_char='yes'}
+ac_cv_type_char_p=${ac_cv_type_char_p='yes'}
+ac_cv_type_double=${ac_cv_type_double='yes'}
+ac_cv_type_getgroups=${ac_cv_type_getgroups='gid_t'}
+ac_cv_type_int=${ac_cv_type_int='yes'}
+ac_cv_type_long=${ac_cv_type_long='yes'}
+ac_cv_type_long_long=${ac_cv_type_long_long='yes'}
+ac_cv_type_mode_t=${ac_cv_type_mode_t='yes'}
+ac_cv_type_off_t=${ac_cv_type_off_t='yes'}
+ac_cv_type_pid_t=${ac_cv_type_pid_t='yes'}
+ac_cv_type_ptrdiff_t=${ac_cv_type_ptrdiff_t='yes'}
+ac_cv_type_short=${ac_cv_type_short='yes'}
+ac_cv_type_signal=${ac_cv_type_signal='void'}
+ac_cv_type_size_t=${ac_cv_type_size_t='yes'}
+ac_cv_type_ssize_t=${ac_cv_type_ssize_t='yes'}
+ac_cv_type_time_t=${ac_cv_type_time_t='yes'}
+ac_cv_type_u_bits16_t=${ac_cv_type_u_bits16_t='no'}
+ac_cv_type_u_bits32_t=${ac_cv_type_u_bits32_t='no'}
+ac_cv_type_u_int=${ac_cv_type_u_int='yes'}
+ac_cv_type_u_long=${ac_cv_type_u_long='yes'}
+ac_cv_type_uid_t=${ac_cv_type_uid_t='yes'}
+ac_cv_working_alloca_h=${ac_cv_working_alloca_h='no'}
+
+bash_cv_decl_strtoimax=${bash_cv_decl_strtoimax='no'}
+bash_cv_decl_strtol=${bash_cv_decl_strtol='yes'}
+bash_cv_decl_strtoll=${bash_cv_decl_strtoll='no'}
+bash_cv_decl_strtoul=${bash_cv_decl_strtoul='yes'}
+bash_cv_decl_strtoull=${bash_cv_decl_strtoull='no'}
+bash_cv_decl_strtoumax=${bash_cv_decl_strtoumax='no'}
+bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'}
+bash_cv_dev_fd=${bash_cv_dev_fd='absent'}
+bash_cv_dev_stdin=${bash_cv_dev_stdin='absent'}
+bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno='no'}
+bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino='yes'}
+bash_cv_dup2_broken=${bash_cv_dup2_broken='no'}
+bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl='no'}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='present'}
+bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'}
+bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'}
+bash_cv_getpw_declared=${bash_cv_getpw_declared='yes'}
+bash_cv_have_strsignal=${bash_cv_have_strsignal='yes'}
+bash_cv_job_control_missing=${bash_cv_job_control_missing='present'}
+bash_cv_mail_dir=${bash_cv_mail_dir='unknown'}
+bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'}
+bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'}
+bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'}
+bash_cv_printf_a_format=${bash_cv_printf_a_format='no'}
+bash_cv_signal_vintage=${bash_cv_signal_vintage='posix'}
+bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types='no'}
+bash_cv_struct_timeval=${bash_cv_struct_timeval='yes'}
+bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header='termios_h'}
+bash_cv_sys_errlist=${bash_cv_sys_errlist='no'}
+bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='present'}
+bash_cv_sys_siglist=${bash_cv_sys_siglist='no'}
+bash_cv_termcap_lib=${bash_cv_termcap_lib='libtermcap'}
+bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl='no'}
+bash_cv_type_clock_t=${bash_cv_type_clock_t='yes'}
+bash_cv_type_intmax_t=${bash_cv_type_intmax_t='no'}
+bash_cv_type_long_long=${bash_cv_type_long_long='long long'}
+bash_cv_type_quad_t=${bash_cv_type_quad_t='no'}
+bash_cv_type_rlimit=${bash_cv_type_rlimit='rlim_t'}
+bash_cv_type_sigset_t=${bash_cv_type_sigset_t='yes'}
+bash_cv_type_socklen_t=${bash_cv_type_socklen_t='no'}
+bash_cv_type_uintmax_t=${bash_cv_type_uintmax_t='no'}
+bash_cv_type_unsigned_long_long=${bash_cv_type_unsigned_long_long='unsigned long long'}
+bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'}
+bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'}
+bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs='no'}
+bash_cv_void_sighandler=${bash_cv_void_sighandler='yes'}
index 94082fdf884e96e9504da61c81e0f35cd5b5228d..b395c54fa37c34660d99d4c9cc1620faa520dd38 100644 (file)
--- a/general.c
+++ b/general.c
@@ -826,7 +826,12 @@ absolute_pathname (const char *string)
 int
 absolute_program (const char *string)
 {
+#ifndef __MSYS__
   return ((char *)mbschr (string, '/') != (char *)NULL);
+#else
+  return ((char *)mbschr (string, '/') != (char *)NULL ||
+         (char *)mbschr (string, '\\') != (char *)NULL)
+#endif
 }
 
 /* **************************************************************** */
@@ -850,7 +855,7 @@ make_absolute (const char *string, const char *dot_path)
       char pathbuf[PATH_MAX + 1];
 
       /* WAS cygwin_conv_to_full_posix_path (string, pathbuf); */
-      cygwin_conv_path (CCP_WIN_A_TO_POSIX, string, pathbuf, PATH_MAX);
+      cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, string, pathbuf, PATH_MAX);
       result = savestring (pathbuf);
     }
 #else
index ecbc887761559d8a90f1deea05839bc603adda4c..b86a4981b867d15756605486a3a7e41c22fe17cf 100644 (file)
--- a/general.h
+++ b/general.h
@@ -1,6 +1,6 @@
 /* general.h -- defines that everybody likes to use. */
 
-/* Copyright (C) 1993-2023 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2024 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -43,6 +43,7 @@
 #  include <limits.h>
 #endif
 
+#include "unlocked-io.h"
 #include "xmalloc.h"
 
 /* Hardly used anymore */
diff --git a/include/unlocked-io.h b/include/unlocked-io.h
new file mode 100644 (file)
index 0000000..659e798
--- /dev/null
@@ -0,0 +1,138 @@
+/* Prefer faster, non-thread-safe stdio functions if available.
+
+   Copyright (C) 2001-2004, 2009-2024 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering.  */
+
+/* Adapted from gnulib:lib/unlocked-io.h */
+
+#ifndef UNLOCKED_IO_H
+# define UNLOCKED_IO_H 1
+
+/* These are wrappers for functions/macros from the GNU C library, and
+   from other C libraries supporting POSIX's optional thread-safe functions.
+
+   The standard I/O functions are thread-safe.  These *_unlocked ones are
+   more efficient but not thread-safe.  That they're not thread-safe is
+   fine since all of the applications in this package are single threaded.
+
+   Also, some code that is shared with the GNU C library may invoke
+   the *_unlocked functions directly.  On hosts that lack those
+   functions, invoke the non-thread-safe versions instead.  */
+
+# include <stdio.h>
+
+# if HAVE_DECL_CLEARERR_UNLOCKED || defined clearerr_unlocked
+#  undef clearerr
+#  define clearerr(x) clearerr_unlocked (x)
+# else
+#  define clearerr_unlocked(x) clearerr (x)
+# endif
+
+# if HAVE_DECL_FEOF_UNLOCKED || defined feof_unlocked
+#  undef feof
+#  define feof(x) feof_unlocked (x)
+# else
+#  define feof_unlocked(x) feof (x)
+# endif
+
+# if HAVE_DECL_FERROR_UNLOCKED || defined ferror_unlocked
+#  undef ferror
+#  define ferror(x) ferror_unlocked (x)
+# else
+#  define ferror_unlocked(x) ferror (x)
+# endif
+
+# if HAVE_DECL_FFLUSH_UNLOCKED || defined fflush_unlocked
+#  undef fflush
+#  define fflush(x) fflush_unlocked (x)
+# else
+#  define fflush_unlocked(x) fflush (x)
+# endif
+
+# if HAVE_DECL_FGETS_UNLOCKED || defined fgets_unlocked
+#  undef fgets
+#  define fgets(x,y,z) fgets_unlocked (x,y,z)
+# else
+#  define fgets_unlocked(x,y,z) fgets (x,y,z)
+# endif
+
+# if HAVE_DECL_FPUTC_UNLOCKED || defined fputc_unlocked
+#  undef fputc
+#  define fputc(x,y) fputc_unlocked (x,y)
+# else
+#  define fputc_unlocked(x,y) fputc (x,y)
+# endif
+
+# if HAVE_DECL_FPUTS_UNLOCKED || defined fputs_unlocked
+#  undef fputs
+#  define fputs(x,y) fputs_unlocked (x,y)
+# else
+#  define fputs_unlocked(x,y) fputs (x,y)
+# endif
+
+# if HAVE_DECL_FREAD_UNLOCKED || defined fread_unlocked
+#  undef fread
+#  define fread(w,x,y,z) fread_unlocked (w,x,y,z)
+# else
+#  define fread_unlocked(w,x,y,z) fread (w,x,y,z)
+# endif
+
+# if HAVE_DECL_FWRITE_UNLOCKED || defined fwrite_unlocked
+#  undef fwrite
+#  define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
+# else
+#  define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z)
+# endif
+
+# if HAVE_DECL_GETC_UNLOCKED || defined getc_unlocked
+#  undef getc
+#  define getc(x) getc_unlocked (x)
+# else
+#  define getc_unlocked(x) getc (x)
+# endif
+
+# if HAVE_DECL_GETCHAR_UNLOCKED || defined getchar_unlocked
+#  undef getchar
+#  define getchar() getchar_unlocked ()
+# else
+#  define getchar_unlocked() getchar ()
+# endif
+
+# if HAVE_DECL_PUTC_UNLOCKED || defined putc_unlocked
+#  undef putc
+#  define putc(x,y) putc_unlocked (x,y)
+# else
+#  define putc_unlocked(x,y) putc (x,y)
+# endif
+
+# if HAVE_DECL_PUTCHAR_UNLOCKED || defined putchar_unlocked
+#  undef putchar
+#  define putchar(x) putchar_unlocked (x)
+# else
+#  define putchar_unlocked(x) putchar (x)
+# endif
+
+# undef flockfile
+# define flockfile(x) ((void) 0)
+
+# undef ftrylockfile
+# define ftrylockfile(x) 0
+
+# undef funlockfile
+# define funlockfile(x) ((void) 0)
+
+#endif /* UNLOCKED_IO_H */
index f829d395144e0c52c3fe4f3c3b0e11cfd611398d..7b2c3f257269d63fa266e3ffdbdf267343818222 100644 (file)
@@ -322,7 +322,7 @@ static PTR_T internal_valloc (size_t, const char *, int, int);
 static PTR_T internal_remap (PTR_T, size_t, int, int);
 
 #if defined (botch)
-extern void botch ();
+extern void botch (const char *, ...);
 #else
 static void botch (const char *, const char *, int);
 #endif
index e7803762a9311e100da1445a61fe4d998068b8a2..604fefcc1168db098444c1f1dc29a6ff535e6332 100644 (file)
@@ -60,7 +60,7 @@ typedef struct mr_table {
 extern mr_table_t *mr_table_entry (PTR_T);
 extern void mregister_alloc (const char *, PTR_T, size_t, const char *, int);
 extern void mregister_free (PTR_T, int, const char *, int);
-extern void mregister_describe_mem ();
+extern void mregister_describe_mem (PTR_T, FILE *);    /* needs stdio.h */
 extern void mregister_dump_table (void);
 extern void mregister_table_init (void);
 
index 39288ed2462da4cca4f8086ed5eda3d0db45df96..94adc8972a070f73a9b36acb6c27adfdf488bedf 100644 (file)
@@ -77,6 +77,10 @@ sh_physpath (char *path, int flags)
   ssize_t r;
   size_t linklen;
 
+#ifdef __CYGWIN__
+  return realpath (path, NULL);
+#endif
+
   linklen = strlen (path);
 
 #if 0
@@ -100,13 +104,8 @@ sh_physpath (char *path, int flags)
 
   /* This always gets an absolute pathname. */
 
-  /* POSIX.2 says to leave a leading `//' alone.  On cygwin, we skip over any
-     leading `x:' (dos drive name). */
-#if defined (__CYGWIN__)
-  qbase = (ISALPHA((unsigned char)workpath[0]) && workpath[1] == ':') ? workpath + 3 : workpath + 1;
-#else
+  /* POSIX.2 says to leave a leading `//' alone. */
   qbase = workpath + 1;
-#endif
   double_slash_path = DOUBLE_SLASH (workpath);
   qbase += double_slash_path;
 
@@ -212,11 +211,7 @@ error:
            {
              q = result;
              /* Duplicating some code here... */
-#if defined (__CYGWIN__)
-             qbase = (ISALPHA((unsigned char)workpath[0]) && workpath[1] == ':') ? workpath + 3 : workpath + 1;
-#else
              qbase = workpath + 1;
-#endif
              double_slash_path = DOUBLE_SLASH (workpath);
              qbase += double_slash_path;
     
index 787e4c36e5e09b56d47ce3c44a5ed98cd604a751..e4fbaabd353b30e49cd804f2b3e00d998375f18b 100644 (file)
@@ -23,7 +23,7 @@
 #include <bashansi.h>
 
 size_t
-strlcpy(char *dest, const const char *src, size_t size)
+strlcpy(char *dest, const char *src, size_t size)
 {
   size_t ret;
 
diff --git a/m4/unlocked-io.m4 b/m4/unlocked-io.m4
new file mode 100644 (file)
index 0000000..ff14f34
--- /dev/null
@@ -0,0 +1,31 @@
+# unlocked-io.m4 serial 16
+
+# Copyright (C) 1998-2006, 2009-2024 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+dnl
+dnl Adapted from gnulib:m4/unlocked-io.m4
+AC_DEFUN([BASH_FUNC_UNLOCKED_IO],
+[
+  dnl Persuade glibc and Solaris <stdio.h> to declare
+  dnl fgets_unlocked(), fputs_unlocked() etc.
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_DECLS_ONCE([clearerr_unlocked])
+  AC_CHECK_DECLS_ONCE([feof_unlocked])
+  AC_CHECK_DECLS_ONCE([ferror_unlocked])
+  AC_CHECK_DECLS_ONCE([fflush_unlocked])
+  AC_CHECK_DECLS_ONCE([fgets_unlocked])
+  AC_CHECK_DECLS_ONCE([fputc_unlocked])
+  AC_CHECK_DECLS_ONCE([fputs_unlocked])
+  AC_CHECK_DECLS_ONCE([fread_unlocked])
+  AC_CHECK_DECLS_ONCE([fwrite_unlocked])
+  AC_CHECK_DECLS_ONCE([getc_unlocked])
+  AC_CHECK_DECLS_ONCE([getchar_unlocked])
+  AC_CHECK_DECLS_ONCE([putc_unlocked])
+  AC_CHECK_DECLS_ONCE([putchar_unlocked])
+])
index dfc46fa55e8d19cc72416c3a07a82ac21fd6deac..f3e6ef5106a38366218085074aa750e4200c88c5 100644 (file)
 
 #ifdef HAVE_UNISTD_H
 #  include <unistd.h>
+#else
+extern int optind;
+extern char *optarg;
 #endif
 
 #include "syntax.h"
 
-extern int optind;
-extern char *optarg;
-
 #ifndef errno
 extern int errno;
 #endif
diff --git a/parse.y b/parse.y
index 551e03d0ddd6dcdb1d95f85111277bd51776e172..3e28d24d91ea43990678bfc49c2dfca99dba9fd5 100644 (file)
--- a/parse.y
+++ b/parse.y
@@ -1553,7 +1553,14 @@ yy_input_name (void)
 static int
 yy_getc (void)
 {
+#ifndef __MSYS__
   return (*(bash_input.getter)) ();
+#else
+  int c;
+  /* skip \r entirely on MSYS */
+  while ((c = (*(bash_input.getter)) ()) == '\r');
+  return c;
+#endif
 }
 
 /* Call this to unget C.  That is, to make C the next character
@@ -2521,6 +2528,11 @@ shell_getc (int remove_quoted_newline)
          else
            RESIZE_MALLOCED_BUFFER (shell_input_line, i, 2, shell_input_line_size, 256);
 
+#ifdef __MSYS__
+         if (c == '\r')
+           continue;
+#endif
+
          if (c == EOF)
            {
              if (interactive && bash_input.type == st_stream)
index ecd482e3a2b19548df610e56b5b5c57788743c04..505fbe70f73aa8186464252365970af78bd0f216 100644 (file)
Binary files a/po/tr.gmo and b/po/tr.gmo differ
index f0a7e84281af7b7024dd9706d7db7ffc08eb90b5..9593ac45d12232c4ba023392ece4be4e2812a252 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -5,78 +5,74 @@
 # Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2006.
 # Volkan Gezer <vlkngzr@gmail.com>, 2013, 2014, 2017.
 # Emir SARI <emir_sari@icloud.com>, 2022
+# Muhammet Kara <muhammetk@gmail.com>, 2024.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-5.1\n"
+"Project-Id-Version: bash-5.2-rc1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2022-04-11 23:00+0300\n"
-"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2024-02-13 22:49+0300\n"
+"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
 "Language-Team: Turkish <gnome-turk@gnome.org>\n"
 "Language: tr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Lokalize 2.0\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 45.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
 #: arrayfunc.c:66
 msgid "bad array subscript"
 msgstr "hatalı dizilim indisi"
 
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr "%s: nameref özniteliği kaldırılıyor"
 
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: indisli dizilim, ilişkisel dizilime dönüştürülemez"
 
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: geçersiz ilişkisel dizilim anahtarı"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: sayısal olmayan indise atama yapılamaz"
 
-#: arrayfunc.c:747
+#: arrayfunc.c:822
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: ilişkisel bir dizilim ataması yapılırken indis kullanılmalıdır"
 
-#: bashhist.c:452
+#: bashhist.c:455
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: oluşturulamıyor: %s"
 
-#: bashline.c:4310
+#: bashline.c:4479
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor"
 
-#: bashline.c:4459
+#: bashline.c:4637
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: boşluk olmayan ilk karakter `\"' değil"
 
-#: bashline.c:4488
+#: bashline.c:4666
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "%2$s içinde kapatan `%1$c' yok"
 
-#: bashline.c:4519
+#: bashline.c:4697
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: iki nokta imi eksik"
 
-#: bashline.c:4555
+#: bashline.c:4733
 #, c-format
 msgid "`%s': cannot unbind in command keymap"
 msgstr "`%s': komut düğme eşleminde bağıntı kaldırılamıyor"
@@ -96,7 +92,7 @@ msgstr "destek genişletme: %u öge için bellek ayrılamıyor"
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "destek genişletme: `%s' için bellek ayrılamıyor"
 
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': geçersiz takma ad"
@@ -167,7 +163,7 @@ msgstr ""
 msgid "HOME not set"
 msgstr "HOME atanmamış"
 
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
 msgid "too many arguments"
 msgstr "pek fazla argüman"
 
@@ -194,7 +190,7 @@ msgstr "uyarı: "
 msgid "%s: usage: "
 msgstr "%s: kullanım: "
 
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: seçenek bir argüman gerektiriyor"
@@ -209,7 +205,7 @@ msgstr "%s: sayısal argüman gerekiyor"
 msgid "%s: not found"
 msgstr "%s: yok"
 
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: seçenek geçersiz"
@@ -219,7 +215,7 @@ msgstr "%s: seçenek geçersiz"
 msgid "%s: invalid option name"
 msgstr "%s: seçenek adı geçersiz"
 
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': geçerli bir tanımlayıcı değil"
@@ -232,7 +228,7 @@ msgstr "geçersiz sekizli sayı"
 msgid "invalid hex number"
 msgstr "geçersiz onaltılık sayı"
 
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
 msgid "invalid number"
 msgstr "geçersiz sayı"
 
@@ -246,88 +242,93 @@ msgstr "%s: sinyal belirtimi geçersiz"
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': geçerli bir iş belirtimi veya süreç numarası değil"
 
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: saltokunur değişken"
 
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: atanamaz"
+
+#: builtins/common.c:281
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s erim dışı"
 
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
 msgid "argument"
 msgstr "argüman"
 
-#: builtins/common.c:276
+#: builtins/common.c:283
 #, c-format
 msgid "%s out of range"
 msgstr "%s erim dışı"
 
-#: builtins/common.c:284
+#: builtins/common.c:291
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: böyle bir iş yok"
 
-#: builtins/common.c:292
+#: builtins/common.c:299
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: iş denetimi yok"
 
-#: builtins/common.c:294
+#: builtins/common.c:301
 msgid "no job control"
 msgstr "iş denetimi yok"
 
-#: builtins/common.c:304
+#: builtins/common.c:311
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: kısıtlı"
 
-#: builtins/common.c:306
+#: builtins/common.c:313
 msgid "restricted"
 msgstr "kısıtlı"
 
-#: builtins/common.c:314
+#: builtins/common.c:321
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: bir kabuk yerleşiği değil"
 
-#: builtins/common.c:323
+#: builtins/common.c:330
 #, c-format
 msgid "write error: %s"
 msgstr "yazma hatası: %s"
 
-#: builtins/common.c:331
+#: builtins/common.c:338
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "uçbirim öznitelikleri ayarlanırken hata: %s"
 
-#: builtins/common.c:333
+#: builtins/common.c:340
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "uçbirim öznitelikleri alınırken hata: %s"
 
-#: builtins/common.c:635
+#: builtins/common.c:642
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: geçerli dizin alınırken hata: %s: %s\n"
 
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: iş belirtimi belirsiz"
 
-#: builtins/common.c:964
+#: builtins/common.c:971
 msgid "help not available in this version"
 msgstr "bu sürümde yardım kullanılamıyor"
 
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: unset yapılamaz: %s saltokunur"
 
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: unset yapılamaz"
@@ -337,108 +338,108 @@ msgstr "%s: unset yapılamaz"
 msgid "%s: invalid action name"
 msgstr "%s: eylem adı geçersiz"
 
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: tamamlama belirtimi yok"
 
-#: builtins/complete.def:688
+#: builtins/complete.def:696
 msgid "warning: -F option may not work as you expect"
 msgstr "uyarı: -F seçeneği umduğunuz gibi çalışmayabilir"
 
-#: builtins/complete.def:690
+#: builtins/complete.def:698
 msgid "warning: -C option may not work as you expect"
 msgstr "uyarı: -C seçeneği umduğunuz gibi çalışmayabilir"
 
-#: builtins/complete.def:838
+#: builtins/complete.def:846
 msgid "not currently executing completion function"
 msgstr "şuan tamamlama işlevi çalıştırılmıyor"
 
-#: builtins/declare.def:134
+#: builtins/declare.def:137
 msgid "can only be used in a function"
 msgstr "yalnızca bir işlevde kullanılabilir"
 
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "işlev yapmak için `-f' kullanılamaz"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: saltokunur işlev"
+
+#: builtins/declare.def:521 builtins/declare.def:804
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: başvuru değeri bir dizilim olamaz"
 
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: nameref değişkeninin kendine yaptığı başvurulara izin verilmiyor"
 
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: çembersel ad başvurusu"
 
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
 #, c-format
 msgid "`%s': invalid variable name for name reference"
 msgstr "%s: ad başvuarusu için geçersiz değişken adı"
 
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "işlev yapmak için `-f' kullanılamaz"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: saltokunur işlev"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: alıntılanmış bileşik dizi ataması artık kullanılmıyor"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: dizi değişkenleri bu yolla iptal edilemez"
 
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: ilişkisel dizilim, indisli dizilime dönüştürülemez"
 
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: alıntılanmış bileşik dizi ataması artık kullanılmıyor"
+
+#: builtins/enable.def:145 builtins/enable.def:153
 msgid "dynamic loading not available"
 msgstr "devingen yükleme olanaklı değil"
 
-#: builtins/enable.def:343
+#: builtins/enable.def:376
 #, c-format
 msgid "cannot open shared object %s: %s"
 msgstr "%s paylaşımlı nesnesi açılamıyor: %s"
 
-#: builtins/enable.def:371
+#: builtins/enable.def:405
 #, c-format
 msgid "cannot find %s in shared object %s: %s"
 msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s"
 
-#: builtins/enable.def:388
+#: builtins/enable.def:422
 #, c-format
 msgid "%s: dynamic builtin already loaded"
 msgstr "%s: devinen yerleşiği halihazırda yüklenmiş"
 
-#: builtins/enable.def:392
+#: builtins/enable.def:426
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
 msgstr "%s için yükleme işlevi hata döndürdü (%d): yüklenmedi"
 
-#: builtins/enable.def:517
+#: builtins/enable.def:551
 #, c-format
 msgid "%s: not dynamically loaded"
 msgstr "%s: devingen olarak yüklenmemiş"
 
-#: builtins/enable.def:543
+#: builtins/enable.def:577
 #, c-format
 msgid "%s: cannot delete: %s"
 msgstr "%s: silinemiyor: %s"
 
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: bir dizin"
@@ -453,7 +454,7 @@ msgstr "%s: bir dosya değil"
 msgid "%s: file is too large"
 msgstr "%s: dosya çok büyük"
 
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: ikili dosya çalıştırılamıyor"
@@ -548,12 +549,12 @@ msgstr ""
 msgid "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr "`%s' ile ilgili yardım konusu yok. `help help', `man -k %s', `info %s' yazmayı deneyin."
 
-#: builtins/help.def:224
+#: builtins/help.def:223
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: açılamıyor: %s"
 
-#: builtins/help.def:524
+#: builtins/help.def:523
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -573,21 +574,21 @@ msgstr ""
 "Bir adın yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:159
 msgid "cannot use more than one of -anrw"
 msgstr "tek bir -anrw kullanılabilir"
 
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
 msgid "history position"
 msgstr "geçmiş konumu"
 
-#: builtins/history.def:340
+#: builtins/history.def:338
 #, c-format
 msgid "%s: invalid timestamp"
 msgstr "%s: geçersiz zaman damgası"
 
-#: builtins/history.def:451
+#: builtins/history.def:449
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: geçmiş yorumlaması başarısız"
@@ -610,78 +611,78 @@ msgstr "%s: argümanlar süreç veya iş kimlikleri olmalı"
 msgid "Unknown error"
 msgstr "Bilinmeyen hata"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
 msgid "expression expected"
 msgstr "ifade bekleniyordu"
 
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
 #, c-format
 msgid "%s: not an indexed array"
 msgstr "%s: bir sıralı dizi değil"
 
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: dosya tanıtıcı belirtimi geçersiz"
 
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: dosya açıklayıcısı geçersiz: %s"
 
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: geçersiz satır sayısı"
 
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: geçersiz dizilim kökeni"
 
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: geçersiz geri çağırım niceliği"
 
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
 msgid "empty array variable name"
 msgstr "boş bir dizilim değişken adı"
 
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
 msgid "array variable support required"
 msgstr "dizi değişken desteği gerekli"
 
-#: builtins/printf.def:419
+#: builtins/printf.def:430
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': biçim karakteri eksik"
 
-#: builtins/printf.def:474
+#: builtins/printf.def:485
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': geçersiz zaman biçimi belirtimi"
 
-#: builtins/printf.def:676
+#: builtins/printf.def:708
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': biçim karakteri geçersiz"
 
-#: builtins/printf.def:702
+#: builtins/printf.def:734
 #, c-format
 msgid "warning: %s: %s"
 msgstr "uyarı: %s: %s"
 
-#: builtins/printf.def:788
+#: builtins/printf.def:822
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "biçim ayrıştırma sorunu: %s"
 
-#: builtins/printf.def:885
+#: builtins/printf.def:919
 msgid "missing hex digit for \\x"
 msgstr "\\x için onaltılık rakam eksik"
 
-#: builtins/printf.def:900
+#: builtins/printf.def:934
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "\\%c için unicode rakamı eksik"
@@ -830,12 +831,12 @@ msgstr ""
 "    \n"
 "    Dizin yığınını `dirs' komutuyla görebilirsiniz."
 
-#: builtins/read.def:280
+#: builtins/read.def:308
 #, c-format
 msgid "%s: invalid timeout specification"
 msgstr "%s: zamanaşımı belirtimi geçersiz"
 
-#: builtins/read.def:755
+#: builtins/read.def:827
 #, c-format
 msgid "read error: %d: %s"
 msgstr "okuma hatası: %d: %s"
@@ -848,7 +849,7 @@ msgstr "yalnızca bir işlev veya betikten kaynaklı olarak `return' yapılabili
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "bir işlev ve bir değişken aynı anda unset yapılamaz"
 
-#: builtins/set.def:966
+#: builtins/set.def:969
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: bir dizi değişkeni değil"
@@ -867,11 +868,11 @@ msgstr "%s: export yapılamıyor"
 msgid "shift count"
 msgstr "shift sayısı"
 
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
 msgid "cannot set and unset shell options simultaneously"
 msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez"
 
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: kabuk seçenek adı geçersiz"
@@ -938,16 +939,16 @@ msgstr "%s: sınırlama argümanı geçersiz"
 msgid "`%c': bad command"
 msgstr "`%c': hatalı komut"
 
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: sınır alınamıyor: %s"
 
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
 msgid "limit"
 msgstr "sınır"
 
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: sınır değiştirilemiyor: %s"
@@ -966,7 +967,7 @@ msgstr "`%c': simgesel kip işleci geçersiz"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': simgesel kip karakteri geçersiz"
 
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
 msgid " line "
 msgstr " satır "
 
@@ -986,96 +987,106 @@ msgstr "Çıkılıyor..."
 msgid "INFORM: "
 msgstr "BİLGİLENDİR: "
 
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "HATA-AYIKLAMA uyarısı: "
+
+#: error.c:488
 msgid "unknown command error"
 msgstr "bilinmeyen komut hatası"
 
-#: error.c:463
+#: error.c:489
 msgid "bad command type"
 msgstr "hatalı komut türü"
 
-#: error.c:464
+#: error.c:490
 msgid "bad connector"
 msgstr "hatalı bağlantı"
 
-#: error.c:465
+#: error.c:491
 msgid "bad jump"
 msgstr "hatalı sıçrama"
 
-#: error.c:503
+#: error.c:529
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: bağlanmamış değişken"
 
-#: eval.c:242
+#: eval.c:243
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\agirdi beklerken zamanaşımı: auto-logout\n"
 
-#: execute_cmd.c:537
+#: execute_cmd.c:555
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "/dev/null'dan standart girdiye yönlendirme yapılamaz: %s"
 
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz"
 
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr "execute_coproc: coproc [%d:%s] hala mevcut"
 
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
 msgid "pipe error"
 msgstr "iletişim tüneli hatası"
 
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)"
 
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)"
 
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: azami işlev yuvalama sınırı aşıldı (%d)"
 
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız"
 
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: komut yok"
 
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: çalıştırılamıyor: gerekli dosya bulunamadı"
+
+#: execute_cmd.c:6000
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: hatalı yorumlayıcı"
 
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: ikili dosya çalıştırılamıyor: %s"
 
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s: bir kabuk yerleşiğidir"
 
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "fd %d, fd %d olarak yinelenemiyor"
@@ -1088,68 +1099,68 @@ msgstr "ifade özyineleme düzeyi aşıldı"
 msgid "recursion stack underflow"
 msgstr "özyineleme yığını alttan taştı"
 
-#: expr.c:477
+#: expr.c:478
 msgid "syntax error in expression"
 msgstr "ifadede sözdizim hatası"
 
-#: expr.c:521
+#: expr.c:522
 msgid "attempted assignment to non-variable"
 msgstr "değişken olmayana atama yapmaya çalışıldı"
 
-#: expr.c:530
+#: expr.c:531
 msgid "syntax error in variable assignment"
 msgstr "değişken atamada sözdizim hatası"
 
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
 msgid "division by 0"
 msgstr "sıfırla bölme"
 
-#: expr.c:592
+#: expr.c:593
 msgid "bug: bad expassign token"
 msgstr "yazılım hatası: bad expassign token"
 
-#: expr.c:646
+#: expr.c:647
 msgid "`:' expected for conditional expression"
 msgstr "koşullu ifade için `:' bekleniyordu"
 
-#: expr.c:972
+#: expr.c:973
 msgid "exponent less than 0"
 msgstr "üs sıfırdan küçük"
 
-#: expr.c:1029
+#: expr.c:1030
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu"
 
-#: expr.c:1056
+#: expr.c:1057
 msgid "missing `)'"
 msgstr "eksik `)'"
 
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
 msgid "syntax error: operand expected"
 msgstr "sözdizim hatası: terim umuluyordu"
 
-#: expr.c:1489
+#: expr.c:1494
 msgid "syntax error: invalid arithmetic operator"
 msgstr "sözdizim hatası: geçersiz aritmetik işleci"
 
-#: expr.c:1513
+#: expr.c:1518
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (hata belirtisi \"%s\")"
 
-#: expr.c:1573
+#: expr.c:1578
 msgid "invalid arithmetic base"
 msgstr "geçersiz sayı tabanı"
 
-#: expr.c:1582
+#: expr.c:1587
 msgid "invalid integer constant"
 msgstr "geçersiz tamsayı sabiti"
 
-#: expr.c:1598
+#: expr.c:1603
 msgid "value too great for base"
 msgstr "değer taban için fazla büyük"
 
-#: expr.c:1647
+#: expr.c:1652
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: ifade hatası\n"
@@ -1158,7 +1169,7 @@ msgstr "%s: ifade hatası\n"
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: üst dizinlere erişilemiyor"
 
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor"
@@ -1177,167 +1188,167 @@ msgstr "save_bash_input: yeni fd %d için tampon zaten var"
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp iletişim tüneli"
 
-#: jobs.c:906
+#: jobs.c:907
 #, c-format
 msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
 msgstr ""
 
-#: jobs.c:959
+#: jobs.c:960
 #, c-format
 msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
 msgstr ""
 
-#: jobs.c:1283
+#: jobs.c:1279
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "çatallanan pid %d, çalışan iş %d içinde görünüyor"
 
-#: jobs.c:1402
+#: jobs.c:1397
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "durdurulan %2$ld süreç gruplu iş %1$d  siliniyor"
 
-#: jobs.c:1511
+#: jobs.c:1502
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: %5ld (%s) program kimliği hala canlı olarak işaretli"
 
-#: jobs.c:1850
+#: jobs.c:1839
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: böyle bir pid yok"
 
-#: jobs.c:1865
+#: jobs.c:1854
 #, c-format
 msgid "Signal %d"
 msgstr "Sinyal %d"
 
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
 msgid "Done"
 msgstr "Bitti"
 
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
 msgid "Stopped"
 msgstr "Durdu"
 
-#: jobs.c:1888
+#: jobs.c:1877
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Durdu(%s)"
 
-#: jobs.c:1892
+#: jobs.c:1881
 msgid "Running"
 msgstr "Çalışıyor"
 
-#: jobs.c:1909
+#: jobs.c:1898
 #, c-format
 msgid "Done(%d)"
 msgstr "Bitti(%d)"
 
-#: jobs.c:1911
+#: jobs.c:1900
 #, c-format
 msgid "Exit %d"
 msgstr "Çıkış %d"
 
-#: jobs.c:1914
+#: jobs.c:1903
 msgid "Unknown status"
 msgstr "Bilinmeyen durum"
 
-#: jobs.c:2001
+#: jobs.c:1990
 #, c-format
 msgid "(core dumped) "
 msgstr "(çekirdek döküldü) "
 
-#: jobs.c:2020
+#: jobs.c:2009
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:2259
+#: jobs.c:2250
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "alt setpgid (şuradan: %ld şuraya: %ld)"
 
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld bu kabuğun bir alt sürecine ait değil"
 
-#: jobs.c:2893
+#: jobs.c:2884
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: süreç %ld için kayıt yok"
 
-#: jobs.c:3236
+#: jobs.c:3223
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: iş %d durdu"
 
-#: jobs.c:3564
+#: jobs.c:3551
 #, c-format
 msgid "%s: no current jobs"
 msgstr "%s: geçerli iş yok"
 
-#: jobs.c:3571
+#: jobs.c:3558
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: iş sonlanmış"
 
-#: jobs.c:3580
+#: jobs.c:3567
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: iş %d zaten artalanda"
 
-#: jobs.c:3806
+#: jobs.c:3793
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor"
 
-#: jobs.c:4320
+#: jobs.c:4307
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: satır %d: "
 
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
 #, c-format
 msgid " (core dumped)"
 msgstr " (çekirdek döküldü)"
 
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd artık: %s)\n"
 
-#: jobs.c:4391
+#: jobs.c:4378
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp başarısız"
 
-#: jobs.c:4447
+#: jobs.c:4434
 msgid "initialize_job_control: no job control in background"
 msgstr "initialize_job_control: arka planda iş denetimi yok"
 
-#: jobs.c:4463
+#: jobs.c:4450
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: satır düzeni"
 
-#: jobs.c:4473
+#: jobs.c:4460
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
 #, c-format
 msgid "cannot set terminal process group (%d)"
-msgstr "uçbirim süreç grunu (%d) ayarlanamaz"
+msgstr "uçbirim süreç grubu (%d) ayarlanamaz"
 
-#: jobs.c:4508
+#: jobs.c:4495
 msgid "no job control in this shell"
 msgstr "bu kabukta iş denetimi yok"
 
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: kanaat doğrulaması başarısız: %s\n"
 
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
 #, c-format
 msgid ""
 "\r\n"
@@ -1346,47 +1357,47 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: kanaat doğrulaması battı\r\n"
 
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
 msgid "unknown"
 msgstr "bilinmeyen"
 
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: serbest bırakılmış liste üstünde blok üste yazdı"
 
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
 msgid "free: called with already freed block argument"
 msgstr "free: zaten serbest bırakılmış blok argümanı ile çağrıldı"
 
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
 msgid "free: called with unallocated block argument"
 msgstr "free: ayrılmamış blok argümanı ile çağrıldı"
 
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında"
 
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
 msgid "free: underflow detected; magic8 corrupted"
 msgstr "free: alttan taşma saptandı; magic8 hasarlı"
 
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
 msgid "free: start and end chunk sizes differ"
 msgstr "free: başlangıç ve son tomar boyutları farklı"
 
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: ayrılmamış blok argümanı ile çağrıldı"
 
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında"
 
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
 msgid "realloc: underflow detected; magic8 corrupted"
 msgstr "realloc: alttan taşma saptandı; magic8 hasarlı"
 
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: başlangıç ve son tomar boyutları farklı"
 
@@ -1428,22 +1439,22 @@ msgstr "%s: hatalı ağ yolu belirtimi"
 msgid "network operations not supported"
 msgstr "desteklenmeyen ağ işlemleri"
 
-#: locale.c:217
+#: locale.c:219
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: (%s) diline değiştirilemedi"
 
-#: locale.c:219
+#: locale.c:221
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: şu dile (%s) değiştirilemedi: %s"
 
-#: locale.c:292
+#: locale.c:294
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: yerel (%s) değiştirilemiyor"
 
-#: locale.c:294
+#: locale.c:296
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: yerel (%s) değiştirilemiyor: %s"
@@ -1461,136 +1472,136 @@ msgstr "$_'de yeni postanız var"
 msgid "The mail in %s has been read\n"
 msgstr "%s'deki posta okundu\n"
 
-#: make_cmd.c:317
+#: make_cmd.c:314
 msgid "syntax error: arithmetic expression required"
 msgstr "sözdizim hatası: aritmetik ifadesi gerekli"
 
-#: make_cmd.c:319
+#: make_cmd.c:316
 msgid "syntax error: `;' unexpected"
 msgstr "sözdizim hatası: `;' beklenmiyordu"
 
-#: make_cmd.c:320
+#: make_cmd.c:317
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "sözdizim hatası: `((%s))'"
 
-#: make_cmd.c:572
+#: make_cmd.c:569
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: hatalı yönerge türü %d"
 
-#: make_cmd.c:657
+#: make_cmd.c:668
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')"
 
-#: make_cmd.c:756
+#: make_cmd.c:769
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında"
 
-#: parse.y:2393
+#: parse.y:2428
 #, c-format
 msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
 msgstr "shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): satır kırpıldı"
 
-#: parse.y:2826
+#: parse.y:2921
 msgid "maximum here-document count exceeded"
 msgstr "en fazla buraya belge sayısı aşıldı"
 
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "`%c' için eşleşme aranırken beklenmedik dosya sonu"
 
-#: parse.y:4696
+#: parse.y:4452
 msgid "unexpected EOF while looking for `]]'"
 msgstr "`]]' aranırken beklenmedik dosya sonu"
 
-#: parse.y:4701
+#: parse.y:4457
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "koşullu ifadede sözdizim hatası: beklenmedik jeton `%s'"
 
-#: parse.y:4705
+#: parse.y:4461
 msgid "syntax error in conditional expression"
 msgstr "koşullu ifadede sözdizim hatası"
 
-#: parse.y:4783
+#: parse.y:4539
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "beklenmedik jeton `%s', `)' umuluyordu"
 
-#: parse.y:4787
+#: parse.y:4543
 msgid "expected `)'"
 msgstr "`)' umuluyordu"
 
-#: parse.y:4815
+#: parse.y:4571
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "koşullu tek terimli işlece beklenmedik argüman `%s'"
 
-#: parse.y:4819
+#: parse.y:4575
 msgid "unexpected argument to conditional unary operator"
 msgstr "koşullu tek terimli işlece beklenmedik argüman"
 
-#: parse.y:4865
+#: parse.y:4621
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "beklenmedik jeton `%s', koşullu iki terimli işleç umuluyordu"
 
-#: parse.y:4869
+#: parse.y:4625
 msgid "conditional binary operator expected"
 msgstr "koşullu iki terimli işleç umuluyordu"
 
-#: parse.y:4891
+#: parse.y:4647
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "koşullu iki terimli işlece beklenmedik argüman `%s'"
 
-#: parse.y:4895
+#: parse.y:4651
 msgid "unexpected argument to conditional binary operator"
 msgstr "koşullu iki terimli işlece beklenmedik argüman"
 
-#: parse.y:4906
+#: parse.y:4662
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "koşullu komutta beklenmeyen jeton `%c'"
 
-#: parse.y:4909
+#: parse.y:4665
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "koşullu komutta beklenmeyen jeton `%s'"
 
-#: parse.y:4913
+#: parse.y:4669
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "koşullu komutta beklenmeyen jeton %d"
 
-#: parse.y:6336
+#: parse.y:6118
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "beklenmeyen jeton `%s' yakınında sözdizim hatası"
 
-#: parse.y:6355
+#: parse.y:6137
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "`%s' yakınında sözdizim hatası"
 
-#: parse.y:6365
+#: parse.y:6151
 msgid "syntax error: unexpected end of file"
 msgstr "sözdizim hatası: beklenmeyen dosya sonu"
 
-#: parse.y:6365
+#: parse.y:6151
 msgid "syntax error"
 msgstr "sözdizim hatası"
 
-#: parse.y:6428
+#: parse.y:6216
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Kabuğu bırakmak için \"%s\" kullanın.\n"
 
-#: parse.y:6602
+#: parse.y:6394
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "`)' için eşleşme aranırken beklenmedik dosya sonu"
 
@@ -1628,94 +1639,94 @@ msgstr "xtrace_set: BOŞ dosya işaretçisi"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1540
+#: print_cmd.c:1545
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': geçersiz biçim karakteri"
 
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
 msgid "file descriptor out of range"
 msgstr "dosya tanıtıcı aralık dışında"
 
-#: redir.c:204
+#: redir.c:205
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: belirsiz yönlendirme"
 
-#: redir.c:208
+#: redir.c:209
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: mevcut dosyanın üzerine yazılamıyor"
 
-#: redir.c:213
+#: redir.c:214
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: kısıtlı: çıktı yönlendirilemiyor"
 
-#: redir.c:218
+#: redir.c:219
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "belge için geçici dosya oluşturulamıyor: %s"
 
-#: redir.c:222
+#: redir.c:223
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: fd değişkene atanamıyor"
 
-#: redir.c:649
+#: redir.c:650
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port ağ olmaksızın desteklenmiyor"
 
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
 msgid "redirection error: cannot duplicate fd"
 msgstr "yönlendirme hatası: fd yinelenemiyor"
 
-#: shell.c:347
+#: shell.c:353
 msgid "could not find /tmp, please create!"
 msgstr "/tmp bulunamadı, lütfen oluşturun!"
 
-#: shell.c:351
+#: shell.c:357
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp geçerli bir dizinin adı olmalıdır"
 
-#: shell.c:804
+#: shell.c:826
 msgid "pretty-printing mode ignored in interactive shells"
 msgstr ""
 
-#: shell.c:948
+#: shell.c:972
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: geçersiz seçenek"
 
-#: shell.c:1319
+#: shell.c:1343
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "uid %d olarak ayarlanamıyor: etkin uid %d"
 
-#: shell.c:1330
+#: shell.c:1354
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "gid %d olarak ayarlanamıyor: etkin gid %d"
 
-#: shell.c:1518
+#: shell.c:1544
 msgid "cannot start debugger; debugging mode disabled"
 msgstr "hata ayıklayıcı başlatılamadı, hata ayıklama devre dışı"
 
-#: shell.c:1632
+#: shell.c:1658
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: Bir dizin"
 
-#: shell.c:1881
+#: shell.c:1907
 msgid "I have no name!"
 msgstr "Adsızım ben!"
 
-#: shell.c:2035
+#: shell.c:2061
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, sürüm %s-(%s)\n"
 
-#: shell.c:2036
+#: shell.c:2062
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1724,319 +1735,319 @@ msgstr ""
 "Kullanım:\t%s [GNU uzun seçeneği] [seçenek] ...\n"
 "\t%s [GNU uzun seçeneği] [seçenek] betik-dosyası ...\n"
 
-#: shell.c:2038
+#: shell.c:2064
 msgid "GNU long options:\n"
 msgstr "GNU uzun seçenekleri:\n"
 
-#: shell.c:2042
+#: shell.c:2068
 msgid "Shell options:\n"
 msgstr "Kabuk seçenekleri:\n"
 
-#: shell.c:2043
+#: shell.c:2069
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(yalnızca çağrı için)\n"
 
-#: shell.c:2062
+#: shell.c:2088
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s veya -o seçeneği\n"
 
-#: shell.c:2068
+#: shell.c:2094
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' yazın.\n"
 
-#: shell.c:2069
+#: shell.c:2095
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n"
 
-#: shell.c:2070
+#: shell.c:2096
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 "Yazılım hatalarını raporlamak için `bashbug' komutunu kullanınız.\n"
 "Çeviri hatalarını ise <gnu-tr@belgeler.org> adresine bildiriniz.\n"
 
-#: shell.c:2072
+#: shell.c:2098
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "bash ana sayfası: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:2073
+#: shell.c:2099
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "GNU yazılımı kullanımı hakkında genel yardım: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:757
+#: sig.c:765
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: geçersiz işlem"
 
-#: siglist.c:47
+#: siglist.c:48
 msgid "Bogus signal"
 msgstr "Bogus sinyali"
 
-#: siglist.c:50
+#: siglist.c:51
 msgid "Hangup"
 msgstr "Engelle"
 
-#: siglist.c:54
+#: siglist.c:55
 msgid "Interrupt"
 msgstr "Kes"
 
-#: siglist.c:58
+#: siglist.c:59
 msgid "Quit"
 msgstr "Çık"
 
-#: siglist.c:62
+#: siglist.c:63
 msgid "Illegal instruction"
 msgstr "Geçersiz talimat"
 
-#: siglist.c:66
+#: siglist.c:67
 msgid "BPT trace/trap"
 msgstr "BPT izle/tuzak"
 
-#: siglist.c:74
+#: siglist.c:75
 msgid "ABORT instruction"
 msgstr "Talimatı DURDUR"
 
-#: siglist.c:78
+#: siglist.c:79
 msgid "EMT instruction"
 msgstr "EMT talimatı"
 
-#: siglist.c:82
+#: siglist.c:83
 msgid "Floating point exception"
 msgstr "Kayan nokta istisnası"
 
-#: siglist.c:86
+#: siglist.c:87
 msgid "Killed"
 msgstr "Öldürüldü"
 
-#: siglist.c:90
+#: siglist.c:91
 msgid "Bus error"
 msgstr "Veriyolu hatası"
 
-#: siglist.c:94
+#: siglist.c:95
 msgid "Segmentation fault"
 msgstr "Bölünme hatası"
 
-#: siglist.c:98
+#: siglist.c:99
 msgid "Bad system call"
 msgstr "Bozuk sistem çağırımı"
 
-#: siglist.c:102
+#: siglist.c:103
 msgid "Broken pipe"
 msgstr "Bozuk iletişim tüneli"
 
-#: siglist.c:106
+#: siglist.c:107
 msgid "Alarm clock"
 msgstr "Çalar saat"
 
-#: siglist.c:110
+#: siglist.c:111
 msgid "Terminated"
 msgstr "Sonlandırıldı"
 
-#: siglist.c:114
+#: siglist.c:115
 msgid "Urgent IO condition"
 msgstr "Acil GÇ koşulu"
 
-#: siglist.c:118
+#: siglist.c:119
 msgid "Stopped (signal)"
 msgstr "Durduruldu (sinyal)"
 
-#: siglist.c:126
+#: siglist.c:127
 msgid "Continue"
 msgstr "Devam et"
 
-#: siglist.c:134
+#: siglist.c:135
 msgid "Child death or stop"
 msgstr "Alt ölümü veya durdurulma"
 
-#: siglist.c:138
+#: siglist.c:139
 msgid "Stopped (tty input)"
 msgstr "Durduruldu (tty girişi)"
 
-#: siglist.c:142
+#: siglist.c:143
 msgid "Stopped (tty output)"
 msgstr "Durduruldu (tty çıkışı)"
 
-#: siglist.c:146
+#: siglist.c:147
 msgid "I/O ready"
 msgstr "G/Ç hazır"
 
-#: siglist.c:150
+#: siglist.c:151
 msgid "CPU limit"
 msgstr "CPU sınırı"
 
-#: siglist.c:154
+#: siglist.c:155
 msgid "File limit"
 msgstr "Dosya sınırı"
 
-#: siglist.c:158
+#: siglist.c:159
 msgid "Alarm (virtual)"
 msgstr "Alarm (sanal)"
 
-#: siglist.c:162
+#: siglist.c:163
 msgid "Alarm (profile)"
 msgstr "Alarm (profil)"
 
-#: siglist.c:166
+#: siglist.c:167
 msgid "Window changed"
 msgstr "Pencere değiştirildi"
 
-#: siglist.c:170
+#: siglist.c:171
 msgid "Record lock"
 msgstr "Kayıt kilidi"
 
-#: siglist.c:174
+#: siglist.c:175
 msgid "User signal 1"
 msgstr "Kullanıcı sinyali 1"
 
-#: siglist.c:178
+#: siglist.c:179
 msgid "User signal 2"
 msgstr "Kullanıcı sinyali 2"
 
-#: siglist.c:182
+#: siglist.c:183
 msgid "HFT input data pending"
 msgstr "HFT girdi verisi bekliyor"
 
-#: siglist.c:186
+#: siglist.c:187
 msgid "power failure imminent"
 msgstr "yakın güç başarısızlığı"
 
-#: siglist.c:190
+#: siglist.c:191
 msgid "system crash imminent"
 msgstr "yakın sistem çökmesi"
 
-#: siglist.c:194
+#: siglist.c:195
 msgid "migrate process to another CPU"
 msgstr "süreci başka bir işlemciye aktar"
 
-#: siglist.c:198
+#: siglist.c:199
 msgid "programming error"
 msgstr "programlama hatası"
 
-#: siglist.c:202
+#: siglist.c:203
 msgid "HFT monitor mode granted"
 msgstr "HFT izleyici kipine geçildi"
 
-#: siglist.c:206
+#: siglist.c:207
 msgid "HFT monitor mode retracted"
 msgstr "HFT izleyici kipi kapatıldı"
 
-#: siglist.c:210
+#: siglist.c:211
 msgid "HFT sound sequence has completed"
 msgstr "HFT ses sırası tamamlandı"
 
-#: siglist.c:214
+#: siglist.c:215
 msgid "Information request"
 msgstr "Bilgi talebi"
 
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
 #, c-format
 msgid "Unknown Signal #%d"
 msgstr "Bilinmeyen Sinyal #%d"
 
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok"
 
-#: subst.c:3281
+#: subst.c:3307
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: dizi üyesine liste atanamaz"
 
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
 msgid "cannot make pipe for process substitution"
 msgstr "süreç ikamesi için borulama yapılamıyor"
 
-#: subst.c:5985
+#: subst.c:6124
 msgid "cannot make child for process substitution"
 msgstr "süreç ikamesi için alt süreç yapılamıyor"
 
-#: subst.c:6059
+#: subst.c:6198
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "adlı boru %s okumak için açılamıyor"
 
-#: subst.c:6061
+#: subst.c:6200
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "adlı boru %s yazmak için açılamıyor"
 
-#: subst.c:6084
+#: subst.c:6223
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "adlı boru %s fd %d olarak yinelenemiyor"
 
-#: subst.c:6213
+#: subst.c:6370
 msgid "command substitution: ignored null byte in input"
 msgstr "komut ikamesi: girdideki null bayt yok sayıldı"
 
-#: subst.c:6353
+#: subst.c:6533
 msgid "cannot make pipe for command substitution"
 msgstr "komut ikamesi için boru yapılamıyor"
 
-#: subst.c:6397
+#: subst.c:6580
 msgid "cannot make child for command substitution"
 msgstr "komut ikamesi için alt süreç yapılamıyor"
 
-#: subst.c:6423
+#: subst.c:6613
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: boru fd 1 olarak yinelenemiyor"
 
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer"
 
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: geçersiz dolaylı yayılım"
 
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: geçersiz değişken adı"
 
-#: subst.c:7256
+#: subst.c:7478
 #, c-format
 msgid "%s: parameter not set"
 msgstr "%s: parametre ayarlanmamış"
 
-#: subst.c:7258
+#: subst.c:7480
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametre boş veya değer atanmamış"
 
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: altdizi ifadesi < 0"
 
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
 #, c-format
 msgid "%s: bad substitution"
 msgstr "%s: hatalı ikame"
 
-#: subst.c:9390
+#: subst.c:9678
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: bu yolla atama yapılmaz"
 
-#: subst.c:9814
+#: subst.c:10111
 msgid "future versions of the shell will force evaluation as an arithmetic substitution"
 msgstr "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye zorlayacak"
 
-#: subst.c:10367
+#: subst.c:10795
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "hatalı ikame: %s içinde kapatan \"`\" yok"
 
-#: subst.c:11434
+#: subst.c:11874
 #, c-format
 msgid "no match: %s"
 msgstr "eşleşme yok: %s"
@@ -2059,21 +2070,21 @@ msgstr "`)' bekleniyordu"
 msgid "`)' expected, found %s"
 msgstr "`)' bekleniyordu, %s bulundu"
 
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: iki terimli işleci bekleniyordu"
 
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: tek terimli işleci bekleniyordu"
 
-#: test.c:881
+#: test.c:896
 msgid "missing `]'"
 msgstr "eksik `]'"
 
-#: test.c:899
+#: test.c:914
 #, c-format
 msgid "syntax error: `%s' unexpected"
 msgstr "sözdizim hatası: '%s' beklenmiyordu"
@@ -2082,99 +2093,104 @@ msgstr "sözdizim hatası: '%s' beklenmiyordu"
 msgid "invalid signal number"
 msgstr "geçersiz sinyal numarası"
 
-#: trap.c:325
+#: trap.c:323
 #, c-format
 msgid "trap handler: maximum trap handler level exceeded (%d)"
 msgstr "tuzak işleyicisi: en yüksek tuzak işleyicisi düzeyi aşıldı (%d)"
 
-#: trap.c:414
+#: trap.c:412
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps:trap_list[%d] içinde hatalı değer: %p"
 
-#: trap.c:418
+#: trap.c:416
 #, c-format
 msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek"
 
-#: trap.c:487
+#: trap.c:509
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler:hatalı sinyal %d"
 
-#: variables.c:421
+#: variables.c:424
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "`%s'nin işlev tanımının içeri aktarılmasında hata"
 
-#: variables.c:833
+#: variables.c:838
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "kabuk düzeyi (%d) çok yüksek, 1 yapılıyor"
 
-#: variables.c:2674
+#: variables.c:2642
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: geçerli etki alanında hiç işlev bağlamı yok"
 
-#: variables.c:2693
+#: variables.c:2661
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: değişkene değer atanmamış olabilir"
 
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr "%s: ad başvurusuna tamsayı ataması"
 
-#: variables.c:4404
+#: variables.c:4390
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: geçerli etki alanında hiç işlev bağlamı yok"
 
-#: variables.c:4771
+#: variables.c:4757
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s boş exportstr içeriyor"
 
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "%2$s için exportstr içinde geçersiz karakter %1$d"
 
-#: variables.c:4791
+#: variables.c:4777
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "%s için exportstr içinde `=' yok"
 
-#: variables.c:5331
+#: variables.c:5317
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: kabuk değişkenlerinin başı bir işlev bağlamı değil"
 
-#: variables.c:5344
+#: variables.c:5330
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: genel değişkenler bağlamı yok"
 
-#: variables.c:5424
+#: variables.c:5410
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil"
 
-#: variables.c:6387
+#: variables.c:6400
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: DOSYA olarak açılamaz"
 
-#: variables.c:6392
+#: variables.c:6405
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: dosya izleme tanımlayıcısı için geçersiz değer"
 
-#: variables.c:6437
+#: variables.c:6450
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: uyumlulukdeğeri aralık dışı"
 
 #: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Telif hakkı (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Telif hakkı (C) 2022 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2254,11 +2270,15 @@ msgid "command [-pVv] command [arg ...]"
 msgstr "command [-pVv] command [arg ...]"
 
 #: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+#| msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
 msgstr "declare [-aAfFgiIlnrtux] [-p] [ad[=değer] ...]"
 
 #: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+#, fuzzy
+#| msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
 msgstr "typeset [-aAfFgiIlnrtux] [-p] ad[=değer] ..."
 
 #: builtins.c:82
@@ -2346,7 +2366,9 @@ msgid "return [n]"
 msgstr "return [n]"
 
 #: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+#| msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
 msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
 
 #: builtins.c:144
@@ -2394,7 +2416,9 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] ad [ad ...]"
 
 #: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+#| msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
 msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [sınır]"
 
 #: builtins.c:174
@@ -2434,11 +2458,15 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
 msgstr "if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else KOMUTLAR; ] fi"
 
 #: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+#| msgid "while COMMANDS; do COMMANDS; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
 msgstr "while KOMUTLAR; do KOMUTLAR; done"
 
 #: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+#| msgid "until COMMANDS; do COMMANDS; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
 msgstr "until KOMUTLAR; do KOMUTLAR; done"
 
 #: builtins.c:200
@@ -3871,7 +3899,8 @@ msgid ""
 "    splitting, and the first word is assigned to the first NAME, the second\n"
 "    word to the second NAME, and so on, with any leftover words assigned to\n"
 "    the last NAME.  Only the characters found in $IFS are recognized as word\n"
-"    delimiters.\n"
+"    delimiters. By default, the backslash character escapes delimiter characters\n"
+"    and newline.\n"
 "    \n"
 "    If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
 "    \n"
@@ -3908,7 +3937,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1041
+#: builtins.c:1042
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3928,7 +3957,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    N veya kabul bir işlev veya betik çalıştırmıyorsa başarısız döner."
 
-#: builtins.c:1054
+#: builtins.c:1055
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4100,7 +4129,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Geçersiz seçenek belirtilmediği sürece başarılı döner."
 
-#: builtins.c:1139
+#: builtins.c:1140
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4121,7 +4150,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1161
+#: builtins.c:1162
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4139,7 +4168,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1180
+#: builtins.c:1181
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4160,7 +4189,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1202
+#: builtins.c:1203
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4171,7 +4200,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4197,7 +4226,7 @@ msgstr ""
 "    DOSYAİSMİnde çalıştırılan son komutun durumunu döndürür. DOSYAİSMİ\n"
 "    okunamazsa başarısız döner."
 
-#: builtins.c:1245
+#: builtins.c:1246
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4211,7 +4240,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1261
+#: builtins.c:1262
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4367,7 +4396,7 @@ msgstr ""
 "    Eğer İFADE true olursa başarılı, İFADE false ile sonuçlanırsa veya geçersiz\n"
 "    argümanda başarısız döner."
 
-#: builtins.c:1343
+#: builtins.c:1344
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4379,7 +4408,7 @@ msgstr ""
 "    \"test\" yerleşiği ile aynıdır, fakat son argüman açan `[' ile eşleşen\n"
 "   kapatan `]' olmak zorundadır."
 
-#: builtins.c:1352
+#: builtins.c:1353
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4397,7 +4426,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Her zaman başarılı döner."
 
-#: builtins.c:1364
+#: builtins.c:1365
 #, fuzzy
 msgid ""
 "Trap signals and other events.\n"
@@ -4449,7 +4478,7 @@ msgstr ""
 "    numaraları  ile  birlikte  listelemesini  sağlar.  Kabuğa  bir  sinyal\n"
 "    göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz."
 
-#: builtins.c:1400
+#: builtins.c:1401
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4478,7 +4507,7 @@ msgid ""
 "    Returns success if all of the NAMEs are found; fails if any are not found."
 msgstr ""
 
-#: builtins.c:1431
+#: builtins.c:1432
 #, fuzzy
 #| msgid ""
 #| "Modify shell resource limits.\n"
@@ -4614,7 +4643,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner."
 
-#: builtins.c:1482
+#: builtins.c:1483
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4632,7 +4661,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1502
+#: builtins.c:1503
 #, fuzzy
 #| msgid ""
 #| "Wait for job completion and return exit status.\n"
@@ -4687,7 +4716,7 @@ msgstr ""
 "    Kimlik durumunu döndürür, kimlik geçersizse veya geçersiz bir seçenek verilmişse\n"
 "    başarısız olur."
 
-#: builtins.c:1533
+#: builtins.c:1534
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4709,7 +4738,7 @@ msgstr ""
 "    Son PID'nin durumunu döndürür, PID geçersizse veya geçersiz bir seçenek verilmişse\n"
 "    başarısız olur."
 
-#: builtins.c:1548
+#: builtins.c:1549
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4730,7 +4759,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1562
+#: builtins.c:1563
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4760,7 +4789,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1580
+#: builtins.c:1581
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4795,7 +4824,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1601
+#: builtins.c:1602
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4823,7 +4852,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    VERİYOLU döndürme değerini döndürür."
 
-#: builtins.c:1618
+#: builtins.c:1619
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4841,7 +4870,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1630
+#: builtins.c:1631
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4868,12 +4897,21 @@ msgstr ""
 "    doğru sonuç vermemişse sıfır döner.     Çıkış Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
+#| msgid ""
+#| "Execute commands as long as a test succeeds.\n"
+#| "    \n"
+#| "    Expand and execute COMMANDS as long as the final command in the\n"
+#| "    `while' COMMANDS has an exit status of zero.\n"
+#| "    \n"
+#| "    Exit Status:\n"
+#| "    Returns the status of the last command executed."
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero.\n"
+"    Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+"    an exit status of zero.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
@@ -4886,12 +4924,21 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    En son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
+#| msgid ""
+#| "Execute commands as long as a test does not succeed.\n"
+#| "    \n"
+#| "    Expand and execute COMMANDS as long as the final command in the\n"
+#| "    `until' COMMANDS has an exit status which is not zero.\n"
+#| "    \n"
+#| "    Exit Status:\n"
+#| "    Returns the status of the last command executed."
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero.\n"
+"    Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+"    an exit status which is not zero.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
@@ -4904,7 +4951,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1671
+#: builtins.c:1672
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4917,7 +4964,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1685
+#: builtins.c:1686
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4930,7 +4977,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1699
+#: builtins.c:1700
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4948,7 +4995,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1711
+#: builtins.c:1712
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -4972,7 +5019,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Devam edilen görevin durumunu döndürür."
 
-#: builtins.c:1726
+#: builtins.c:1727
 #, fuzzy
 #| msgid ""
 #| "Evaluate arithmetic expression.\n"
@@ -4999,7 +5046,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    İFADE 0 olursa 1; aksi takdirde 0 döndürür."
 
-#: builtins.c:1738
+#: builtins.c:1739
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5043,7 +5090,7 @@ msgstr ""
 "   Çıkış Durumu:\n"
 "   İFADE değerine göre 0 veya 1."
 
-#: builtins.c:1764
+#: builtins.c:1765
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5156,7 +5203,7 @@ msgstr ""
 "    \t\tgerektiğine karar vermek için kullanılan kalıpların\n"
 "    \t\tikinokta imi ayraçlı listesi.\n"
 
-#: builtins.c:1821
+#: builtins.c:1822
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5214,7 +5261,7 @@ msgstr ""
 "    Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
 "    olmadıkça başarılı döner."
 
-#: builtins.c:1855
+#: builtins.c:1856
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5264,7 +5311,7 @@ msgstr ""
 "    Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
 "    olmadıkça başarılı döner."
 
-#: builtins.c:1885
+#: builtins.c:1886
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5317,7 +5364,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı döner."
 
-#: builtins.c:1916
+#: builtins.c:1917
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
@@ -5337,7 +5384,37 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
+#| msgid ""
+#| "Formats and prints ARGUMENTS under control of the FORMAT.\n"
+#| "    \n"
+#| "    Options:\n"
+#| "      -v var\tassign the output to shell variable VAR rather than\n"
+#| "    \t\tdisplay it on the standard output\n"
+#| "    \n"
+#| "    FORMAT is a character string which contains three types of objects: plain\n"
+#| "    characters, which are simply copied to standard output; character escape\n"
+#| "    sequences, which are converted and copied to the standard output; and\n"
+#| "    format specifications, each of which causes printing of the next successive\n"
+#| "    argument.\n"
+#| "    \n"
+#| "    In addition to the standard format specifications described in printf(1),\n"
+#| "    printf interprets:\n"
+#| "    \n"
+#| "      %b\texpand backslash escape sequences in the corresponding argument\n"
+#| "      %q\tquote the argument in a way that can be reused as shell input\n"
+#| "      %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
+#| "    \t        string for strftime(3)\n"
+#| "    \n"
+#| "    The format is re-used as necessary to consume all of the arguments.  If\n"
+#| "    there are fewer arguments than the format requires,  extra format\n"
+#| "    specifications behave as if a zero value or null string, as appropriate,\n"
+#| "    had been supplied.\n"
+#| "    \n"
+#| "    Exit Status:\n"
+#| "    Returns success unless an invalid option is given or a write or assignment\n"
+#| "    error occurs."
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5356,6 +5433,8 @@ msgid ""
 "    \n"
 "      %b\texpand backslash escape sequences in the corresponding argument\n"
 "      %q\tquote the argument in a way that can be reused as shell input\n"
+"      %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+"    \t\tquoting\n"
 "      %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
 "    \t        string for strftime(3)\n"
 "    \n"
@@ -5396,7 +5475,7 @@ msgstr ""
 "    Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde veya bir\n"
 "    atama hatası oluşmadığı sürece başarılı döner."
 
-#: builtins.c:1971
+#: builtins.c:1974
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5423,7 +5502,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:2001
+#: builtins.c:2004
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5443,7 +5522,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner."
 
-#: builtins.c:2016
+#: builtins.c:2019
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5472,7 +5551,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2047
+#: builtins.c:2050
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5507,7 +5586,7 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2083
+#: builtins.c:2086
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5516,3 +5595,6 @@ msgstr ""
 "Bir dosyadaki satırları bir dizi değişkenine oku.\n"
 "    \n"
 "    `mapfile' ile eşanlamlıdır."
+
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: geçersiz ilişkisel dizilim anahtarı"
index 049f33094efe8405ef879bd9ed456419b3996f39..7c24df629679693509af2fb6c3766001eb0a03b8 100644 (file)
@@ -263,7 +263,13 @@ strip_trailing (char *string, int len, int newlines_only)
     {
       if ((newlines_only && string[len] == '\n') ||
          (!newlines_only && whitespace (string[len])))
-       len--;
+       {
+         len--;
+#ifdef __MSYS__
+         if (newlines_only && string[len + 1] == '\n' && string[len] == '\r')
+           len--;
+#endif
+       }
       else
        break;
     }
diff --git a/subst.c b/subst.c
index fdd056a7e2b98dad5516adbf96ed2473d0ca8046..d4ad52afd15151d05b2f3cd68d12204e8a4c8e86 100644 (file)
--- a/subst.c
+++ b/subst.c
 #include "posixstat.h"
 #include "bashintl.h"
 
+#ifdef __CYGWIN__
+#  define NEED_SH_SETLINEBUF_DECL
+#endif
+
 #include "shell.h"
 #include "parser.h"
 #include "redir.h"
@@ -6744,6 +6748,17 @@ read_comsub (int fd, int quoted, int flags, int *rflag)
              /* If the newline was quoted, remove the quoting char. */
              if (istring[istring_index - 1] == CTLESC)
                --istring_index;
+
+#ifdef __MSYS__
+             if (istring_index > 0 && istring[istring_index - 1] == '\r')
+               {
+                 --istring_index;
+
+                 /* If the carriage return was quoted, remove the quoting char. */
+                 if (istring[istring_index - 1] == CTLESC)
+                   --istring_index;
+               }
+#endif
            }
          else
            break;
@@ -7140,6 +7155,28 @@ command_substitute (char *string, int quoted, int flags)
       goto error_exit;
     }
 
+#ifdef __CYGWIN__
+ /* Passing a pipe through std fds can cause hangs when talking to a
+    non-cygwin child.  Move it.  */
+  if (fildes[0] < 3)
+    {
+      int fd = fcntl (fildes[0], F_DUPFD, 3);
+      close (fildes[0]);
+      fildes[0] = fd;
+    }
+  if (fildes[1] < 3)
+    {
+      int fd = fcntl (fildes[1], F_DUPFD, 3);
+      close (fildes[1]);
+      fildes[1] = fd;
+    }
+  if (fildes[0] < 0 || fildes[1] < 0)
+    {
+      sys_error (_("cannot make pipe for command substitution"));
+      goto error_exit;
+    }
+#endif /* __CYGWIN__ */
+
 #if defined (JOB_CONTROL)
   old_pipeline_pgrp = pipeline_pgrp;
   /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline or
index cf98ca5745e75fb1bf880f17faba6ad571814f6b..6357adf7019fe8cdd3bd5605ac5d5cd20469e094 100644 (file)
@@ -26,6 +26,8 @@
 
 #if defined (HAVE_UNISTD_H)
 #  include <unistd.h>
+extern int optind;
+extern char *optarg;
 #endif
 
 #include "bashansi.h"
@@ -41,9 +43,6 @@
 #define LFLAG  0x0020
 #define XFLAG  0x0040
 
-extern int optind;
-extern char *optarg;
-
 extern char *dist_version;
 extern int patch_level;
 
index fc5913d7878bc855696d599b4585c0c44f166449..54df9203647aa0d06812f2d6f3dd8f2e0daeef27 100755 (executable)
@@ -57,7 +57,7 @@ else
     aix*)
       wl='-Wl,'
       ;;
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
+    mingw* | cygwin* | msys* | pw32* | os2* | cegcc*)
       ;;
     hpux9* | hpux10* | hpux11*)
       wl='-Wl,'
@@ -149,7 +149,7 @@ hardcode_direct=no
 hardcode_minus_L=no
 
 case "$host_os" in
-  cygwin* | mingw* | pw32* | cegcc*)
+  cygwin* | msys* | mingw* | pw32* | cegcc*)
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
@@ -198,7 +198,7 @@ if test "$with_gnu_ld" = yes; then
         ld_shlibs=no
       fi
       ;;
-    cygwin* | mingw* | pw32* | cegcc*)
+    cygwin* | msys* | mingw* | pw32* | cegcc*)
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
       hardcode_libdir_flag_spec='-L$libdir'
@@ -348,7 +348,7 @@ else
       ;;
     bsdi[45]*)
       ;;
-    cygwin* | mingw* | pw32* | cegcc*)
+    cygwin* | msys* | mingw* | pw32* | cegcc*)
       # When not using gcc, we currently assume that we are using
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -533,7 +533,7 @@ case "$host_os" in
   bsdi[45]*)
     library_names_spec='$libname$shrext'
     ;;
-  cygwin* | mingw* | pw32* | cegcc*)
+  cygwin* | msys* | mingw* | pw32* | cegcc*)
     shrext=.dll
     library_names_spec='$libname.dll.a $libname.lib'
     ;;
index 4882a99b4162298f0f8b8fc1e82efbc56986c8a6..c3df351af9f734a7adcec901ad2cd3dca3f713f2 100644 (file)
@@ -494,6 +494,24 @@ cygwin*)
        fi
        ;;
 
+msys*)
+       SHOBJ_LD='$(CC)'
+       SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
+       SHLIB_LIBPREF='msys-'
+       SHLIB_LIBSUFF='dll'
+       SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)'
+       SHLIB_LIBS='$(TERMCAP_LIB)'
+
+       SHLIB_DOT=
+       # For official cygwin releases, DLLVERSION will be defined in the
+       # environment of configure, and will be incremented any time the API
+       # changes in a non-backwards compatible manner.  Otherwise, it is just
+       # SHLIB_MAJOR.
+       if [ -n "$DLLVERSION" ] ; then
+               SHLIB_DLLVERSION="$DLLVERSION"
+       fi
+       ;;
+
 mingw*)
        SHOBJ_LD='$(CC)'
        SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
index 3520ca8ad05d8f2e482ecf85e58ba2a6f2a67749..82ceb48a6cb7ee247de2cb735fe28b0ca1c6e0b8 100644 (file)
@@ -2550,6 +2550,20 @@ set_if_not (const char *name, const char *value)
 {
   SHELL_VAR *v;
 
+#ifdef __MSYS__
+  /* Remove trailing \r from value */
+  {
+    char *tpos;
+    if (value && *value)
+      {
+       tpos = strchr (value, '\0');
+       tpos--;
+       if (*tpos == '\r')
+         *tpos = '\0';
+      }
+  }
+#endif
+
   if (shell_variables == 0)
     create_variable_tables ();