From: Chet Ramey Date: Fri, 16 Feb 2024 15:55:13 +0000 (-0500) Subject: additional error checking for declare; changes for MSYS32; add support for unlocked... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e1dd98a1dba28310c78157070c5566a43ed86ca6;p=thirdparty%2Fbash.git additional error checking for declare; changes for MSYS32; add support for unlocked-io stdio functions; several C23 changes --- diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 77b8ad5aa..117fbd200 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -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 + - declare_invalid_opts: make -A -a and -A +A/-a +a option combinations + invalid + Report from Grisha Levit + + 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 + +lib/malloc/malloc.c,lib/malloc/table.h,lib/sh/strlcpy.c + - fixes for ISO C 23 + Patch from Collin Funk diff --git a/MANIFEST b/MANIFEST index 164b1b75e..9f74b765e 100644 --- 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 diff --git a/bashline.c b/bashline.c index d51693b2e..353e8b1e6 100644 --- a/bashline.c +++ b/bashline.c @@ -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); diff --git a/builtins/declare.def b/builtins/declare.def index eaa5ce254..ed910d577 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -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. */ diff --git a/builtins/fc.def b/builtins/fc.def index 91c4d21a7..d5f7beaa4 100644 --- a/builtins/fc.def +++ b/builtins/fc.def @@ -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) diff --git a/builtins/read.def b/builtins/read.def index fa9730ffd..28491d300 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -88,7 +88,6 @@ $END #ifdef __CYGWIN__ # include -# include #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;;) { diff --git a/config.h.in b/config.h.in index f0c8be79d..c9411fa58 100644 --- a/config.h.in +++ b/config.h.in @@ -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. @@ -510,6 +510,22 @@ #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. */ diff --git a/configure b/configure index 290fdd283..d3ca0ace4 100755 --- 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 +#endif +#ifdef HAVE_SYS_WAIT_H +# include +#endif +#include +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 diff --git a/configure.ac b/configure.ac index c25a8088e..d4ca74e5f 100644 --- a/configure.ac +++ b/configure.ac @@ -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 . -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 index 000000000..7d9f257de --- /dev/null +++ b/cross-build/msys32.cache @@ -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'} diff --git a/general.c b/general.c index 94082fdf8..b395c54fa 100644 --- 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 diff --git a/general.h b/general.h index ecbc88776..b86a4981b 100644 --- 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 #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 index 000000000..659e79869 --- /dev/null +++ b/include/unlocked-io.h @@ -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 . */ + +/* 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 + +# 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 */ diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c index f829d3951..7b2c3f257 100644 --- a/lib/malloc/malloc.c +++ b/lib/malloc/malloc.c @@ -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 diff --git a/lib/malloc/table.h b/lib/malloc/table.h index e7803762a..604fefcc1 100644 --- a/lib/malloc/table.h +++ b/lib/malloc/table.h @@ -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); diff --git a/lib/sh/pathphys.c b/lib/sh/pathphys.c index 39288ed24..94adc8972 100644 --- a/lib/sh/pathphys.c +++ b/lib/sh/pathphys.c @@ -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; diff --git a/lib/sh/strlcpy.c b/lib/sh/strlcpy.c index 787e4c36e..e4fbaabd3 100644 --- a/lib/sh/strlcpy.c +++ b/lib/sh/strlcpy.c @@ -23,7 +23,7 @@ #include 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 index 000000000..ff14f3493 --- /dev/null +++ b/m4/unlocked-io.m4 @@ -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 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]) +]) diff --git a/mksyntax.c b/mksyntax.c index dfc46fa55..f3e6ef510 100644 --- a/mksyntax.c +++ b/mksyntax.c @@ -29,13 +29,13 @@ #ifdef HAVE_UNISTD_H # include +#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 551e03d0d..3e28d24d9 100644 --- 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) diff --git a/po/tr.gmo b/po/tr.gmo index ecd482e3a..505fbe70f 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index f0a7e8428..9593ac45d 100644 --- a/po/tr.po +++ b/po/tr.po @@ -5,78 +5,74 @@ # Nilgün Belma Bugüner , 2006. # Volkan Gezer , 2013, 2014, 2017. # Emir SARI , 2022 +# Muhammet Kara , 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 \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 \n" "Language-Team: Turkish \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 adresine bildiriniz.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bash ana sayfası: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "GNU yazılımı kullanımı hakkında genel yardım: \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 \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ı" diff --git a/stringlib.c b/stringlib.c index 049f33094..7c24df629 100644 --- a/stringlib.c +++ b/stringlib.c @@ -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 fdd056a7e..d4ad52afd 100644 --- a/subst.c +++ b/subst.c @@ -43,6 +43,10 @@ #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 diff --git a/support/bashversion.c b/support/bashversion.c index cf98ca574..6357adf70 100644 --- a/support/bashversion.c +++ b/support/bashversion.c @@ -26,6 +26,8 @@ #if defined (HAVE_UNISTD_H) # include +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; diff --git a/support/config.rpath b/support/config.rpath index fc5913d78..54df92036 100755 --- a/support/config.rpath +++ b/support/config.rpath @@ -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' ;; diff --git a/support/shobj-conf b/support/shobj-conf index 4882a99b4..c3df351af 100644 --- a/support/shobj-conf +++ b/support/shobj-conf @@ -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' diff --git a/variables.c b/variables.c index 3520ca8ad..82ceb48a6 100644 --- a/variables.c +++ b/variables.c @@ -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 ();