#! /bin/sh # # This is patch #1 to gawk 5.1. cd to gawk-5.1.0 and sh this file. # Then remove all the .orig files and rename the directory gawk-5.1.1 # Changes to files that are automatically recreated have been omitted. # They will be recreated the first time you run make. # This includes all the extracted example files in awklib. # First, slight rearranging rm -fr compile config.guess config.rpath config.sub depcomp \ extension/build-aux extension/m4 install-sh missing ylwrap # Next, overwrite files that have been updated completely cat << \EOF | tee ABOUT-NLS > extension/ABOUT-NLS EOF # Now, apply the patch patch -p1 << \EOF diff -urN gawk-5.1.0/aclocal.m4 gawk-5.1.1/aclocal.m4 --- gawk-5.1.0/aclocal.m4 2020-04-14 14:44:51.000000000 +0300 +++ gawk-5.1.1/aclocal.m4 2021-10-28 19:48:25.000000000 +0300 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.2 -*- Autoconf -*- +# generated automatically by aclocal 1.16.4 -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,13 +14,13 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.2], [], +m4_if([$1], [1.16.4], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,74 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.2])dnl +[AM_AUTOMAKE_VERSION([1.16.4])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +# Copyright (C) 2011-2021 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. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +170,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,7 +201,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -332,7 +392,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -400,7 +460,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -464,7 +524,7 @@ [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl @@ -516,6 +576,20 @@ [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This @@ -597,7 +671,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -618,7 +692,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2020 Free Software Foundation, Inc. +# Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -639,7 +713,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -682,7 +756,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -703,12 +777,7 @@ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then @@ -721,7 +790,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -750,7 +819,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -797,7 +866,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -816,7 +885,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -897,7 +966,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2020 Free Software Foundation, Inc. +# Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -957,7 +1026,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -985,7 +1054,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2020 Free Software Foundation, Inc. +# Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1004,7 +1073,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2020 Free Software Foundation, Inc. +# Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1138,6 +1207,7 @@ m4_include([m4/arch.m4]) m4_include([m4/codeset.m4]) m4_include([m4/gettext.m4]) +m4_include([m4/host-cpu-c-abi.m4]) m4_include([m4/iconv.m4]) m4_include([m4/intlmacosx.m4]) m4_include([m4/lcmessage.m4]) diff -urN gawk-5.1.0/array.c gawk-5.1.1/array.c --- gawk-5.1.0/array.c 2020-03-10 09:58:14.000000000 +0200 +++ gawk-5.1.1/array.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2014, 2016, 2018, 2019, 2020, + * Copyright (C) 1986, 1988, 1989, 1991-2014, 2016, 2018-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -111,7 +111,8 @@ symbol->type = Node_var_array; symbol->array_funcs = & null_array_func; symbol->buckets = NULL; - symbol->table_size = symbol->array_size = 0; + symbol->table_size = 0; + symbol->array_size = 0; symbol->array_capacity = 0; symbol->flags = 0; @@ -709,7 +710,7 @@ n->stfmt == STFMT_UNUSED ? "" : fmt_list[n->stfmt]->stptr); #ifdef HAVE_MPFR - fprintf(output_fp, ", RNDMODE=\"%c\"", n->strndmode); + fprintf(output_fp, ", ROUNDMODE=\"%c\"", n->strndmode); #endif } @@ -801,6 +802,7 @@ unsigned long num_elems, i; const char *sort_str; char save; + const char *name = (ctxt == ASORT ? "asort" : "asorti"); // D.R.Y. if (nargs == 3) /* 3rd optional arg */ s = POP_STRING(); @@ -821,33 +823,38 @@ if (nargs >= 2) { /* 2nd optional arg */ dest = POP_PARAM(); if (dest->type != Node_var_array) { - fatal(_("%s: second argument is not an array"), - ctxt == ASORT ? "asort" : "asorti"); + fatal(_("%s: second argument is not an array"), name); } + check_symtab_functab(dest, name, + _("%s: cannot use %s as second argument")); } array = POP_PARAM(); if (array->type != Node_var_array) { - fatal(_("%s: first argument is not an array"), - ctxt == ASORT ? "asort" : "asorti"); + fatal(_("%s: first argument is not an array"), name); } - else if (array == symbol_table) - fatal(_("%s: first argument cannot be SYMTAB"), - ctxt == ASORT ? "asort" : "asorti"); - else if (array == func_table) - fatal(_("%s: first argument cannot be FUNCTAB"), - ctxt == ASORT ? "asort" : "asorti"); + else if (array == symbol_table && dest == NULL) + fatal(_("%s: first argument cannot be SYMTAB without a second argument"), name); + else if (array == func_table && dest == NULL) + fatal(_("%s: first argument cannot be FUNCTAB without a second argument"), name); if (dest != NULL) { + static bool warned = false; + + if (nargs == 2 && array == dest && ! warned) { + warned = true; + lintwarn(_("asort/asorti: using the same array as source and destination without " + "a third argument is silly.")); + } for (r = dest->parent_array; r != NULL; r = r->parent_array) { if (r == array) fatal(_("%s: cannot use a subarray of first argument for second argument"), - ctxt == ASORT ? "asort" : "asorti"); + name); } for (r = array->parent_array; r != NULL; r = r->parent_array) { if (r == dest) fatal(_("%s: cannot use a subarray of second argument for first argument"), - ctxt == ASORT ? "asort" : "asorti"); + name); } } @@ -906,7 +913,15 @@ if (r->type == Node_val) value = dupnode(r); - else { + else if (r->type == Node_var) + /* SYMTAB ... */ + value = dupnode(r->var_value); + else if (r->type == Node_builtin_func + || r->type == Node_func + || r->type == Node_ext_func) { + /* FUNCTAB ... */ + value = make_string(r->vname, strlen(r->vname)); + } else { NODE *arr; arr = make_array(); subs = force_string(subs); diff -urN gawk-5.1.0/awkgram.y gawk-5.1.1/awkgram.y --- gawk-5.1.0/awkgram.y 2020-04-10 14:45:02.000000000 +0300 +++ gawk-5.1.1/awkgram.y 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2020 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2021 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -35,6 +35,7 @@ #endif static void yyerror(const char *m, ...) ATTRIBUTE_PRINTF_1; +#define YYERROR_IS_DECLARED 1 /* for bison 3.8. sigh. */ static void error_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2; static void lintwarn_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2; static void warning_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2; @@ -167,7 +168,7 @@ const char *current_namespace = awk_namespace; bool namespace_changed = false; -static INSTRUCTION *rule_block[sizeof(ruletab)]; +static INSTRUCTION *rule_block[sizeof(ruletab)/sizeof(ruletab[0])]; static INSTRUCTION *ip_rec; static INSTRUCTION *ip_newfile; @@ -1094,7 +1095,7 @@ { if (! in_function) yyerror(_("`return' used outside function context")); - } opt_exp statement_term { + } opt_fcall_exp statement_term { if (called_from_eval) $1->opcode = Op_K_return_from_eval; @@ -1154,7 +1155,7 @@ if ($3 != NULL) { NODE *n = $3->nexti->nexti->memory; - if (! iszero(n)) + if ((n->flags & (STRING|STRCUR)) != 0 || ! is_zero(n)) goto regular_print; bcfree($3->lasti); /* Op_field_spec */ @@ -1614,6 +1615,12 @@ | typed_regexp { $$ = list_create($1); } ; +opt_fcall_exp + : /* empty */ + { $$ = NULL; } + | fcall_exp { $$ = $1; } + ; + /* Expressions, not including the comma operator. */ exp : variable assign_operator exp %prec ASSIGNOP @@ -2141,7 +2148,7 @@ { char *arr = $1->lextok; - $1->memory = variable($1->source_line, arr, Node_var_new); + $1->memory = variable($1->source_line, arr, Node_var_array); $1->opcode = Op_push_array; $$ = list_prepend($2, $1); } @@ -2393,7 +2400,7 @@ #ifdef HAVE_MPFR if (is_mpg_integer(n)) { - if (! iszero(n)) { + if (! is_zero(n)) { mpz_neg(n->mpg_i, n->mpg_i); return; } @@ -2773,7 +2780,7 @@ lexeof = false; lexptr = NULL; lasttok = 0; - memset(rule_block, 0, sizeof(ruletab) * sizeof(INSTRUCTION *)); + memset(rule_block, 0, sizeof(rule_block)); errcount = 0; tok = tokstart != NULL ? tokstart : tokexpand(); @@ -3084,7 +3091,7 @@ * avoids problems with some ancient systems where * the types of arguments to read() aren't up to date. */ - static ssize_t (*readfunc)() = 0; + static ssize_t (*readfunc)(int, void *, size_t) = NULL; if (readfunc == NULL) { char *cp = getenv("AWKREADFUNC"); @@ -3095,7 +3102,7 @@ * cast is to remove warnings on systems with * different return types for read. */ - readfunc = ( ssize_t(*)() ) read; + readfunc = ( ssize_t(*)(int, void *, size_t) ) read; else readfunc = read_one_line; } @@ -3264,7 +3271,7 @@ static char * tokexpand() { - static int toksize; + static size_t toksize; int tokoffset; if (tokstart != NULL) { @@ -3454,7 +3461,7 @@ sourceline++; tokadd(c); } - } while (isspace(c) && c != END_FILE); + } while (c != END_FILE && isspace(c)); if (c == END_FILE) break; else if (c != '#') { @@ -4960,7 +4967,7 @@ /* End with fatal if the user requested it. */ if (shadow && lintfunc == r_fatal) - lintwarn(_("there were shadowed variables.")); + lintwarn(_("there were shadowed variables")); } @@ -5255,7 +5262,7 @@ /* make_regnode --- make a regular expression node */ NODE * -make_regnode(int type, NODE *exp) +make_regnode(NODETYPE type, NODE *exp) { NODE *n; @@ -5337,6 +5344,16 @@ case Op_not: case Op_in_array: return true; + // Additional opcodes that can be part of an expression + // that has no effect: + case Op_and: + case Op_or: + case Op_push: + case Op_push_i: + case Op_push_array: + case Op_pop: + case Op_lint_plus: + return true; default: break; /* keeps gcc -Wall happy */ } @@ -5429,7 +5446,7 @@ static INSTRUCTION * mk_binary(INSTRUCTION *s1, INSTRUCTION *s2, INSTRUCTION *op) { - INSTRUCTION *ip1,*ip2; + INSTRUCTION *ip1,*ip2, *lint_plus; AWKNUM res; ip2 = s2->nexti; @@ -5508,6 +5525,8 @@ op->opcode = Op_mod_i; break; case Op_plus: + if (do_lint) + goto regular; op->opcode = Op_plus_i; break; case Op_minus: @@ -5530,6 +5549,10 @@ regular: /* append lists s1, s2 and add `op' bytecode */ (void) list_merge(s1, s2); + if (do_lint && op->opcode == Op_plus) { + lint_plus = instruction(Op_lint_plus); + (void) list_append(s1, lint_plus); + } return list_append(s1, op); } @@ -6144,6 +6167,7 @@ { #ifndef NO_LINT INSTRUCTION *ip; + bool no_effect = true; switch (linttype) { case LINT_assign_in_cond: @@ -6164,26 +6188,33 @@ if (list->lasti->opcode == Op_pop && list->nexti != list->lasti) { int line = 0; - // Get down to the last instruction (FIXME: why?) + // Get down to the last instruction ... for (ip = list->nexti; ip->nexti != list->lasti; ip = ip->nexti) { - // along the way track line numbers, we will use the line + // ... along the way track line numbers, we will use the line // closest to the opcode if that opcode doesn't have one if (ip->source_line != 0) line = ip->source_line; + + // And check each opcode for no effect + no_effect = no_effect && isnoeffect(ip->opcode); } - if (do_lint) { /* compile-time warning */ - if (isnoeffect(ip->opcode)) { + // check the last one also + no_effect = no_effect && isnoeffect(ip->opcode); + + // Only if all the traversed opcodes have no effect do we + // produce a warning. This avoids warnings for things like + // a == b && b = c. + if (do_lint) { /* parse-time warning */ + if (no_effect) { if (ip->source_line != 0) line = ip->source_line; - lintwarn_ln(line, ("statement may have no effect")); + lintwarn_ln(line, _("statement has no effect")); } } - if (ip->opcode == Op_push || ip->opcode == Op_push_i) { /* run-time warning */ - list_append(list, instruction(Op_lint)); - list->lasti->lint_type = linttype; - } + // We no longer place a run-time warning also. One warning + // at parse time is enough. } break; @@ -6464,7 +6495,7 @@ return (builtin_func_t) do_sub; #ifdef HAVE_MPFR - if (do_mpfr) + if (do_mpfr && tokentab[mid].ptr2 != NULL) return tokentab[mid].ptr2; #endif @@ -6734,8 +6765,8 @@ * Now it's more complicated. Here are the rules. * * 1. Namespace name cannot be a standard awk reserved word or function. - * 2. Subordinate part of the name cannot be standard awk reserved word or function. - * 3. If namespace part is explicitly "awk", return result of check_special(). + * 2. Subordinate part of the name cannot be a standard awk reserved word or function. + * 3. If the namespace part is explicitly "awk", return the result of check_special(). * 4. Else return -1 (gawk extensions allowed, we check standard awk in step 2). */ @@ -6767,12 +6798,12 @@ // Now check the subordinate part i = check_special(subname); - if (i >= 0 && (tokentab[i].flags & GAWKX) == 0 && strcmp(ns, "awk") != 0) { + if (i >= 0 && (tokentab[i].flags & GAWKX) == 0 && strcmp(ns, awk_namespace) != 0) { error_ln(sourceline, _("using reserved identifier `%s' as second component of a qualified name is not allowed"), subname); goto done; } - if (strcmp(ns, "awk") == 0) { + if (strcmp(ns, awk_namespace) == 0) { i = check_special(subname); if (i >= 0) { if ((tokentab[i].flags & GAWKX) != 0 && tokentab[i].class == LEX_BUILTIN) diff -urN gawk-5.1.0/awk.h gawk-5.1.1/awk.h --- gawk-5.1.0/awk.h 2020-04-13 09:46:26.000000000 +0300 +++ gawk-5.1.1/awk.h 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2020 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2021 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -52,6 +52,7 @@ #include #include #include +#include #include "gettext.h" #define _(msgid) gettext(msgid) @@ -363,9 +364,10 @@ size_t reserved; struct exp_node *rn; unsigned long cnt; - unsigned long reflags; -# define CONSTANT 1 -# define FS_DFLT 2 + enum reflagvals { + CONSTANT = 1, + FS_DFLT = 2, + } reflags; } nodep; struct { @@ -381,7 +383,6 @@ #endif char *sp; size_t slen; - long sref; int idx; wchar_t *wsp; size_t wslen; @@ -390,79 +391,80 @@ } val; } sub; NODETYPE type; - unsigned int flags; - -/* type = Node_val */ - /* - * STRING and NUMBER are mutually exclusive, except for the special - * case of an uninitialized value, represented internally by - * Nnull_string. They represent the type of a value as assigned. - * Nnull_string has both STRING and NUMBER attributes, but all other - * scalar values should have precisely one of these bits set. - * - * STRCUR and NUMCUR are not mutually exclusive. They represent that - * the particular type of value is up to date. For example, - * - * a = 5 # NUMBER | NUMCUR - * b = a "" # Adds STRCUR to a, since a string value - * # is now available. But the type hasn't changed! - * - * a = "42" # STRING | STRCUR - * b = a + 0 # Adds NUMCUR to a, since numeric value - * # is now available. But the type hasn't changed! - * - * USER_INPUT is the joker. When STRING|USER_INPUT is set, it means - * "this is string data, but the user may have really wanted it to be a - * number. If we have to guess, like in a comparison, turn it into a - * number if the string is indeed numeric." - * For example, gawk -v a=42 .... - * Here, `a' gets STRING|STRCUR|USER_INPUT and then when used where - * a number is needed, it gets turned into a NUMBER and STRING - * is cleared. In that case, we leave the USER_INPUT in place, so - * the combination NUMBER|USER_INPUT means it is a strnum a.k.a. a - * "numeric string". - * - * WSTRCUR is for efficiency. If in a multibyte locale, and we - * need to do something character based (substr, length, etc.) - * we create the corresponding wide character string and store it, - * and add WSTRCUR to the flags so that we don't have to do the - * conversion more than once. - * - * The NUMINT flag may be used with a value of any type -- NUMBER, - * STRING, or STRNUM. It indicates that the string representation - * equals the result of sprintf("%ld", ). So, for - * example, NUMINT should NOT be set if it's a strnum or string value - * where the string is " 1" or "01" or "+1" or "1.0" or "0.1E1". This - * is a hint to indicate that an integer array optimization may be - * used when this value appears as a subscript. - * - * We hope that the rest of the flags are self-explanatory. :-) - */ -# define MALLOC 0x0001 /* stptr can be free'd, i.e. not a field node pointing into a shared buffer */ -# define STRING 0x0002 /* assigned as string */ -# define STRCUR 0x0004 /* string value is current */ -# define NUMCUR 0x0008 /* numeric value is current */ -# define NUMBER 0x0010 /* assigned as number */ -# define USER_INPUT 0x0020 /* user input: if NUMERIC then - * a NUMBER */ -# define INTLSTR 0x0040 /* use localized version */ -# define NUMINT 0x0080 /* numeric value is an integer */ -# define INTIND 0x0100 /* integral value is array index; - * lazy conversion to string. - */ -# define WSTRCUR 0x0200 /* wide str value is current */ -# define MPFN 0x0400 /* arbitrary-precision floating-point number */ -# define MPZN 0x0800 /* arbitrary-precision integer */ -# define NO_EXT_SET 0x1000 /* extension cannot set a value for this variable */ -# define NULL_FIELD 0x2000 /* this is the null field */ - -/* type = Node_var_array */ -# define ARRAYMAXED 0x4000 /* array is at max size */ -# define HALFHAT 0x8000 /* half-capacity Hashed Array Tree; - * See cint_array.c */ -# define XARRAY 0x10000 -# define NUMCONSTSTR 0x20000 /* have string value for numeric constant */ -# define REGEX 0x40000 /* this is a typed regex */ + enum flagvals { + /* type = Node_val */ + /* + * STRING and NUMBER are mutually exclusive, except for the special + * case of an uninitialized value, represented internally by + * Nnull_string. They represent the type of a value as assigned. + * Nnull_string has both STRING and NUMBER attributes, but all other + * scalar values should have precisely one of these bits set. + * + * STRCUR and NUMCUR are not mutually exclusive. They represent that + * the particular type of value is up to date. For example, + * + * a = 5 # NUMBER | NUMCUR + * b = a "" # Adds STRCUR to a, since a string value + * # is now available. But the type hasn't changed! + * + * a = "42" # STRING | STRCUR + * b = a + 0 # Adds NUMCUR to a, since numeric value + * # is now available. But the type hasn't changed! + * + * USER_INPUT is the joker. When STRING|USER_INPUT is set, it means + * "this is string data, but the user may have really wanted it to be a + * number. If we have to guess, like in a comparison, turn it into a + * number if the string is indeed numeric." + * For example, gawk -v a=42 .... + * Here, `a' gets STRING|STRCUR|USER_INPUT and then when used where + * a number is needed, it gets turned into a NUMBER and STRING + * is cleared. In that case, we leave the USER_INPUT in place, so + * the combination NUMBER|USER_INPUT means it is a strnum a.k.a. a + * "numeric string". + * + * WSTRCUR is for efficiency. If in a multibyte locale, and we + * need to do something character based (substr, length, etc.) + * we create the corresponding wide character string and store it, + * and add WSTRCUR to the flags so that we don't have to do the + * conversion more than once. + * + * The NUMINT flag may be used with a value of any type -- NUMBER, + * STRING, or STRNUM. It indicates that the string representation + * equals the result of sprintf("%ld", ). So, for + * example, NUMINT should NOT be set if it's a strnum or string value + * where the string is " 1" or "01" or "+1" or "1.0" or "0.1E1". This + * is a hint to indicate that an integer array optimization may be + * used when this value appears as a subscript. + * + * We hope that the rest of the flags are self-explanatory. :-) + */ + MALLOC = 0x0001, /* stptr can be free'd, i.e. not a field node pointing into a shared buffer */ + STRING = 0x0002, /* assigned as string */ + STRCUR = 0x0004, /* string value is current */ + NUMCUR = 0x0008, /* numeric value is current */ + NUMBER = 0x0010, /* assigned as number */ + USER_INPUT = 0x0020, /* user input: if NUMERIC then + * a NUMBER */ + INTLSTR = 0x0040, /* use localized version */ + NUMINT = 0x0080, /* numeric value is an integer */ + INTIND = 0x0100, /* integral value is array index; + * lazy conversion to string. + */ + WSTRCUR = 0x0200, /* wide str value is current */ + MPFN = 0x0400, /* arbitrary-precision floating-point number */ + MPZN = 0x0800, /* arbitrary-precision integer */ + NO_EXT_SET = 0x1000, /* extension cannot set a value for this variable */ + NULL_FIELD = 0x2000, /* this is the null field */ + + /* type = Node_var_array */ + ARRAYMAXED = 0x4000, /* array is at max size */ + HALFHAT = 0x8000, /* half-capacity Hashed Array Tree; + * See cint_array.c */ + XARRAY = 0x10000, + NUMCONSTSTR = 0x20000, /* have string value for numeric constant */ + REGEX = 0x40000, /* this is a typed regex */ + } flags; + long valref; } NODE; #define vname sub.nodep.name @@ -499,7 +501,6 @@ */ #define stptr sub.val.sp #define stlen sub.val.slen -#define valref sub.val.sref #define stfmt sub.val.idx #define strndmode sub.val.rndmode #define wstptr sub.val.wsp @@ -713,6 +714,7 @@ Op_exec_count, Op_breakpoint, Op_lint, + Op_lint_plus, Op_atexit, Op_stop, @@ -748,6 +750,16 @@ struct break_point; +#if __DECC && __VAX +typedef unsigned long exec_count_t; // for exec_count +#define EXEC_COUNT_FMT "%lu" +#define EXEC_COUNT_PROFILE_FMT "%6lu" +#else +typedef unsigned long long exec_count_t; // for exec_count +#define EXEC_COUNT_FMT "%llu" +#define EXEC_COUNT_PROFILE_FMT "%6llu" +#endif + typedef struct exp_instruction { struct exp_instruction *nexti; union { @@ -758,6 +770,7 @@ awk_value_t *result, struct awk_ext_func *finfo); long dl; + exec_count_t ldl; // for exec_count char *name; } d; @@ -898,7 +911,7 @@ /*------------------ pretty printing/profiling --------*/ /* Op_exec_count */ -#define exec_count d.dl +#define exec_count d.ldl /* Op_K_while */ #define while_body d.di @@ -942,30 +955,33 @@ bool valid; int errcode; - int flag; -# define IOP_IS_TTY 1 -# define IOP_AT_EOF 2 -# define IOP_CLOSED 4 -# define IOP_AT_START 8 + enum iobuf_flags { + IOP_IS_TTY = 1, + IOP_AT_EOF = 2, + IOP_CLOSED = 4, + IOP_AT_START = 8, + } flag; } IOBUF; typedef void (*Func_ptr)(void); /* structure used to dynamically maintain a linked-list of open files/pipes */ struct redirect { - unsigned int flag; -# define RED_FILE 1 -# define RED_PIPE 2 -# define RED_READ 4 -# define RED_WRITE 8 -# define RED_APPEND 16 -# define RED_NOBUF 32 -# define RED_USED 64 /* closed temporarily to reuse fd */ -# define RED_EOF 128 -# define RED_TWOWAY 256 -# define RED_PTY 512 -# define RED_SOCKET 1024 -# define RED_TCP 2048 + enum redirect_flags { + RED_NONE = 0, + RED_FILE = 1, + RED_PIPE = 2, + RED_READ = 4, + RED_WRITE = 8, + RED_APPEND = 16, + RED_NOBUF = 32, + RED_USED = 64, /* closed temporarily to reuse fd */ + RED_EOF = 128, + RED_TWOWAY = 256, + RED_PTY = 512, + RED_SOCKET = 1024, + RED_TCP = 2048, + } flag; char *value; FILE *ifp; /* input fp, needed for PIPES_SIMULATED */ IOBUF *iop; @@ -976,14 +992,15 @@ const char *mode; awk_output_buf_t output; }; +typedef enum redirect_flags redirect_flags_t; /* values for BINMODE, used as bit flags */ enum binmode_values { - TEXT_TRANSLATE = 0, /* usual \r\n ---> \n translation */ - BINMODE_INPUT = 1, /* no translation for input files */ - BINMODE_OUTPUT = 2, /* no translation for output files */ - BINMODE_BOTH = 3 /* no translation for either */ + TEXT_TRANSLATE = 0, /* usual \r\n ---> \n translation */ + BINMODE_INPUT = 1, /* no translation for input files */ + BINMODE_OUTPUT = 2, /* no translation for output files */ + BINMODE_BOTH = 3 /* no translation for either */ }; /* @@ -1069,8 +1086,6 @@ enum block_id { BLOCK_NODE = 0, BLOCK_BUCKET, - BLOCK_MPFR, - BLOCK_MPZ, BLOCK_MAX /* count */ }; @@ -1101,7 +1116,7 @@ extern char *ORS; extern int ORSlen; extern char *OFMT; -extern char *CONVFMT; +extern const char *CONVFMT; extern int CONVFMTidx; extern int OFMTidx; #ifdef HAVE_MPFR @@ -1137,11 +1152,12 @@ extern struct block_header nextfree[]; extern bool field0_valid; -extern int do_flags; +extern bool do_itrace; /* separate so can poke from a debugger */ extern SRCFILE *srcfiles; /* source files */ -enum do_flag_values { +extern enum do_flag_values { + DO_FLAG_NONE = 0x00000, DO_LINT_INVALID = 0x00001, /* only warn about invalid */ DO_LINT_EXTENSIONS = 0x00002, /* warn about gawk extensions */ DO_LINT_ALL = 0x00004, /* warn about all things */ @@ -1157,8 +1173,8 @@ DO_SANDBOX = 0x01000, /* sandbox mode - disable 'system' function & redirections */ DO_PROFILE = 0x02000, /* profile the program */ DO_DEBUG = 0x04000, /* debug the program */ - DO_MPFR = 0x08000 /* arbitrary-precision floating-point math */ -}; + DO_MPFR = 0x08000, /* arbitrary-precision floating-point math */ +} do_flags; #define do_traditional (do_flags & DO_TRADITIONAL) #define do_posix (do_flags & DO_POSIX) @@ -1210,10 +1226,10 @@ extern const char *myname; extern const char def_strftime_format[]; -extern char quote; -extern char *defpath; -extern char *deflibpath; -extern char envsep; +extern const char quote; +extern const char *defpath; +extern const char *deflibpath; +extern const char envsep; extern char casetable[]; /* for case-independent regexp matching */ @@ -1265,8 +1281,11 @@ DEREF(NODE *r) { assert(r->valref > 0); - if (--r->valref == 0) - r_unref(r); +#ifndef GAWKDEBUG + if (--r->valref > 0) + return; +#endif + r_unref(r); } #define POP_NUMBER() force_number(POP_SCALAR()) @@ -1301,7 +1320,7 @@ #define get_number_uj(n) numtype_choose((n), mpfr_get_uj((n)->mpg_numbr, ROUND_MODE), (uintmax_t) mpz_get_d((n)->mpg_i), (uintmax_t) (n)->numbr) -#define iszero(n) numtype_choose((n), mpfr_zero_p((n)->mpg_numbr), (mpz_sgn((n)->mpg_i) == 0), ((n)->numbr == 0.0)) +#define is_zero(n) numtype_choose((n), mpfr_zero_p((n)->mpg_numbr), (mpz_sgn((n)->mpg_i) == 0), ((n)->numbr == 0.0)) #define IEEE_FMT(r, t) (void) (do_ieee_fmt && format_ieee(r, t)) @@ -1319,7 +1338,7 @@ #define is_mpg_number(n) 0 #define is_mpg_float(n) 0 #define is_mpg_integer(n) 0 -#define iszero(n) ((n)->numbr == 0.0) +#define is_zero(n) ((n)->numbr == 0.0) #endif #define var_uninitialized(n) ((n)->var_value == Nnull_string) @@ -1331,7 +1350,7 @@ extern void *r_getblock(int id); extern void r_freeblock(void *, int id); -#define getblock(p, id, ty) (void) (p = r_getblock(id)) +#define getblock(p, id, ty) (void) (p = (ty) r_getblock(id)) #define freeblock(p, id) (void) (r_freeblock(p, id)) #else /* MEMDEBUG */ @@ -1442,7 +1461,7 @@ extern bool is_alnum(int c); extern bool is_letter(int c); extern bool is_identchar(int c); -extern NODE *make_regnode(int type, NODE *exp); +extern NODE *make_regnode(NODETYPE type, NODE *exp); extern bool validate_qualified_name(char *token); /* builtin.c */ extern double double_to_int(double d); @@ -1493,6 +1512,7 @@ extern int strncasecmpmbs(const unsigned char *, const unsigned char *, size_t); extern int sanitize_exit_status(int status); +extern void check_symtab_functab(NODE *dest, const char *fname, const char *msg); /* debug.c */ extern void init_debug(void); extern int debug_prog(INSTRUCTION *pc); @@ -1576,7 +1596,7 @@ extern void free_api_string_copies(void); /* gawkmisc.c */ -extern char *gawk_name(const char *filespec); +extern const char *gawk_name(const char *filespec); extern void os_arg_fixup(int *argcp, char ***argvp); extern int os_devopen(const char *name, int flag); extern void os_close_on_exec(int fd, const char *name, const char *what, const char *dir); @@ -1664,6 +1684,7 @@ extern NODE *mpg_node(unsigned int); extern const char *mpg_fmt(const char *, ...); extern int mpg_strtoui(mpz_ptr, char *, size_t, char **, int); +extern void mpg_zero(NODE *n); #endif /* msg.c */ extern void gawk_exit(int status); @@ -1712,6 +1733,7 @@ #define is_valid_character(b) (btowc_cache[(b)&0xFF] != WEOF) extern bool out_of_range(NODE *n); extern char *format_nan_inf(NODE *n, char format); +extern bool is_ieee_magic_val(const char *val); /* re.c */ extern Regexp *make_regexp(const char *s, size_t len, bool ignorecase, bool dfa, bool canfatal); extern int research(Regexp *rp, char *str, int start, size_t len, int flags); @@ -1924,6 +1946,7 @@ static inline void unref(NODE *r) { + assert(r == NULL || r->valref > 0); if (r != NULL && --r->valref <= 0) r_unref(r); } @@ -1974,7 +1997,7 @@ { (void) fixtype(t); if ((t->flags & NUMBER) != 0) - return ! iszero(t); + return ! is_zero(t); return (t->stlen > 0); } diff -urN gawk-5.1.0/awklib/ChangeLog gawk-5.1.1/awklib/ChangeLog --- gawk-5.1.0/awklib/ChangeLog 2020-04-14 14:44:15.000000000 +0300 +++ gawk-5.1.1/awklib/ChangeLog 2021-10-28 19:48:25.000000000 +0300 @@ -1,3 +1,7 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/awklib/Makefile.in gawk-5.1.1/awklib/Makefile.in --- gawk-5.1.0/awklib/Makefile.in 2020-04-14 14:44:52.000000000 +0300 +++ gawk-5.1.1/awklib/Makefile.in 2021-10-28 19:48:29.000000000 +0300 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -114,20 +114,20 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libsigsegv.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \ - $(top_srcdir)/m4/socket.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \ $(top_srcdir)/m4/triplet-transformation.m4 \ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @@ -152,7 +152,7 @@ am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/grcat.Po ./$(DEPDIR)/pwcat.Po am__mv = mv -f @@ -192,16 +192,15 @@ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/mkinstalldirs ChangeLog +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/depcomp ChangeLog DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/awk pkglibexecdir = $(libexecdir)/awk ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -211,6 +210,8 @@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -218,6 +219,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GAWKLIBEXT = @GAWKLIBEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ @@ -249,8 +251,8 @@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -279,6 +281,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ acl_shlibext = @acl_shlibext@ am__include = @am__include@ @@ -443,15 +446,17 @@ am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @@ -507,7 +512,6 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff -urN gawk-5.1.0/build-aux/ar-lib gawk-5.1.1/build-aux/ar-lib --- gawk-5.1.0/build-aux/ar-lib 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/ar-lib 2021-10-23 21:49:09.000000000 +0300 @@ -0,0 +1,271 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2019-07-04.01; # UTC + +# Copyright (C) 2010-2021 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin | msys) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat < + + * 5.1.1: Release tar ball made. + +2021-08-29 Arnold D. Robbins + + * ar-lib, compile, config.sub, depcomp: Updated from GNULIB. + +2021-07-09 Arnold D. Robbins + + * config.guess, config.sub: Updated from GNULIB. + +2021-06-30 Arnold D. Robbins + + * config.guess, texinfo.tex: Updated from GNULIB. + +2021-05-07 Arnold D. Robbins + + * config.guess, config.sub: Updated from GNULIB. + +2021-05-05 Arnold D. Robbins + + * texinfo.tex: New file. Automake wants it. + +2021-03-18 Arnold D. Robbins + + * config.rpath, config.sub: Updated from GNULIB. + +2021-01-28 Arnold D. Robbins + + * config.guess, config.sub: Updated from GNULIB. + +2021-01-07 Arnold D. Robbins + + * config.guess, config.rpath, config.sub: Updated from GNULIB. + +2020-12-30 Arnold D. Robbins + + * config.guess, config.sub: Updated from GNULIB. + +2020-12-01 Arnold D. Robbins + + * config.guess, config.sub: Updated from GNULIB. + +2020-11-16 Arnold D. Robbins + + * config.guess, config.sub, install-sh: Updated from GNULIB. + +2020-10-31 Arnold D. Robbins + + * config.guess: Updated from GNULIB. + +2020-10-22 Arnold D. Robbins + + * config.sub: Updated from GNULIB. + +2020-10-04 Arnold D. Robbins + + * config.sub: Updated from GNULIB. + +2020-09-24 Arnold D. Robbins + + * config.guess: Updated from GNULIB. + +2020-09-11 Arnold D. Robbins + + * config.sub: Updated from GNULIB. + +2020-08-18 Arnold D. Robbins + + * config.guess, config.sub: Updated from GNULIB. + +2020-07-28 Arnold D. Robbins + + * install-sh: Updated from GNULIB. + +2020-07-22 Arnold D. Robbins + + * ltmain.sh: New file, from extension/build-aux. + +2020-07-21 Arnold D. Robbins + + * ar-lib, compile, config.guess, config.rpath, config.sub, + depcomp, install-sh, missing: Moved here from parent directory. diff -urN gawk-5.1.0/build-aux/compile gawk-5.1.1/build-aux/compile --- gawk-5.1.0/build-aux/compile 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/compile 2021-10-23 21:49:09.000000000 +0300 @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/* | msys/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff -urN gawk-5.1.0/build-aux/config.guess gawk-5.1.1/build-aux/config.guess --- gawk-5.1.0/build-aux/config.guess 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/config.guess 2021-10-23 21:49:09.000000000 +0300 @@ -0,0 +1,1748 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2021 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2021-06-03' + +# This file 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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2021 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -x /usr/bin/getconf; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI=${LIBC}x32 + fi + fi + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + x86_64:Haiku:*:*) + GUESS=x86_64-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff -urN gawk-5.1.0/build-aux/config.rpath gawk-5.1.1/build-aux/config.rpath --- gawk-5.1.0/build-aux/config.rpath 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/config.rpath 2021-10-23 21:49:09.000000000 +0300 @@ -0,0 +1,684 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2021 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + nagfor*) + wl='-Wl,-Wl,,' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + xl* | bgxl* | bgf* | mpixl*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + wl= + ;; + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + newsos6) + ;; + *nto* | *qnx*) + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + wl='-Qoption ld ' + ;; + *) + wl='-Wl,' + ;; + esac + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | 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++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + haiku*) + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + bsdi[45]*) + ;; + cygwin* | 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 + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then + : + else + ld_shlibs=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd2.[01]*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly* | midnightbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + *nto* | *qnx*) + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + case "$host_cpu" in + powerpc*) + library_names_spec='$libname$shrext' ;; + m68k) + library_names_spec='$libname.a' ;; + esac + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; + freebsd* | dragonfly* | midnightbsd*) + library_names_spec='$libname$shrext' + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + haiku*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + *nto* | *qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + tpf*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2021 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x$basic_os != x +then + +# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ + | linux-musl* | linux-relibc* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor-${kernel:+$kernel-}$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff -urN gawk-5.1.0/build-aux/depcomp gawk-5.1.1/build-aux/depcomp --- gawk-5.1.0/build-aux/depcomp 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/depcomp 2021-10-23 21:49:09.000000000 +0300 @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2021 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff -urN gawk-5.1.0/build-aux/install-sh gawk-5.1.1/build-aux/install-sh --- gawk-5.1.0/build-aux/install-sh 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/install-sh 2021-10-23 21:49:09.000000000 +0300 @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2020-11-14.01; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. + -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff -urN gawk-5.1.0/build-aux/ltmain.sh gawk-5.1.1/build-aux/ltmain.sh --- gawk-5.1.0/build-aux/ltmain.sh 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/ltmain.sh 2020-08-28 14:48:04.000000000 +0300 @@ -0,0 +1,11156 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.6 Debian-2.4.6-2" +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES 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 . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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 . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname $scriptversion Debian-2.4.6-2 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type '$version_type'" + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff -urN gawk-5.1.0/build-aux/missing gawk-5.1.1/build-aux/missing --- gawk-5.1.0/build-aux/missing 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/missing 2020-08-28 14:48:04.000000000 +0300 @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff -urN gawk-5.1.0/build-aux/texinfo.tex gawk-5.1.1/build-aux/texinfo.tex --- gawk-5.1.0/build-aux/texinfo.tex 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/texinfo.tex 2021-10-23 21:49:09.000000000 +0300 @@ -0,0 +1,11612 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2021-04-25.21} +% +% Copyright 1985, 1986, 1988, 1990-2021 Free Software Foundation, Inc. +% +% This texinfo.tex file 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 texinfo.tex file 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 . +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. This Exception is an additional permission under section 7 +% of the GNU General Public License, version 3 ("GPLv3"). +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% https://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% https://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% https://www.gnu.org/software/texinfo/ (the Texinfo home page) +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% Send bug reports to bug-texinfo@gnu.org. Please include a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is https://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + +% LaTeX's \typeout. This ensures that the messages it is used for +% are identical in format to the corresponding ones from latex/pdflatex. +\def\typeout{\immediate\write17}% + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexraggedright=\raggedright +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexsp=\sp +\let\ptexstar=\* +\let\ptexsup=\sup +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Give the space character the catcode for a space. +\def\spaceisspace{\catcode`\ =10\relax} + +% Likewise for ^^M, the end of line character. +\def\endlineisspace{\catcode13=10\relax} + +\chardef\dashChar = `\- +\chardef\slashChar = `\/ +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% Output routine +% + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\topandbottommargin \topandbottommargin=.75in + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. + +% \domark is called twice inside \chapmacro, to add one +% mark before the section break, and one after. +% In the second call \prevchapterdefs is the same as \currentchapterdefs, +% and \prevsectiondefs is the same as \currentsectiondefs. +% Then if the page is not broken at the mark, some of the previous +% section appears on the page, and we can get the name of this section +% from \firstmark for @everyheadingmarks top. +% @everyheadingmarks bottom uses \botmark. +% +% See page 260 of The TeXbook. +\def\domark{% + \toks0=\expandafter{\currentchapterdefs}% + \toks2=\expandafter{\currentsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\currentcolordefs}% + \mark{% + \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top + \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom + \noexpand\else \the\toks8 % 2: color marks + }% +} + +% \gettopheadingmarks, \getbottomheadingmarks, +% \getcolormarks - extract needed part of mark. +% +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url, or @link, etc.) between @contents and the very +% first @chapter. +\def\gettopheadingmarks{% + \ifcase0\the\savedtopmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\the\savedtopmark\fi} + +% Avoid "undefined control sequence" errors. +\def\currentchapterdefs{} +\def\currentsectiondefs{} +\def\currentsection{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\currentcolordefs{} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\txipagewidth \newdimen\txipageheight + +% Main output routine. +% +\chardef\PAGE = 255 +\newtoks\defaultoutput +\defaultoutput = {\savetopmark\onepageout{\pagecontents\PAGE}} +\output=\expandafter{\the\defaultoutput} + +\newbox\headlinebox +\newbox\footlinebox + +% When outputting the double column layout for indices, an output routine +% is run several times, which hides the original value of \topmark. This +% can lead to a page heading being output and duplicating the chapter heading +% of the index. Hence, save the contents of \topmark at the beginning of +% the output routine. The saved contents are valid until we actually +% \shipout a page. +% +% (We used to run a short output routine to actually set \topmark and +% \firstmark to the right values, but if this was called with an empty page +% containing whatsits for writing index entries, the whatsits would be thrown +% away and the index auxiliary file would remain empty.) +% +\newtoks\savedtopmark +\newif\iftopmarksaved +\topmarksavedtrue +\def\savetopmark{% + \iftopmarksaved\else + \global\savedtopmark=\expandafter{\topmark}% + \global\topmarksavedtrue + \fi +} + +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer +% and footnote. This also causes index entries for this page to be written +% to the auxiliary files. +% +\def\onepageout#1{% + \hoffset=\normaloffset + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + \checkchapterpage + % + % Retrieve the information for the headings from the marks in the page, + % and call Plain TeX's \makeheadline and \makefootline, which use the + % values in \headline and \footline. + % + % Common context changes for both heading and footing. + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% + % + {% + % Set context for writing to auxiliary files like index files. + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \atdummies % don't expand commands in the output. + \turnoffactive + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + }% + }% + \global\topmarksavedfalse + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +% Main part of page, including any footnotes +\def\pagebody#1{\vbox to\txipageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1\relax \unvbox#1\relax +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Check if we are on the first page of a chapter. Used for printing headings. +\newif\ifchapterpage +\def\checkchapterpage{% + % Get the chapter that was current at the end of the last page + \ifcase1\the\savedtopmark\fi + \let\prevchaptername\thischaptername + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \let\curchaptername\thischaptername + % + \ifx\curchaptername\prevchaptername + \chapterpagefalse + \else + \chapterpagetrue + \fi +} + +% Argument parsing + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% For example, \def\foo{\parsearg\fooxxx}. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. Pass the result on to +% \argcheckspaces. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \argtorun. +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + + +% \parseargdef - define a command taking an argument on the line +% +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi +} + + +% @end foo calls \checkenv and executes the definition of \Efoo. +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi +} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \txipageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\txipageheight + \page + \fi + \fi + \box\groupbox +} + +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} +% +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\centersub\centerH + \else + \let\centersub\centerV + \fi + \centersub{\hfil \ignorespaces#1\unskip \hfil}% + \let\centersub\relax % don't let the definition persist, just in case +} +\def\centerH#1{{% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break +}} +% +\newcount\centerpenalty +\def\centerV#1{% + % The idea here is the same as in \startdefun, \cartouche, etc.: if + % @center is the first thing after a section heading, we need to wipe + % out the negative parskip inserted by \sectionheading, but still + % prevent a page break here. + \centerpenalty = \lastpenalty + \ifnum\centerpenalty>10000 \vskip\parskip \fi + \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi + \line{\kern\leftskip #1\kern\rightskip}% +} + +% @sp n outputs n lines of vertical space +% +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment + + +\def\c{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\cxxx} +{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} +% +\let\comment\c + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent {\restorefirstparagraphindent \indent}% + \gdef\noindent{\restorefirstparagraphindent \noindent}% + \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% +} +% +\gdef\restorefirstparagraphindent{% + \global\let\indent = \ptexindent + \global\let\noindent = \ptexnoindent + \global\everypar = {}% +} + +% leave vertical mode without cancelling any first paragraph indent +\gdef\imageindent{% + \toks0=\everypar + \everypar={}% + \ptexnoindent + \global\everypar=\toks0 +} + + +% @refill is a no-op. +\let\refill=\relax + +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment + +% @bye. +\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} + + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newbox\boxB +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% +% For LuaTeX +% + +\newif\iftxiuseunicodedestname +\txiuseunicodedestnamefalse % For pdfTeX etc. + +\ifx\luatexversion\thisisundefined +\else + % Use Unicode destination names + \txiuseunicodedestnametrue + % Escape PDF strings with converting UTF-16 from UTF-8 + \begingroup + \catcode`\%=12 + \directlua{ + function UTF16oct(str) + tex.sprint(string.char(0x5c) .. '376' .. string.char(0x5c) .. '377') + for c in string.utfvalues(str) do + if c < 0x10000 then + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + math.floor(c / 256), math.floor(c % 256))) + else + c = c - 0x10000 + local c_hi = c / 1024 + 0xd800 + local c_lo = c % 1024 + 0xdc00 + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + math.floor(c_hi / 256), math.floor(c_hi % 256), + math.floor(c_lo / 256), math.floor(c_lo % 256))) + end + end + end + } + \endgroup + \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}} + % Escape PDF strings without converting + \begingroup + \directlua{ + function PDFescstr(str) + for c in string.bytes(str) do + if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then + tex.sprint(-2, + string.format(string.char(0x5c) .. string.char(0x25) .. '03o', + c)) + else + tex.sprint(-2, string.char(c)) + end + end + end + } + % The -2 in the arguments here gives all the input to TeX catcode 12 + % (other) or 10 (space), preventing undefined control sequence errors. See + % https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html + % + \endgroup + \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}} + \ifnum\luatexversion>84 + % For LuaTeX >= 0.85 + \def\pdfdest{\pdfextension dest} + \let\pdfoutput\outputmode + \def\pdfliteral{\pdfextension literal} + \def\pdfcatalog{\pdfextension catalog} + \def\pdftexversion{\numexpr\pdffeedback version\relax} + \let\pdfximage\saveimageresource + \let\pdfrefximage\useimageresource + \let\pdflastximage\lastsavedimageresourceindex + \def\pdfendlink{\pdfextension endlink\relax} + \def\pdfoutline{\pdfextension outline} + \def\pdfstartlink{\pdfextension startlink} + \def\pdffontattr{\pdfextension fontattr} + \def\pdfobj{\pdfextension obj} + \def\pdflastobj{\numexpr\pdffeedback lastobj\relax} + \let\pdfpagewidth\pagewidth + \let\pdfpageheight\pageheight + \edef\pdfhorigin{\pdfvariable horigin} + \edef\pdfvorigin{\pdfvariable vorigin} + \fi +\fi + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +\newif\ifpdforxetex +\pdforxetexfalse +\ifpdf + \pdforxetextrue +\fi +\ifx\XeTeXrevision\thisisundefined\else + \pdforxetextrue +\fi + + +% Output page labels information. +% See PDF reference v.1.7 p.594, section 8.3.1. +\ifpdf +\def\pagelabels{% + \def\title{0 << /P (T-) /S /D >>}% + \edef\roman{\the\romancount << /S /r >>}% + \edef\arabic{\the\arabiccount << /S /D >>}% + % + % Page label ranges must be increasing. Remove any duplicates. + % (There is a slight chance of this being wrong if e.g. there is + % a @contents but no @titlepage, etc.) + % + \ifnum\romancount=0 \def\roman{}\fi + \ifnum\arabiccount=0 \def\title{}% + \else + \ifnum\romancount=\arabiccount \def\roman{}\fi + \fi + % + \ifnum\romancount<\arabiccount + \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax + \else + \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax + \fi +} +\else + \let\pagelabels\relax +\fi + +\newcount\pagecount \pagecount=0 +\newcount\romancount \romancount=0 +\newcount\arabiccount \arabiccount=0 +\ifpdf + \let\ptxadvancepageno\advancepageno + \def\advancepageno{% + \ptxadvancepageno\global\advance\pagecount by 1 + } +\fi + + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\thisisundefined + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \xdef#1{#1}% + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi +} +\def\txiescapepdfutfsixteen#1{% + \ifx\pdfescapestrutfsixteen\thisisundefined + % No UTF-16 converting macro available. + \txiescapepdf{#1}% + \else + \xdef#1{\pdfescapestrutfsixteen{#1}}% + \fi +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +\ifpdf + % + % Color manipulation macros using ideas from pdfcolor.tex, + % except using rgb instead of cmyk; the latter is said to render as a + % very dark gray on-screen and a very dark halftone in print, instead + % of actual black. The dark red here is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. We use + % black by default, though. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % rg sets the color for filling (usual text, etc.); + % RG sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\currentcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + \ifx \declaredencoding \latone + % Pass through Latin-1 characters. + % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode. + \else + \ifx \declaredencoding \utfeight + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \fi + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \indexnofonts + \makevalueexpandable + \turnoffactive + \ifx \declaredencoding \latone + % The PDF format can use an extended form of Latin-1 in bookmark + % strings. See Appendix D of the PDF Reference, Sixth Edition, for + % the "PDFDocEncoding". + \passthroughcharstrue + % Pass through Latin-1 characters. + % LuaTeX: Convert to Unicode + % pdfTeX: Use Latin-1 as PDFDocEncoding + \def\pdfoutlinetext{#1}% + \else + \ifx \declaredencoding \utfeight + \ifx\luatexversion\thisisundefined + % For pdfTeX with UTF-8. + % TODO: the PDF format can use UTF-16 in bookmark strings, + % but the code for this isn't done yet. + % Use ASCII approximations. + \passthroughcharsfalse + \def\pdfoutlinetext{#1}% + \else + % For LuaTeX with UTF-8. + % Pass through Unicode characters for title texts. + \passthroughcharstrue + \def\pdfoutlinetext{#1}% + \fi + \else + % For non-Latin-1 or non-UTF-8 encodings. + % Use ASCII approximations. + \passthroughcharsfalse + \def\pdfoutlinetext{#1}% + \fi + \fi + % LuaTeX: Convert to UTF-16 + % pdfTeX: Use Latin-1 as PDFDocEncoding + \txiescapepdfutfsixteen\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1} + % + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \def\linkcolor{\rgbBlack} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % TODO this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Too + % much work for too little return. Just use the ASCII equivalents + % we use for the index sort strings. + % + \indexnofonts + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + % \pdfgettoks - Surround page numbers in #1 with @pdflink. #1 may + % be a simple number, or a list of numbers in the case of an index + % entry. + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + +% +% For XeTeX +% +\ifx\XeTeXrevision\thisisundefined +\else + % + % XeTeX version check + % + \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1 + % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307. + % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941). + % For avoiding PDF destination name replacement, we use this special + % instead of xdvipdfmx's command line option `-C 0x0010'. + \special{dvipdfmx:config C 0x0010} + % XeTeX 0.99995+ comes with xdvipdfmx 20160307+. + % It can handle Unicode destination names for PDF. + \txiuseunicodedestnametrue + \else + % XeTeX < 0.99996 (TeX Live < 2016) cannot use the + % `dvipdfmx:config' special. + % So for avoiding PDF destination name replacement, + % xdvipdfmx's command line option `-C 0x0010' is necessary. + % + % XeTeX < 0.99995 can not handle Unicode destination names for PDF + % because xdvipdfmx 20150315 has a UTF-16 conversion issue. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). + \txiuseunicodedestnamefalse + \fi + % + % Color support + % + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + \def\pdfsetcolor#1{\special{pdf:scolor [#1]}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\currentcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % PDF outline support + % + % Emulate pdfTeX primitive + \def\pdfdest name#1 xyz{% + \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}% + } + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \turnoffactive + % Always use Unicode characters in title texts. + \def\pdfoutlinetext{#1}% + % For XeTeX, xdvipdfmx converts to UTF-16. + % So we do not convert. + \txiescapepdf\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \def\linkcolor{\rgbBlack} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + \def\dopdfoutline#1#2#3#4{% + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A + << /S /GoTo /D (\pdfdestname) >> >> }% + } + % + \def\pdfmakeoutlines{% + \begingroup + % + % For XeTeX, counts of subentries are not necessary. + % Therefore, we read toc only once. + % + % We use node names as destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##2 ##1}{1}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{2}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{3}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{4}{##3}{##4}}% + % + \let\appentry\numchapentry% + \let\appsecentry\numsecentry% + \let\appsubsecentry\numsubsecentry% + \let\appsubsubsecentry\numsubsubsecentry% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{1}{##3}{##4}}% + \let\unnsecentry\numsecentry% + \let\unnsubsecentry\numsubsecentry% + \let\unnsubsubsecentry\numsubsubsecentry% + % + % For XeTeX, xdvipdfmx converts strings to UTF-16. + % Therefore, the encoding and the language may not be considered. + % + \indexnofonts + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + + \special{pdf:docview << /PageMode /UseOutlines >> } + % ``\special{pdf:tounicode ...}'' is not necessary + % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it. + % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315, + % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). +% + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \special{pdf:bann << /Border [0 0 0] + /Subtype /Link /A << /S /URI /URI (#1) >> >>}% + \endgroup} + \def\endlink{\setcolor{\maincolor}\special{pdf:eann}} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \special{pdf:bann << /Border [0 0 0] + /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +% + % + % @image support + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\doxeteximage#1#2#3{% + \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\xeteximgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errmessage{Could not find image file #1 for XeTeX}% + \else \gdef\xeteximgext{JPG}% + \fi + \else \gdef\xeteximgext{jpeg}% + \fi + \else \gdef\xeteximgext{jpg}% + \fi + \else \gdef\xeteximgext{png}% + \fi + \else \gdef\xeteximgext{PDF}% + \fi + \else \gdef\xeteximgext{pdf}% + \fi + \closein 1 + \endgroup + % + % Putting an \hbox around the image can prevent an over-long line + % after the image. + \hbox\bgroup + \def\xetexpdfext{pdf}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \def\xetexpdfext{PDF}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \XeTeXpicfile "#1".\xeteximgext "" + \fi + \fi + \ifdim \wd0 >0pt width \xeteximagewidth \fi + \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + \egroup + } +\fi + + +% +\message{fonts,} + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +% +\newdimen\textleading +\def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\thisisundefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi + + +% Set the font macro #1 to the font named \fontprefix#2. +% #3 is the font's design size, #4 is a scale factor, #5 is the CMap +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% +\def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% +} +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\thisisundefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} % where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. (The default in Texinfo.) +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\ttslfont=\defttsl \let\slfont=\defsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for math mode superscripts (7pt). +\def\sevennominalsize{7pt} +\setfont\sevenrm\rmshape{7}{1000}{OT1} +\setfont\seventt\ttshape{10}{700}{OT1TT} +\setfont\sevenbf\bfshape{10}{700}{OT1} +\setfont\sevenit\itshape{7}{1000}{OT1IT} +\setfont\sevensl\slshape{10}{700}{OT1} +\setfont\sevensf\sfshape{10}{700}{OT1} +\setfont\sevensc\scshape{10}{700}{OT1} +\setfont\seventtsl\ttslshape{10}{700}{OT1TT} +\font\seveni=cmmi7 +\font\sevensy=cmsy7 +\def\sevenecsize{0700} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acronym in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts +\rm +} % end of 11pt text font size definitions, \definetextfontsizexi + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\slfont=\defsl \let\ttslfont=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for math mode superscripts (7pt). +\def\sevennominalsize{7pt} +\setfont\sevenrm\rmshape{7}{1000}{OT1} +\setfont\seventt\ttshape{10}{700}{OT1TT} +\setfont\sevenbf\bfshape{10}{700}{OT1} +\setfont\sevenit\itshape{7}{1000}{OT1IT} +\setfont\sevensl\slshape{10}{700}{OT1} +\setfont\sevensf\sfshape{10}{700}{OT1} +\setfont\sevensc\scshape{10}{700}{OT1} +\setfont\seventtsl\ttslshape{10}{700}{OT1TT} +\font\seveni=cmmi7 +\font\sevensy=cmsy7 +\def\sevenecsize{0700} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acronym in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts +\rm +} % end of 10pt text font size definitions, \definetextfontsizex + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + +% +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname #1font\endcsname % change the current font +} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. +% We don't bother to reset \scriptscriptfont; awaiting user need. +% +\def\resetmathfonts{% + \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont + \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont + \textfont\ttfam=\ttfont \textfont\sffam=\sffont + % + % Fonts for superscript. Note that the 7pt fonts are used regardless + % of the current font size. + \scriptfont0=\sevenrm \scriptfont1=\seveni \scriptfont2=\sevensy + \scriptfont\itfam=\sevenit \scriptfont\slfam=\sevensl + \scriptfont\bffam=\sevenbf \scriptfont\ttfam=\seventt + \scriptfont\sffam=\sevensf +} + +% + +% The font-changing commands (all called \...fonts) redefine the meanings +% of \STYLEfont, instead of just \STYLE. We do this because \STYLE needs +% to also set the current \fam for math mode. Our \STYLE (e.g., \rm) +% commands hardwire \STYLEfont to set the current font. +% +% The fonts used for \ifont are for "math italics" (\itfont is for italics +% in regular text). \syfont is also used in math mode only. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used +% in, e.g., the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% + +\def\assignfonts#1{% + \expandafter\let\expandafter\rmfont\csname #1rm\endcsname + \expandafter\let\expandafter\itfont\csname #1it\endcsname + \expandafter\let\expandafter\slfont\csname #1sl\endcsname + \expandafter\let\expandafter\bffont\csname #1bf\endcsname + \expandafter\let\expandafter\ttfont\csname #1tt\endcsname + \expandafter\let\expandafter\smallcaps\csname #1sc\endcsname + \expandafter\let\expandafter\sffont \csname #1sf\endcsname + \expandafter\let\expandafter\ifont \csname #1i\endcsname + \expandafter\let\expandafter\syfont \csname #1sy\endcsname + \expandafter\let\expandafter\ttslfont\csname #1ttsl\endcsname +} + +\newif\ifrmisbold + +% Select smaller font size with the current style. Used to change font size +% in, e.g., the LaTeX logo and acronyms. If we are using bold fonts for +% normal roman text, also use bold fonts for roman text in the smaller size. +\def\switchtolllsize{% + \expandafter\assignfonts\expandafter{\lllsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +\def\switchtolsize{% + \expandafter\assignfonts\expandafter{\lsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +\def\definefontsetatsize#1#2#3#4#5{% +\expandafter\def\csname #1fonts\endcsname{% + \def\curfontsize{#1}% + \def\lsize{#2}\def\lllsize{#3}% + \csname rmisbold#5\endcsname + \assignfonts{#1}% + \resetmathfonts + \setleading{#4}% +}} + +\definefontsetatsize{text} {reduced}{smaller}{\textleading}{false} +\definefontsetatsize{title} {chap} {subsec} {27pt} {true} +\definefontsetatsize{chap} {sec} {text} {19pt} {true} +\definefontsetatsize{sec} {subsec} {reduced}{17pt} {true} +\definefontsetatsize{ssec} {text} {small} {15pt} {true} +\definefontsetatsize{reduced}{small} {smaller}{10.5pt}{false} +\definefontsetatsize{small} {smaller}{smaller}{10.5pt}{false} +\definefontsetatsize{smaller}{smaller}{smaller}{9.5pt} {false} + +\def\titlefont#1{{\titlefonts\rm #1}} +\let\subsecfonts = \ssecfonts +\let\subsubsecfonts = \ssecfonts + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} +\gdef\setregularquotes{\let`\lq \let'\rq} +} + +% Allow an option to not use regular directed right quote/apostrophe +% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). +% The undirected quote is ugly, so don't make it the default, but it +% works for pasting with more pdf viewers (at least evince), the +% lilypond developers report. xpdf does work with the regular 0x27. +% +\def\codequoteright{% + \ifmonospace + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi + \else + '% + \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \ifmonospace + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi + \else + \relax`% + \fi +} + +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} +% +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} + +% Output an italic correction unless \next (presumed to be the following +% character) is such as not to need one. +\def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ifx\next\.% + \else\ifx\next\comma% + \else\ptexslash + \fi\fi\fi\fi\fi + \aftersmartic +} + +% Unconditional use \ttsl, and no ic. @var is set to this for defuns. +\def\ttslanted#1{{\ttsl #1}} + +% @cite is like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + \smartslanted{#1}% +} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m + \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @t, explicit typewriter. +\def\t#1{% + {\tt \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} + +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp + +% @code (and similar) prints in typewriter, but with spaces the same +% size as normal in the surrounding text, without hyphenation, etc. +% This is a subroutine for that. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \plainfrenchspacing + #1% + }% + \null % reset spacefactor to 1000 +} + +% We *must* turn on hyphenation at `-' and `_' in @code. +% (But see \codedashfinish below.) +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. +% +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. -- rms. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setcodequotes + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\normaldash + \let_\realunder + \fi + % Given -foo (with a single dash), we do not want to allow a break + % after the hyphen. + \global\let\codedashprev=\codedash + % + \codex + } + % + \gdef\codedash{\futurelet\next\codedashfinish} + \gdef\codedashfinish{% + \normaldash % always output the dash character itself. + % + % Now, output a discretionary to allow a line break, unless + % (a) the next character is a -, or + % (b) the preceding character is a -. + % E.g., given --posix, we do not want to allow a break after either -. + % Given --foo-bar, we do want to allow a break between the - and the b. + \ifx\next\codedash \else + \ifx\codedashprev\codedash + \else \discretionary{}{}{}\fi + \fi + % we need the space after the = for the case when \next itself is a + % space token; it would get swallowed otherwise. As in @code{- a}. + \global\let\codedashprev= \next + } +} +\def\normaldash{-} +% +\def\codex #1{\tclose{#1}\endgroup} + +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is bad. +% @allowcodebreaks provides a document-level way to turn breaking at - +% and _ on and off. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi +} + +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + +% @uref (abbreviation for `urlref') aka @url takes an optional +% (comma-separated) second argument specifying the text to display and +% an optional third arg as text to display instead of (rather than in +% addition to) the url itself. First (mandatory) arg is the url. + +% TeX-only option to allow changing PDF output to show only the second +% arg (if given), and not the url (which is then just the link target). +\newif\ifurefurlonlylink + +% The default \pretolerance setting stops the penalty inserted in +% \urefallowbreak being a discouragement to line breaking. Set it to +% a negative value for this paragraph only. Hopefully this does not +% conflict with redefinitions of \par done elsewhere. +\def\nopretolerance{% +\pretolerance=-1 +\def\par{\endgraf\pretolerance=100 \let\par\endgraf}% +} + +% The main macro is \urefbreak, which allows breaking at expected +% places within the url. +\def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +% +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% look for second arg + \ifdim\wd0 > 0pt + \ifpdf + % For pdfTeX and LuaTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \else + \ifx\XeTeXrevision\thisisundefined + \unhbox0\ (\urefcode{#1})% DVI, always show arg and url + \else + % For XeTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \fi + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode`\&=\active \catcode`\.=\active + \catcode`\#=\active \catcode`\?=\active + \catcode`\/=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setcodequotes + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +\def\urefcodeamp{\urefprebreak \&\urefpostbreak} +\def\urefcodedot{\urefprebreak .\urefpostbreak} +\def\urefcodehash{\urefprebreak \#\urefpostbreak} +\def\urefcodequest{\urefprebreak ?\urefpostbreak} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprebreak \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpostbreak \fi + } +} + +% By default we'll break after the special characters, but some people like to +% break before the special chars, so allow that. Also allow no breaking at +% all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\urefallowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\urefallowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +% Allow a ragged right output to aid breaking long URL's. There can +% be a break at the \allowbreak with no extra glue (if the existing stretch in +% the line is sufficient), a break at the \penalty with extra glue added +% at the end of the line, or no break at all here. +% Changing the value of the penalty and/or the amount of stretch affects how +% preferable one choice is over the other. +\def\urefallowbreak{% + \penalty0\relax + \hskip 0pt plus 2 em\relax + \penalty1000\relax + \hskip 0pt plus -2 em\relax +} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdforxetex + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} + +\def\xkey{\key} +\def\kbdsub#1#2#3\par{% + \def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\setcodequotes\look}}\fi + \else{\tclose{\kbdfont\setcodequotes\look}}\fi +} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setregularquotes + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\switchtolsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \ifmmode\else % only go into math if not in math mode already + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + % have to provide another name for sup operator + \let\mathopsup=\sup + $\expandafter\finishmath\fi +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% for @sub and @sup, if in math mode, just do a normal sub/superscript. +% If in text, use math to place as sub/superscript, but switch +% into text mode, with smaller fonts. This is a different font than the +% one used for real math sub/superscripts (8pt vs. 7pt), but let's not +% fix it (significant additions to font machinery) until someone notices. +% +\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} +\def\finishsub#1{$\sb{\hbox{\switchtolllsize #1}}$}% +% +\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} +\def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% + +% provide this command from LaTeX as it is very common +\def\frac#1#2{{{#1}\over{#2}}} + +% @displaymath. +% \globaldefs is needed to recognize the end lines in \tex and +% \end tex. Set \thisenv as @end displaymath is seen before @end tex. +{\obeylines +\globaldefs=1 +\envdef\displaymath{% +\tex% +\def\thisenv{\displaymath}% +\begingroup\let\end\displaymathend% +$$% +} + +\def\displaymathend{$$\endgroup\end}% + +\def\Edisplaymath{% +\def\thisenv{\tex}% +\end tex +}} + + +% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. +% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, +% except specified as a normal braced arg, so no newlines to worry about. +% +\def\outfmtnametex{tex} +% +\long\def\inlinefmt#1{\doinlinefmt #1,\finish} +\long\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% +% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if +% FMTNAME is tex, else ELSE-TEXT. +\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} +\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi +} +% +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\long\def\inlineraw{\tex \doinlineraw} +\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + +% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. +% +\long\def\inlineifset#1{\doinlineifset #1,\finish} +\long\def\doinlineifset#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax + \else\ignorespaces#2\fi +} + +% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. +% +\long\def\inlineifclear#1{\doinlineifclear #1,\finish} +\long\def\doinlineifclear#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} +\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} +\let\{=\lbracechar +\let\}=\rbracechar + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \switchtolllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} + +% Some math mode symbols. Define \ensuremath to switch into math mode +% unless we are already there. Expansion tricks may not be needed here, +% but safer, and can't hurt. +\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} +\def\ensuredmath#1{$\relax#1$} +% +\def\bullet{\ensuremath\ptexbullet} +\def\geq{\ensuremath\ge} +\def\leq{\ensuremath\le} +\def\minus{\ensuremath-} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\ttfont \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the European Computer Modern fonts (cm-super in outline format) +% for non-CM glyphs. That is ec* for regular text and tc* for the text +% companion symbols (LaTeX TS1 encoding). Both are part of the ec +% package and follow the same conventions. +% +\def\ecfont{\etcfont{e}} +\def\tcfont{\etcfont{t}} +% +\def\etcfont#1{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifmonospace + % typewriter: + \font\thisecfont = #1ctt\ecsize \space at \nominalsize + \else + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi + \fi + \thisecfont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\switchtolllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\thisisundefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + +% only change font for tt for correct kerning and to avoid using +% \ecfont unless necessary. +\def\quotedblleft{% + \ifmonospace{\ecfont\char"10}\else{\char"5C}\fi +} + +\def\quotedblright{% + \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi +} + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% @setcontentsaftertitlepage used to do an implicit @contents or +% @shortcontents after @end titlepage, but it is now obsolete. +\def\setcontentsaftertitlepage{% + \errmessage{@setcontentsaftertitlepage has been removed as a Texinfo + command; move your @contents command if you want the contents + after the title page.}}% +\def\setshortcontentsaftertitlepage{% + \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo + command; move your @shortcontents and @contents commands if you + want the contents after the title page.}}% + +\parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +% Settings used for typesetting titles: no hyphenation, no indentation, +% don't worry much about spacing, ragged right. This should be used +% inside a \vbox, and fonts need to be set appropriately first. \par should +% be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rm + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + +% Macros to be used within @titlepage: + +\let\subtitlerm=\rmfont +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \vbox{\titlefonts \raggedtitlesettings #1\par}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rm \leftline{#1}}% + \fi +} + + +% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenchapheadline% headline on even pages with a new chapter +\newtoks\oddchapheadline % headline on odd pages with a new chapter +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make \makeheadline and \makefootline in Plain TeX use those variables +\headline={{\textfonts\rm + \ifchapterpage + \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi + \else + \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi + \fi}} + +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% + \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} + \global\evenchapheadline=\evenheadline} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% + \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% + \global\oddchapheadline=\oddheadline} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\txipageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\parseargdef\everyheadingmarks{\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\parseargdef\everyfootingmarks{\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\parseargdef\headings{\csname HEADINGS#1\endcsname} + +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting +\HEADINGSoff % it's the default + +% When we turn headings on, set the page number to 1. +\def\pageone{ + \global\pageno=1 + \global\arabiccount = \pagecount +} + +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{% +\pageone +\HEADINGSdoublex +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{% +\pageone +\HEADINGSsinglex +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\folio\hfil}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\hfil\folio}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% for @setchapternewpage off +\def\HEADINGSsinglechapoff{% +\pageone +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline=\evenheadline +\global\oddchapheadline=\oddheadline +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\thisisundefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark so that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + + +% @multitable macros + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% @headitem starts a heading row, which we typeset in bold. Assignments +% have to be global since we are inside the implicit group of an +% alignment entry. \everycr below resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% default for tables with no headings. +\let\headitemcrhook=\relax +% +\def\tab{\checkenv\multitable &\the\everytab}% + +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \parskip=0pt + \parindent=6pt + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% Reset from possible headitem. + \global\colcount=0 % Reset the column counter. + % + % Check for saved footnotes, etc.: + \checkinserts + % + % Perhaps a \nobreak, then reset: + \headitemcrhook + \global\let\headitemcrhook=\relax + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \strut + \vtop{% + \advance\hsize by -1\leftskip + % Find the correct column width + \hsize=\expandafter\csname col\the\colcount\endcsname + % + \rightskip=0pt + \ifnum\colcount=1 + \advance\hsize by\leftskip % Add indent of surrounding text + \else + % In order to keep entries from bumping into each other. + \leftskip=12pt + \ifsetpercent \else + % If a template has been used + \advance\hsize by \leftskip + \fi + \fi + \noindent\ignorespaces##\unskip\strut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\-=\active \catcode`\_=\active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\normaldash \let_\normalunderscore + } +} + +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% Like \expandablevalue, but completely expandable (the \message in the +% definition above operates at the execution level of TeX). Used when +% writing to auxiliary files, due to the expansion that \write does. +% If flag is undefined, pass through an unexpanded @value command: maybe it +% will be set by the time it is read back in. +% +% NB flag names containing - or _ may not work here. +\def\dummyvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \string\value{#1}% + \else + \csname SET#1\endcsname + \fi +} + +% Used for @value's in index entries to form the sort key: expand the @value +% if possible, otherwise sort late. +\def\indexnofontsvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + ZZZZZZZ% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get the special treatment we need for `@end ifset,' we call +% \makecond and then redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end executes the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handled similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {foo} defines an index named IX. +% It automatically defines \IXindex such that +% \IXindex ...rest of line... puts an entry in the index IX. +% It also defines \IXindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is IX. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% +\def\newindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + +% The default indices: +\newindex{cp}% concepts, +\newcodeindex{fn}% functions, +\newcodeindex{vr}% variables, +\newcodeindex{tp}% types, +\newcodeindex{ky}% keys +\newcodeindex{pg}% and programs. + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + \requireopenindexfile{#3}% + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all index macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is the two-letter name of the index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} +\def\doindexxxx #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +\def\docodeindexxxx #1{\docind{\indexname}{#1}} + + +% Used for the aux, toc and index files to prevent expansion of Texinfo +% commands. +% +\def\atdummies{% + \definedummyletter\@% + \definedummyletter\ % + \definedummyletter\{% + \definedummyletter\}% + \definedummyletter\&% + % + % Do the redefinitions. + \definedummies + \otherbackslash +} + +% \definedummyword defines \#1 as \string\#1\space, thus effectively +% preventing its expansion. This is used only for control words, +% not control letters, because the \space would be incorrect for +% control characters, but is needed to separate the control word +% from whatever follows. +% +% These can be used both for control words that take an argument and +% those that do not. If it is followed by {arg} in the input, then +% that will dutifully get written to the index (or wherever). +% +% For control letters, we have \definedummyletter, which omits the +% space. +% +\def\definedummyword #1{\def#1{\string#1\space}}% +\def\definedummyletter#1{\def#1{\string#1}}% +\let\definedummyaccent\definedummyletter + +% Called from \atdummies to prevent the expansion of commands. +% +\def\definedummies{% + % + \let\commondummyword\definedummyword + \let\commondummyletter\definedummyletter + \let\commondummyaccent\definedummyaccent + \commondummiesnofonts + % + \definedummyletter\_% + \definedummyletter\-% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\DH + \definedummyword\L + \definedummyword\O + \definedummyword\OE + \definedummyword\TH + \definedummyword\aa + \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown + \definedummyword\l + \definedummyword\o + \definedummyword\oe + \definedummyword\ordf + \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\ampchar + \definedummyword\atchar + \definedummyword\arrow + \definedummyword\backslashchar + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\entrybreak + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq + \definedummyword\guillemetleft + \definedummyword\guillemetright + \definedummyword\guilsinglleft + \definedummyword\guilsinglright + \definedummyword\lbracechar + \definedummyword\leq + \definedummyword\mathopsup + \definedummyword\minus + \definedummyword\ogonek + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\quotedblbase + \definedummyword\quotedblleft + \definedummyword\quotedblright + \definedummyword\quoteleft + \definedummyword\quoteright + \definedummyword\quotesinglbase + \definedummyword\rbracechar + \definedummyword\result + \definedummyword\sub + \definedummyword\sup + \definedummyword\textdegree + % + \definedummyword\subentry + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + \let\value\dummyvalue + % + \normalturnoffactive +} + +% \commondummiesnofonts: common to \definedummies and \indexnofonts. +% Define \commondummyletter, \commondummyaccent and \commondummyword before +% using. Used for accents, font commands, and various control letters. +% +\def\commondummiesnofonts{% + % Control letters and accents. + \commondummyletter\!% + \commondummyaccent\"% + \commondummyaccent\'% + \commondummyletter\*% + \commondummyaccent\,% + \commondummyletter\.% + \commondummyletter\/% + \commondummyletter\:% + \commondummyaccent\=% + \commondummyletter\?% + \commondummyaccent\^% + \commondummyaccent\`% + \commondummyaccent\~% + \commondummyword\u + \commondummyword\v + \commondummyword\H + \commondummyword\dotaccent + \commondummyword\ogonek + \commondummyword\ringaccent + \commondummyword\tieaccent + \commondummyword\ubaraccent + \commondummyword\udotaccent + \commondummyword\dotless + % + % Texinfo font commands. + \commondummyword\b + \commondummyword\i + \commondummyword\r + \commondummyword\sansserif + \commondummyword\sc + \commondummyword\slanted + \commondummyword\t + % + % Commands that take arguments. + \commondummyword\abbr + \commondummyword\acronym + \commondummyword\anchor + \commondummyword\cite + \commondummyword\code + \commondummyword\command + \commondummyword\dfn + \commondummyword\dmn + \commondummyword\email + \commondummyword\emph + \commondummyword\env + \commondummyword\file + \commondummyword\image + \commondummyword\indicateurl + \commondummyword\inforef + \commondummyword\kbd + \commondummyword\key + \commondummyword\math + \commondummyword\option + \commondummyword\pxref + \commondummyword\ref + \commondummyword\samp + \commondummyword\strong + \commondummyword\tie + \commondummyword\U + \commondummyword\uref + \commondummyword\url + \commondummyword\var + \commondummyword\verb + \commondummyword\w + \commondummyword\xref +} + +\let\indexlbrace\relax +\let\indexrbrace\relax +\let\indexatchar\relax +\let\indexbackslash\relax + +{\catcode`\@=0 +\catcode`\\=13 + @gdef@backslashdisappear{@def\{}} +} + +{ +\catcode`\<=13 +\catcode`\-=13 +\catcode`\`=13 + \gdef\indexnonalnumdisappear{% + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + % @set txiindexlquoteignore makes us ignore left quotes in the sort term. + % (Introduced for FSFS 2nd ed.) + \let`=\empty + \fi + % + \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else + \backslashdisappear + \fi + % + \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + \def-{}% + \fi + \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + \def<{}% + \fi + \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + \def\@{}% + \fi + } + + \gdef\indexnonalnumreappear{% + \let-\normaldash + \let<\normalless + } +} + + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\commondummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\commondummyletter##1{\let##1\empty}% + % All control words become @asis by default; overrides below. + \let\commondummyword\commondummyaccent + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + \uccode`\1=`\{ \uppercase{\def\{{1}}% + \uccode`\1=`\} \uppercase{\def\}{1}}% + \let\lbracechar\{% + \let\rbracechar\}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\DH{DZZ}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\TH{TH}% + \def\aa{aa}% + \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% + \def\l{l}% + \def\oe{oe}% + \def\ordf{a}% + \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{th}% + % + \let\do\indexnofontsdef + % + \do\LaTeX{LaTeX}% + \do\TeX{TeX}% + % + % Assorted special characters. + \do\atchar{@}% + \do\arrow{->}% + \do\bullet{bullet}% + \do\comma{,}% + \do\copyright{copyright}% + \do\dots{...}% + \do\enddots{...}% + \do\equiv{==}% + \do\error{error}% + \do\euro{euro}% + \do\expansion{==>}% + \do\geq{>=}% + \do\guillemetleft{<<}% + \do\guillemetright{>>}% + \do\guilsinglleft{<}% + \do\guilsinglright{>}% + \do\leq{<=}% + \do\lbracechar{\{}% + \do\minus{-}% + \do\point{.}% + \do\pounds{pounds}% + \do\print{-|}% + \do\quotedblbase{"}% + \do\quotedblleft{"}% + \do\quotedblright{"}% + \do\quoteleft{`}% + \do\quoteright{'}% + \do\quotesinglbase{,}% + \do\rbracechar{\}}% + \do\registeredsymbol{R}% + \do\result{=>}% + \do\textdegree{o}% + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist + \let\value\indexnofontsvalue +} + +% Give the control sequence a definition that removes the {} that follows +% its use, e.g. @AA{} -> AA +\def\indexnofontsdef#1#2{\def#1##1{#2}}% + + + + +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\doindwrite + }% + \fi +} + +% Same as \doind, but for code indices +\def\docind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\docindwrite + }% + \fi +} + +% Check if an index file has been opened, and if not, open it. +\def\requireopenindexfile#1{% +\ifnum\csname #1indfile\endcsname=0 + \expandafter\newwrite \csname#1indfile\endcsname + \edef\suffix{#1}% + % A .fls suffix would conflict with the file extension for the output + % of -recorder, so use .f1s instead. + \ifx\suffix\indexisfl\def\suffix{f1}\fi + % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.\suffix + % Using \immediate above here prevents an object entering into the current + % box, which could confound checks such as those in \safewhatsit for + % preceding skips. + \typeout{Writing index file \jobname.\suffix}% +\fi} +\def\indexisfl{fl} + +% Definition for writing index entry sort key. +{ +\catcode`\-=13 +\gdef\indexwritesortas{% + \begingroup + \indexnonalnumreappear + \indexwritesortasxxx} +\gdef\indexwritesortasxxx#1{% + \xdef\indexsortkey{#1}\endgroup} +} + +\def\indexwriteseealso#1{ + \gdef\pagenumbertext{\string\seealso{#1}}% +} +\def\indexwriteseeentry#1{ + \gdef\pagenumbertext{\string\seeentry{#1}}% +} + +% The default definitions +\def\sortas#1{}% +\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only +\def\putwordSeeAlso{See also} +\def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only + + +% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": +% * Set \bracedtext to "{aaa}{bbb}" +% * Set \fullindexsortkey to "aaa @subentry ZZZ" +% * If @seealso occurs, set \pagenumbertext +% +\def\splitindexentry#1{% + \gdef\fullindexsortkey{}% + \xdef\bracedtext{}% + \def\sep{}% + \def\seealso##1{}% + \def\seeentry##1{}% + \expandafter\doindexsegment#1\subentry\finish\subentry +} + +% append the results from the next segment +\def\doindexsegment#1\subentry{% + \def\segment{#1}% + \ifx\segment\isfinish + \else + % + % Fully expand the segment, throwing away any @sortas directives, and + % trim spaces. + \edef\trimmed{\segment}% + \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \ifincodeindex + \edef\trimmed{\noexpand\code{\trimmed}}% + \fi + % + \xdef\bracedtext{\bracedtext{\trimmed}}% + % + % Get the string to sort by. Process the segment with all + % font commands turned off. + \bgroup + \let\sortas\indexwritesortas + \let\seealso\indexwriteseealso + \let\seeentry\indexwriteseeentry + \indexnofonts + % The braces around the commands are recognized by texindex. + \def\lbracechar{{\string\indexlbrace}}% + \def\rbracechar{{\string\indexrbrace}}% + \let\{=\lbracechar + \let\}=\rbracechar + \def\@{{\string\indexatchar}}% + \def\atchar##1{\@}% + \def\backslashchar{{\string\indexbackslash}}% + \uccode`\~=`\\ \uppercase{\let~\backslashchar}% + % + \let\indexsortkey\empty + \global\let\pagenumbertext\empty + % Execute the segment and throw away the typeset output. This executes + % any @sortas or @seealso commands in this segment. + \setbox\dummybox = \hbox{\segment}% + \ifx\indexsortkey\empty{% + \indexnonalnumdisappear + \xdef\trimmed{\segment}% + \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \xdef\indexsortkey{\trimmed}% + \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi + }\fi + % + % Append to \fullindexsortkey. + \edef\tmp{\gdef\noexpand\fullindexsortkey{% + \fullindexsortkey\sep\indexsortkey}}% + \tmp + \egroup + \def\sep{\subentry}% + % + \expandafter\doindexsegment + \fi +} +\def\isfinish{\finish}% +\newbox\dummybox % used above + +\let\subentry\relax + +% Use \ instead of @ in index files. To support old texi2dvi and texindex. +% This works without changing the escape character used in the toc or aux +% files because the index entries are fully expanded here, and \string uses +% the current value of \escapechar. +\def\escapeisbackslash{\escapechar=`\\} + +% Use \ in index files by default. texi2dvi didn't support @ as the escape +% character (as it checked for "\entry" in the files, and not "@entry"). When +% the new version of texi2dvi has had a chance to become more prevalent, then +% the escape character can change back to @ again. This should be an easy +% change to make now because both @ and \ are only used as escape characters in +% index files, never standing for themselves. +% +\set txiindexescapeisbackslash + +% Write the entry in \indextext to the index file. +% + +\newif\ifincodeindex +\def\doindwrite{\incodeindexfalse\doindwritex} +\def\docindwrite{\incodeindextrue\doindwritex} + +\def\doindwritex{% + \maybemarginindex + % + \atdummies + % + \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else + \escapeisbackslash + \fi + % + % For texindex which always views { and } as separators. + \def\{{\lbracechar{}}% + \def\}{\rbracechar{}}% + \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}% + % + % Split the entry into primary entry and any subentries, and get the index + % sort key. + \splitindexentry\indextext + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + % + \edef\temp{% + \write\writeto{% + \string\entry{\fullindexsortkey}% + {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}% + \bracedtext}% + }% + \temp +} + +% Put the index entry in the margin if desired (undocumented). +\def\maybemarginindex{% + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}% + \fi +} +\let\SETmarginindex=\relax + + +% Take care of unwanted page breaks/skips around a whatsit: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write or \pdfdest will make \lastskip zero. The result is that +% sequences like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{\ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% \entry {topic}{} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. +% \secondary {subtopic}{} +% for a subtopic with sub-subtopics +% \tertiary {subtopic}{subsubtopic}{pagelist} +% for each sub-subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See comment in \requireopenindexfile. + \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + % + % See if the index file exists and is nonempty. + \openin 1 \jobname.\indexname s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \typeout{No file \jobname.\indexname s.}% + \else + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \thisline + \ifeof 1 + \putwordIndexIsEmpty + \else + \expandafter\printindexzz\thisline\relax\relax\finish% + \fi + \fi + \closein 1 +\endgroup} + +% If the index file starts with a backslash, forgo reading the index +% file altogether. If somebody upgrades texinfo.tex they may still have +% old index files using \ as the escape character. Reading this would +% at best lead to typesetting garbage, at worst a TeX syntax error. +\def\printindexzz#1#2\finish{% + \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax + \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 + \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax +\errmessage{% +ERROR: A sorted index file in an obsolete format was skipped. +To fix this problem, please upgrade your version of 'texi2dvi' +or 'texi2pdf' to that at . +If you are using an old version of 'texindex' (part of the Texinfo +distribution), you may also need to upgrade to a newer version (at least 6.0). +You may be able to typeset the index if you run +'texindex \jobname.\indexname' yourself. +You could also try setting the 'txiindexescapeisbackslash' flag by +running a command like +'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do +this, Texinfo will try to use index files in the old format. +If you continue to have problems, deleting the index files and starting again +might help (with 'rm \jobname.?? \jobname.??s')% +}% + \else + (Skipped sorted index file in obsolete format) + \fi + \else + \begindoublecolumns + \input \jobname.\indexname s + \enddoublecolumns + \fi + \else + \begindoublecolumns + \catcode`\\=0\relax + % + % Make @ an escape character to give macros a chance to work. This + % should work because we (hopefully) don't otherwise use @ in index files. + %\catcode`\@=12\relax + \catcode`\@=0\relax + \input \jobname.\indexname s + \enddoublecolumns + \fi +} + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 +\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 +\catcode`\$=3 +\gdef\initialglyphs{% + % special control sequences used in the index sort key + \let\indexlbrace\{% + \let\indexrbrace\}% + \let\indexatchar\@% + \def\indexbackslash{\math{\backslash}}% + % + % Some changes for non-alphabetic characters. Using the glyphs from the + % math fonts looks more consistent than the typewriter font used elsewhere + % for these characters. + \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} + % + % In case @\ is used for backslash + \uppercase{\let\\=~} + % Can't get bold backslash so don't use bold forward slash + \catcode`\/=13 + \def/{{\secrmnotbold \normalslash}}% + \def-{{\normaldash\normaldash}}% en dash `--' + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% + \def\_{% + \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% + \def|{$\vert$}% + \def<{$\less$}% + \def>{$\gtr$}% + \def+{$\normalplus$}% +}} + +\def\initial{% + \bgroup + \initialglyphs + \initialx +} + +\def\initialx#1{% + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + % The glue before the bonus allows a little bit of space at the + % bottom of a column to reduce an increase in inter-line spacing. + \nobreak + \vskip 0pt plus 5\baselineskip + \penalty -300 + \vskip 0pt plus -5\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus 1\baselineskip + \leftline{\secfonts \kern-0.05em \secbf #1}% + % \secfonts is inside the argument of \leftline so that the change of + % \baselineskip will not affect any glue inserted before the vbox that + % \leftline creates. + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip + \egroup % \initialglyphs +} + +\newdimen\entryrightmargin +\entryrightmargin=0pt + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +\def\entry{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % No extra space above this paragraph. + \parskip = 0in + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% An undocumented command + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\entrybreak{\unskip\space\ignorespaces}% +\def\doentry{% + % Save the text of the entry + \global\setbox\boxA=\hbox\bgroup + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. + % Not absorbing as a macro argument reduces the chance of problems + % with catcodes occurring. +} +{\catcode`\@=11 +\gdef\finishentry#1{% + \egroup % end box A + \dimen@ = \wd\boxA % Length of text of entry + \global\setbox\boxA=\hbox\bgroup + \unhbox\boxA + % #1 is the page number. + % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % + \else + % + \null\nobreak\indexdotfill % Have leaders before the page number. + % + \ifpdforxetex + \pdfgettoks#1.% + \hskip\skip\thinshrinkable\the\toksA + \else + \hskip\skip\thinshrinkable #1% + \fi + \fi + \egroup % end \boxA + \ifdim\wd\boxB = 0pt + \noindent\unhbox\boxA\par + \nobreak + \else\bgroup + % We want the text of the entries to be aligned to the left, and the + % page numbers to be aligned to the right. + % + \parindent = 0pt + \advance\leftskip by 0pt plus 1fil + \advance\leftskip by 0pt plus -1fill + \rightskip = 0pt plus -1fil + \advance\rightskip by 0pt plus 1fill + % Cause last line, which could consist of page numbers on their own + % if the list of page numbers is long, to be aligned to the right. + \parfillskip=0pt plus -1fill + % + \advance\rightskip by \entryrightmargin + % Determine how far we can stretch into the margin. + % This allows, e.g., "Appendix H GNU Free Documentation License" to + % fit on one line in @letterpaper format. + \ifdim\entryrightmargin>2.1em + \dimen@i=2.1em + \else + \dimen@i=0em + \fi + \advance \parfillskip by 0pt minus 1\dimen@i + % + \dimen@ii = \hsize + \advance\dimen@ii by -1\leftskip + \advance\dimen@ii by -1\entryrightmargin + \advance\dimen@ii by 1\dimen@i + \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line + \ifdim\dimen@ > 0.8\dimen@ii % due to long index text + % Try to split the text roughly evenly. \dimen@ will be the length of + % the first line. + \dimen@ = 0.7\dimen@ + \dimen@ii = \hsize + \ifnum\dimen@>\dimen@ii + % If the entry is too long (for example, if it needs more than + % two lines), use all the space in the first line. + \dimen@ = \dimen@ii + \fi + \advance\leftskip by 0pt plus 1fill % ragged right + \advance \dimen@ by 1\rightskip + \parshape = 2 0pt \dimen@ 0em \dimen@ii + % Ideally we'd add a finite glue at the end of the first line only, + % instead of using \parshape with explicit line lengths, but TeX + % doesn't seem to provide a way to do such a thing. + % + % Indent all lines but the first one. + \advance\leftskip by 1em + \advance\parindent by -1em + \fi\fi + \indent % start paragraph + \unhbox\boxA + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font + % + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. + % + \par % format the paragraph + \egroup % The \vbox + \fi + \endgroup +}} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +% Like plain.tex's \dotfill, except uses up at least 1 em. +% The filll stretch here overpowers both the fil and fill stretch to push +% the page number to the right. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} + + +\def\primary #1{\line{#1\hfil}} + +\def\secondary{\indententry{0.5cm}} +\def\tertiary{\indententry{1cm}} + +\def\indententry#1#2#3{% + \bgroup + \leftskip=#1 + \entry{#2}{#3}% + \egroup +} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 % private names + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % If not much space left on page, start a new page. + \ifdim\pagetotal>0.8\vsize\vfill\eject\fi + % + % Grab any single-column material above us. + \output = {% + \savetopmark + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \advance\vsize by -\ht\partialpage + \vsize = 2\vsize + % + % For the benefit of balancing columns + \advance\baselineskip by 0pt plus 0.5pt +} + +% The double-column output routine for all double-column pages except +% the last, which is done by \balancecolumns. +% +\def\doublecolumnout{% + % + \savetopmark + \splittopskip=\topskip \splitmaxdepth=\maxdepth + \dimen@ = \vsize + \divide\dimen@ by 2 + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@ + \global\advance\vsize by 2\ht\partialpage + \onepageout\pagesofar % empty except for the first time we are called + \unvbox\PAGE + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\txipagewidth{\box0\hfil\box2}% +} + + +% Finished with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \txipageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. + \savetopmark + \balancecolumns + }% + \eject % call the \output just set + \ifdim\pagetotal=0pt + % Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. + \global\output=\expandafter{\the\defaultoutput} + % + \endgroup % started in \begindoublecolumns + % Leave the double-column material on the current page, no automatic + % page break. + \box\balancedcolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize. + \global\vsize = \txipageheight % + \pagegoal = \txipageheight % + \else + % We had some left-over material. This might happen when \doublecolumnout + % is called in \balancecolumns. Try again. + \expandafter\enddoublecolumns + \fi +} +\newbox\balancedcolumns +\setbox\balancedcolumns=\vbox{shouldnt see this}% +% +% Only called for the last of the double column material. \doublecolumnout +% does the others. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \ifdim\dimen@<7\baselineskip + % Don't split a short final column in two. + \setbox2=\vbox{}% + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \else + % double the leading vertical space + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + \dimen@ii = \dimen@ + \splittopskip = \topskip + % Loop until left column is at least as high as the right column. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht1<\ht3 + \global\advance\dimen@ by 1pt + \repeat + }% + % Now the left column is in box 1, and the right column in box 3. + % + % Check whether the left column has come out higher than the page itself. + % (Note that we have doubled \vsize for the double columns, so + % the actual height of the page is 0.5\vsize). + \ifdim2\ht1>\vsize + % It appears that we have been called upon to balance too much material. + % Output some of it with \doublecolumnout, leaving the rest on the page. + \setbox\PAGE=\box0 + \doublecolumnout + \else + % Compare the heights of the two columns. + \ifdim4\ht1>5\ht3 + % Column heights are too different, so don't make their bottoms + % flush with each other. + \setbox2=\vbox to \ht1 {\unvbox3\vfill}% + \setbox0=\vbox to \ht1 {\unvbox1\vfill}% + \else + % Make column bottoms flush with each other. + \setbox2=\vbox to\ht1{\unvbox3\unskip}% + \setbox0=\vbox to\ht1{\unvbox1\unskip}% + \fi + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \fi + \fi + % +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% Let's start with @part. +\outer\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rm #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, as is done in \startcontents. + \let\pchapsepmacro\relax + \chapmacro{}{Yomitfromtoc}{}% + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +% +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +% Parameter controlling skip before chapter headings (if needed) +\newskip\chapheadingskip + +% Define plain chapter starts, and page on/off switching for it. +\def\chapbreak{\dobreak \chapheadingskip {-4000}} + +% Start a new page +\def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi +} + +\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\def\HEADINGSon{\HEADINGSsinglechapoff}} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +% \chapmacro - Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% Not used for @heading series. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yappendixkeyword{Yappendix} +\def\Yomitfromtockeyword{Yomitfromtoc} +% +\def\chapmacro#1#2#3{% + \expandafter\ifx\thisenv\titlepage\else + \checkenv{}% chapters, etc., should not start inside an environment. + \fi + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\currentchapterdefs + \let\prevsectiondefs=\currentsectiondefs + \gdef\currentsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\currentchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \else + \toks0={#1}% + \xdef\currentchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\currentchapterdefs + \let\prevsectiondefs=\currentsectiondefs + \domark + % + {% + \chapfonts \rm + \let\footnote=\errfootnoteheading % give better error message + % + % Have to define \currentsection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\currentsection{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text of the title, +% #2 is the section level (sec/subsec/subsubsec), +% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), +% #4 is the section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % It is ok for the @heading series commands to appear inside an + % environment (it's been historically allowed, though the logic is + % dubious), but not the others. + \ifx\temptype\Yomitfromtockeyword\else + \checkenv{}% non-@*heading should not be in an environment. + \fi + \let\footnote=\errfootnoteheading + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rm + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\currentsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\currentsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\currentsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\currentsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \global\let\prevsectiondefs=\currentsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\currentsection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \currentsection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\currentsection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\currentsection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) However, when a paragraph is not started next + % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out + % or the negative glue will cause weirdly wrong output, typically + % obscuring the section heading with something else. + \vskip-\parskip + % + % This is so the last item on the main vertical list is a known + % \penalty > 10000, so \startdefun, etc., can recognize the situation + % and do the needful. + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdforxetex + \global\pdfmakepagedesttrue + \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi + \def\thistitle{}% no title in double-sided headings + % Record where the Roman numerals started. + \ifnum\romancount=0 \global\romancount=\pagecount \fi +} + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \contentsendroman +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \contentsendroman +} +\let\shortcontents = \summarycontents + +% Get ready to use Arabic numerals again +\def\contentsendroman{% + \lastnegativepageno = \pageno + \global\pageno = \savepageno + % + % If \romancount > \arabiccount, the contents are at the end of the + % document. Otherwise, advance where the Arabic numerals start for + % the page numbers. + \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi +} + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{% + % Add stretch and a bonus for breaking the page before the part heading. + % This reduces the chance of the page being broken immediately after the + % part heading, before a following chapter heading. + \vskip 0pt plus 5\baselineskip + \penalty-300 + \vskip 0pt plus -5\baselineskip + \dochapentry{\numeralbox\labelspace#1}{}% +} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} + +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @tex ... @end tex escapes into raw TeX temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain @ character. + +\envdef\tex{% + \setregularquotes + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode `\`=\other + \catcode `\'=\other + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + % Inverse of the list at the beginning of the file. + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\sp=\ptexsp + \let\*=\ptexstar + %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % we've made it outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. + +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +% only require the font if @cartouche is actually used +\def\cartouchefontdefs{% + \font\circle=lcircle10\relax + \circthick=\fontdimen8\circle +} +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip + + +\envdef\cartouche{% + \cartouchefontdefs + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi + % + \setbox\groupbox=\vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \addgroupbox + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp, @verbatim +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% +} +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setcodequotes + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \parsearg\gobble +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenvdef{display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\makedispenvdef{quotation}{\quotationstart} +% +\def\quotationstart{% + \indentedblockstart % same as \indentedblock, but increase right margin too. + \ifx\nonarrowing\relax + \advance\rightskip by \lispnarrowing + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallquotation{\Equotation} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \setcodequotes + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion. +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. +\newbox\verbbox +\def\starttabbox{\setbox\verbbox=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox + \leavevmode\box\verbbox \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% + \tabexpand + \setcodequotes + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{% + \starttabbox#2\egroup\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. + % The \egroup ends the \verbbox started at the end of the last line in + % the block. +\endgroup +% +\envdef\verbatim{% + \setnormaldispenv\setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + {% + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \edef\tmp{\noexpand\input #1 } + \expandafter + }\expandafter\starttabbox\tmp\egroup + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a further refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remaining is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% \dosubind {index}{topic}{subtopic} +% +% If SUBTOPIC is present, precede it with a space, and call \doind. +% (At some time during the 20th century, this made a two-level entry in an +% index such as the operation index. Nobody seemed to notice the change in +% behaviour though.) +\def\dosubind#1#2#3{% + \def\thirdarg{#3}% + \ifx\thirdarg\empty + \doind{#1}{#2}% + \else + \doind{#1}{#2\space#3}% + \fi +} + +% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +% Types: + +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \rmfont + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. We used to recommend @var for that, so + % leave the code in, but it's strange for @var to lead to typewriter. + % Nowadays we recommend @code, since the difference between a ttsl hyphen + % and a tt hyphen is pretty tiny. @code also disables ?` !`. + \def\var##1{{\setregularquotes\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} +\let\ampchar\& + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +\let\E=\expandafter + +% Used at the time of macro expansion. +% Argument is macro body with arguments substituted +\def\scanmacro#1{% + \newlinechar`\^^M + % expand the expansion of \eatleadingcr twice to maybe remove a leading + % newline (and \else and \fi tokens), then call \eatspaces on the result. + \def\xeatspaces##1{% + \E\E\E\E\E\E\E\eatspaces\E\E\E\E\E\E\E{\eatleadingcr##1% + }}% + \def\xempty##1{}% + % + % Process the macro body under the current catcode regime. + \scantokens{#1@comment}% + % + % The \comment is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. Note \c isn't used because this means cedilla + % in math mode. +} + +% Used for copying and captions +\def\scanexp#1{% + \expandafter\scanmacro\expandafter{#1}% +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \commondummyword\macro1\commondummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\commondummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +{\catcode`\^^M=\other% +\gdef\eatleadingcr#1{\if\noexpand#1\noexpand^^M\else\E#1\fi}}% +% Warning: this won't work for a delimited argument +% or for an empty argument + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. +% +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. +% +\def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \passthroughcharstrue +} + +\def\scanargctxt{% used for copying and captions, not macros. + \scanctxt + \catcode`\@=\other + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% used for @macro definitions + \scanctxt + \catcode`\ =\other + \catcode`\@=\other + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +% Used when scanning braced macro arguments. Note, however, that catcode +% changes here are ineffectual if the macro invocation was nested inside +% an argument to another Texinfo command. +\def\macroargctxt{% + \scanctxt + \catcode`\ =\active + \catcode`\@=\other + \catcode`\^^M=\other + \catcode`\\=\active +} + +\def\macrolineargctxt{% used for whole-line arguments without braces + \scanctxt + \catcode`\@=\other + \catcode`\{=\other + \catcode`\}=\other +} + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. +% +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\margbackslash#1{\char`\#1 } + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0\relax + \else + \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\commondummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\commondummyword \noexpand#1% + \fi +} + +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname#1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} +% This made use of the feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. + +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is to be expanded. If there are +% less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% +% That gets used by \mbodybackslash (above). +% +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef. +% +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + % \hash is redefined to `#' later to get it into definitions + \let\xeatspaces\relax + \let\xempty\relax + \parsemargdefxxx#1,;,% + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno\noexpand\xempty{}}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} +% the \xempty{} is to give \eatleadingcr an argument in the case of an +% empty macro argument. + +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \defmacro. +% +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% In case that there are 10 or more arguments we parse again the arguments +% list to set new definitions for the \macarg.BLAH macros corresponding to +% each BLAH argument. It was anyhow needed to parse already once this list +% in order to count the arguments, and as macros with at most 9 arguments +% are by far more frequent than macro with 10 or more arguments, defining +% twice the \macarg.BLAH macros does not cost too much processing power. +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments' values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa. +% +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +% Define the named-macro outside of this group and then close this group. +% +\def\macargexpandinbody@{% + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Trailing missing arguments are set to empty. +% +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} + + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\xeatspaces{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," +% There are four cases: macros of zero, one, up to nine, and many arguments. +% \xdef is used so that macro definitions will survive the file +% they're defined in: @include reads the file inside a group. +% +\def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifnum\paramno=1 + \def\xeatspaces##1{##1}% + % This removes the pair of braces around the argument. We don't + % use \eatspaces, because this can cause ends of lines to be lost + % when the argument to \eatspaces is read, leading to line-based + % commands like "@itemize" not being read correctly. + \else + \let\xeatspaces\relax % suppress expansion + \fi + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\spaceisspace + \noexpand\endlineisspace + \noexpand\expandafter % skip any whitespace after the macro name. + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname{% + \egroup + \noexpand\scanmacro{\macrobody}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \egroup + \noexpand\scanmacro{\macrobody}% + }% + \else % at most 9 + \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi + \fi} + +\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape +@catcode`@_=11 % private names +@catcode`@!=11 % used as argument separator + +% \passargtomacro#1#2 - +% Call #1 with a list of tokens #2, with any doubled backslashes in #2 +% compressed to one. +% +% This implementation works by expansion, and not execution (so we cannot use +% \def or similar). This reduces the risk of this failing in contexts where +% complete expansion is done with no execution (for example, in writing out to +% an auxiliary file for an index entry). +% +% State is kept in the input stream: the argument passed to +% @look_ahead, @gobble_and_check_finish and @add_segment is +% +% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) +% +% where: +% THE_MACRO - name of the macro we want to call +% ARG_RESULT - argument list we build to pass to that macro +% PENDING_BS - either a backslash or nothing +% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next + +@gdef@passargtomacro#1#2{% + @add_segment #1!{}@relax#2\@_finish\% +} +@gdef@_finish{@_finishx} @global@let@_finishx@relax + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 used to look ahead +% +% If the next token is not a backslash, process the rest of the argument; +% otherwise, remove the next token. +@gdef@look_ahead#1!#2#3#4{% + @ifx#4\% + @expandafter@gobble_and_check_finish + @else + @expandafter@add_segment + @fi#1!{#2}#4#4% +} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 should be a backslash, which is gobbled. +% #5 looks ahead +% +% Double backslash found. Add a single backslash, and look ahead. +@gdef@gobble_and_check_finish#1!#2#3#4#5{% + @add_segment#1\!{}#5#5% +} + +@gdef@is_fi{@fi} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 is input stream until next backslash +% +% Input stream is either at the start of the argument, or just after a +% backslash sequence, either a lone backslash, or a doubled backslash. +% NEXT_TOKEN contains the first token in the input stream: if it is \finish, +% finish; otherwise, append to ARG_RESULT the segment of the argument up until +% the next backslash. PENDING_BACKSLASH contains a backslash to represent +% a backslash just before the start of the input stream that has not been +% added to ARG_RESULT. +@gdef@add_segment#1!#2#3#4\{% +@ifx#3@_finish + @call_the_macro#1!% +@else + % append the pending backslash to the result, followed by the next segment + @expandafter@is_fi@look_ahead#1#2#4!{\}@fi + % this @fi is discarded by @look_ahead. + % we can't get rid of it with \expandafter because we don't know how + % long #4 is. +} + +% #1 - THE_MACRO +% #2 - ARG_RESULT +% #3 discards the res of the conditional in @add_segment, and @is_fi ends the +% conditional. +@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \braceorline MAC is used for a one-argument macro MAC. It checks +% whether the next non-whitespace character is a {. It sets the context +% for reading the argument (slightly different in the two cases). Then, +% to read the argument, in the whole-line case, it then calls the regular +% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. +% +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup + \macroargctxt + \expandafter\passargtomacro + \else + \macrolineargctxt\expandafter\parsearg + \fi \macnamexxx} + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Make them active and then expand them all to nothing. +% +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} + +% Used so that the @top node doesn't have to be wrapped in an @ifnottex +% conditional. +% \doignore goes to more effort to skip nested conditionals but we don't need +% that here. +\def\omittopnode{% + \ifx\lastnode\wordTop + \expandafter\ignorenode\fi +} +\def\wordTop{Top} + +% Until the next @node or @bye command, divert output to a box that is not +% output. +\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}% +\ignorenodebye +} + +{\let\bye\relax +\gdef\ignorenodebye{\let\bye\ignorenodebyedef} +\gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}} +% The redefinition of \bye here is because it is declared \outer + +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \currentsection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \requireauxfile + \atdummies % preserve commands, but don't expand them + % match definition in \xrdef, \refx, \xrefX. + \def\value##1{##1}% + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\currentsection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout + }% + \fi +} + +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + +% +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref{\putwordsee{} \xrefXX} +\def\xref{\putwordSee{} \xrefXX} +\def\ref{\xrefXX} + +\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} +\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + % + % Get args without leading/trailing spaces. + \def\printedrefname{\ignorespaces #3}% + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \def\printedmanual{\ignorespaces #5}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #3) was not explicitly given in + % the @xref, figure out what we want to use. + \ifdim \wd\printedrefnamebox = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Not auto section-title: use node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Auto section-title: use chapter/section title inside + % the square brackets if we have it. + \ifdim \wd\printedmanualbox > 0pt + % It is in another manual, so we don't have it; use node name. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We (should) know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + % For pdfTeX and LuaTeX + {\indexnofonts + \makevalueexpandable + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. + \getfilename{#4}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \setpdfdestname{#1}% + % + \ifx\pdfdestname\empty + \def\pdfdestname{Top}% no empty targets + \fi + % + \leavevmode + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfdestname}% + \else + goto name{\pdfmkpgn{\pdfdestname}}% + \fi + }% + \setcolor{\linkcolor}% + \else + \ifx\XeTeXrevision\thisisundefined + \else + % For XeTeX + {\indexnofonts + \makevalueexpandable + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. + \getfilename{#4}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \setpdfdestname{#1}% + % + \ifx\pdfdestname\empty + \def\pdfdestname{Top}% no empty targets + \fi + % + \leavevmode + \ifnum\filenamelength>0 + % With default settings, + % XeTeX (xdvipdfmx) replaces link destination names with integers. + % In this case, the replaced destination names of + % remote PDFs are no longer known. In order to avoid a replacement, + % you can use xdvipdfmx's command line option `-C 0x0010'. + % If you use XeTeX 0.99996+ (TeX Live 2016+), + % this command line option is no longer necessary + % because we can use the `dvipdfmx:config' special. + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}% + \else + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoTo /D (\pdfdestname) >> >>}% + \fi + }% + \setcolor{\linkcolor}% + \fi + \fi + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". \iffloat distinguishes them by + % \Xthisreftitle being set to a magic string. + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd\printedrefnamebox = 0pt + \refx{#1-snt}% + \else + \printedrefname + \fi + % + % If the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd\printedmanualbox > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox to print the node names, TeX does not insert + % empty discretionaries after hyphens, which means that it will not + % find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, + % this is a loss. Therefore, we give the text of the node name + % again, so it is as if TeX is seeing it for the first time. + % + \ifdim \wd\printedmanualbox > 0pt + % Cross-manual reference with a printed manual name. + % + \crossmanualxref{\cite{\printedmanual\unskip}}% + % + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. + % + \crossmanualxref{\code{\infofilename\unskip}}% + % + \else + % Reference within this manual. + % + % Only output a following space if the -snt ref is nonempty, as the ref + % will be empty for @unnumbered and @anchor. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + % + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % + \expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi + \fi + \fi\fi + \fi + \endlink +\endgroup} + +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% \refx{NAME} - reference a cross-reference string named NAME. +\def\refx#1{% + \requireauxfile + {% + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi +} + +% This is the macro invoked by entries in the aux file. Define a control +% sequence for a cross-reference target (we prepend XR to the control sequence +% name to avoid collisions). The value is the page number. If this is a float +% type, we have more work to do. +% +\def\xrdef#1#2{% + {% Expand the node or anchor name to remove control sequences. + % \turnoffactive stops 8-bit characters being changed to commands + % like @'e. \refx does the same to retrieve the value in the definition. + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \xdef\safexrefname{#1}% + }% + % + \bgroup + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% + \egroup + % We put the \gdef inside a group to avoid the definitions building up on + % TeX's save stack, which can cause it to run out of space for aux files with + % thousands of lines. \gdef doesn't use the save stack, but \csname does + % when it defines an unknown control sequence as \relax. + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi +} + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\active + \catcode`\|=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + \catcode`\\=\active + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for Info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % + % Nested footnotes are not supported in TeX, that would take a lot + % more work. (\startsavinginserts does not suffice.) + \let\footnote=\errfootnotenest + % + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\txipagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + % + % Invoke rest of plain TeX footnote routine. + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +\def\errfootnotenest{% + \errhelp=\EMsimple + \errmessage{Nested footnotes not supported in texinfo.tex, + even though they work in makeinfo; sorry} +} + +\def\errfootnoteheading{% + \errhelp=\EMsimple + \errmessage{Footnotes in chapters, sections, etc., are not supported} +} + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. +% +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from https://ctan.org/texarchive/macros/texinfo/texinfo/doc/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\thisisundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + \makevalueexpandable + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \else \ifx\centersub\centerV + % for @center @image, we need a vbox so we can have our vertical space + \imagevmodetrue + \vbox\bgroup % vbox has better behavior than vtop herev + \fi\fi + % + \ifimagevmode + \nobreak\medskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \fi + % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + % On the other hand, if we are in the case of @center @image, we don't + % want to start a paragraph, which will create a hsize-width box and + % eradicate the centering. + \ifx\centersub\centerV \else \imageindent \fi + % + % Output the image. + \ifpdf + % For pdfTeX and LuaTeX <= 0.80 + \dopdfimage{#1}{#2}{#3}% + \else + \ifx\XeTeXrevision\thisisundefined + % For epsf.tex + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \else + % For XeTeX + \doxeteximage{#1}{#2}{#3}% + \fi + \fi + % + \ifimagevmode + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV \egroup \fi +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \currentsection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\currentsection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \requireauxfile + \atdummies + % + \ifx\thisshortcaption\empty + \def\gtemp{\thiscaption}% + \else + \def\gtemp{\thisshortcaption}% + \fi + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \currentsection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{% + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \let_ = \normalunderscore % normal _ character for filename test + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore #1_\finish + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% XeTeX and LuaTeX can handle Unicode natively. +% Their default I/O uses UTF-8 sequences instead of a byte-wise operation. +% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise. +% +\newif\iftxinativeunicodecapable +\newif\iftxiusebytewiseio + +\ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \txinativeunicodecapablefalse + \txiusebytewiseiotrue + \else + \txinativeunicodecapabletrue + \txiusebytewiseiofalse + \fi +\else + \txinativeunicodecapabletrue + \txiusebytewiseiofalse +\fi + +% Set I/O by bytes instead of UTF-8 sequence for XeTeX and LuaTex +% for non-UTF-8 (byte-wise) encodings. +% +\def\setbytewiseio{% + \ifx\XeTeXrevision\thisisundefined + \else + \XeTeXdefaultencoding "bytes" % For subsequent files to be read + \XeTeXinputencoding "bytes" % For document root file + % Unfortunately, there seems to be no corresponding XeTeX command for + % output encoding. This is a problem for auxiliary index and TOC files. + % The only solution would be perhaps to write out @U{...} sequences in + % place of non-ASCII characters. + \fi + + \ifx\luatexversion\thisisundefined + \else + \directlua{ + local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub + local function convert_char (char) + return utf8_char(byte(char)) + end + + local function convert_line (line) + return gsub(line, ".", convert_char) + end + + callback.register("process_input_buffer", convert_line) + + local function convert_line_out (line) + local line_out = "" + for c in string.utfvalues(line) do + line_out = line_out .. string.char(c) + end + return line_out + end + + callback.register("process_output_buffer", convert_line_out) + } + \fi + + \txiusebytewiseiotrue +} + + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} +\def\documentencodingzzz#1{% + % + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \iftxinativeunicodecapable + % For native Unicode handling (XeTeX and LuaTeX) + \nativeunicodechardefs + \else + % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX) + \setnonasciicharscatcode\active + % since we already invoked \utfeightchardefs at the top level + % (below), do not re-invoke it, otherwise our check for duplicated + % definitions gets triggered. Making non-ascii chars active is + % sufficient. + \fi + % + \else + \message{Ignoring unknown document encoding: #1.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii + % + \ifx\XeTeXrevision\thisisundefined + \else + \ifx \declaredencoding \utfeight + \else + \ifx \declaredencoding \ascii + \else + \message{Warning: XeTeX with non-UTF-8 encodings cannot handle % + non-ASCII characters in auxiliary files.}% + \fi + \fi + \fi +} + +% emacs-page +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +% First, make active non-ASCII characters in order for them to be +% correctly categorized when TeX reads the replacement text of +% macros containing the character definitions. +\setnonasciicharscatcode\active +% + +\def\gdefchar#1#2{% +\gdef#1{% + \ifpassthroughchars + \string#1% + \else + #2% + \fi +}} + +% Latin1 (ISO-8859-1) character definitions. +\def\latonechardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\exclamdown} + \gdefchar^^a2{{\tcfont \char162}} % cent + \gdefchar^^a3{\pounds{}} + \gdefchar^^a4{{\tcfont \char164}} % currency + \gdefchar^^a5{{\tcfont \char165}} % yen + \gdefchar^^a6{{\tcfont \char166}} % broken bar + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\copyright{}} + \gdefchar^^aa{\ordf} + \gdefchar^^ab{\guillemetleft{}} + \gdefchar^^ac{\ensuremath\lnot} + \gdefchar^^ad{\-} + \gdefchar^^ae{\registeredsymbol{}} + \gdefchar^^af{\={}} + % + \gdefchar^^b0{\textdegree} + \gdefchar^^b1{$\pm$} + \gdefchar^^b2{$^2$} + \gdefchar^^b3{$^3$} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{$\mu$} + \gdefchar^^b6{\P} + \gdefchar^^b7{\ensuremath\cdot} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{$^1$} + \gdefchar^^ba{\ordm} + \gdefchar^^bb{\guillemetright{}} + \gdefchar^^bc{$1\over4$} + \gdefchar^^bd{$1\over2$} + \gdefchar^^be{$3\over4$} + \gdefchar^^bf{\questiondown} + % + \gdefchar^^c0{\`A} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\~A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\ringaccent A} + \gdefchar^^c6{\AE} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\`E} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\^E} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\`I} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\"I} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\~N} + \gdefchar^^d2{\`O} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\~O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\O} + \gdefchar^^d9{\`U} + \gdefchar^^da{\'U} + \gdefchar^^db{\^U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\TH} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\`a} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\~a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\ringaccent a} + \gdefchar^^e6{\ae} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\`e} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\^e} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\`{\dotless i}} + \gdefchar^^ed{\'{\dotless i}} + \gdefchar^^ee{\^{\dotless i}} + \gdefchar^^ef{\"{\dotless i}} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\~n} + \gdefchar^^f2{\`o} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\~o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\o} + \gdefchar^^f9{\`u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\^u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\th} + \gdefchar^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\def\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdefchar^^a4{\euro{}} + \gdefchar^^a6{\v S} + \gdefchar^^a8{\v s} + \gdefchar^^b4{\v Z} + \gdefchar^^b8{\v z} + \gdefchar^^bc{\OE} + \gdefchar^^bd{\oe} + \gdefchar^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\def\lattwochardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\ogonek{A}} + \gdefchar^^a2{\u{}} + \gdefchar^^a3{\L} + \gdefchar^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdefchar^^a5{\v L} + \gdefchar^^a6{\'S} + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\v S} + \gdefchar^^aa{\cedilla S} + \gdefchar^^ab{\v T} + \gdefchar^^ac{\'Z} + \gdefchar^^ad{\-} + \gdefchar^^ae{\v Z} + \gdefchar^^af{\dotaccent Z} + % + \gdefchar^^b0{\textdegree{}} + \gdefchar^^b1{\ogonek{a}} + \gdefchar^^b2{\ogonek{ }} + \gdefchar^^b3{\l} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{\v l} + \gdefchar^^b6{\'s} + \gdefchar^^b7{\v{}} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{\v s} + \gdefchar^^ba{\cedilla s} + \gdefchar^^bb{\v t} + \gdefchar^^bc{\'z} + \gdefchar^^bd{\H{}} + \gdefchar^^be{\v z} + \gdefchar^^bf{\dotaccent z} + % + \gdefchar^^c0{\'R} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\u A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\'L} + \gdefchar^^c6{\'C} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\v C} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\ogonek{E}} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\v E} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\v D} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\'N} + \gdefchar^^d2{\v N} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\H O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\v R} + \gdefchar^^d9{\ringaccent U} + \gdefchar^^da{\'U} + \gdefchar^^db{\H U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\cedilla T} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\'r} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\u a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\'l} + \gdefchar^^e6{\'c} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\v c} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\ogonek{e}} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\v e} + \gdefchar^^ed{\'{\dotless{i}}} + \gdefchar^^ee{\^{\dotless{i}}} + \gdefchar^^ef{\v d} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\'n} + \gdefchar^^f2{\v n} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\H o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\v r} + \gdefchar^^f9{\ringaccent u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\H u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\cedilla t} + \gdefchar^^ff{\dotaccent{}} +} + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \else + \expandafter #1% + \fi +} + +% Give non-ASCII bytes the active definitions for processing UTF-8 sequences +\begingroup + \catcode`\~13 + \catcode`\$12 + \catcode`\"12 + + % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp + % substituting ~ and $ with a character token of that value. + \def\UTFviiiLoop{% + \global\catcode\countUTFx\active + \uccode`\~\countUTFx + \uccode`\$\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + + % For bytes other than the first in a UTF-8 sequence. Not expected to + % be expanded except when writing to auxiliary files. + \countUTFx = "80 + \countUTFy = "C2 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $\fi}}% + \UTFviiiLoop + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiFourOctets\expandafter$\fi + }}% + \UTFviiiLoop +\endgroup + +\def\globallet{\global\let} % save some \expandafter's below + +% @U{xxxx} to produce U+xxxx, if we support it. +\def\U#1{% + \expandafter\ifx\csname uni:#1\endcsname \relax + \iftxinativeunicodecapable + % All Unicode characters can be used if native Unicode handling is + % active. However, if the font does not have the glyph, + % letters are missing. + \begingroup + \uccode`\.="#1\relax + \uppercase{.} + \endgroup + \else + \errhelp = \EMsimple + \errmessage{Unicode character U+#1 not supported, sorry}% + \fi + \else + \csname uni:#1\endcsname + \fi +} + +% These macros are used here to construct the name of a control +% sequence to be defined. +\def\UTFviiiTwoOctetsName#1#2{% + \csname u8:#1\string #2\endcsname}% +\def\UTFviiiThreeOctetsName#1#2#3{% + \csname u8:#1\string #2\string #3\endcsname}% +\def\UTFviiiFourOctetsName#1#2#3#4{% + \csname u8:#1\string #2\string #3\string #4\endcsname}% + +% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX), +% provide a definition macro to replace a Unicode character; +% this gets used by the @U command +% +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + \gdef\DeclareUnicodeCharacterUTFviii#1#2{% + \countUTFz = "#1\relax + \begingroup + \parseXMLCharref + + % Give \u8:... its definition. The sequence of seven \expandafter's + % expands after the \gdef three times, e.g. + % + % 1. \UTFviiTwoOctetsName B1 B2 + % 2. \csname u8:B1 \string B2 \endcsname + % 3. \u8: B1 B2 (a single control sequence token) + % + \expandafter\expandafter + \expandafter\expandafter + \expandafter\expandafter + \expandafter\gdef \UTFviiiTmp{#2}% + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \message{Internal error, already defined: #1}% + \fi + % + % define an additional control sequence for this code point. + \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp + \endgroup} + % + % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp + % to the corresponding UTF-8 sequence. + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "A0\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 00A0}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctetsName.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}% + \fi\fi\fi + } + + % Extract a byte from the end of the UTF-8 representation of \countUTFx. + % It must be a non-initial byte in the sequence. + % Change \uccode of #1 for it to be used in \parseUTFviiiB as one + % of the bytes. + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz % Save to be the future value of \countUTFz. + \multiply\countUTFz by 64 + + % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract + % in order to get the last five bits. + \advance\countUTFx by -\countUTFz + + % Convert this to the byte in the UTF-8 sequence. + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + % Used to put a UTF-8 byte sequence into \UTFviiiTmp + % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8 + % sequence. + % #2 is one of the \UTFviii*OctetsName macros. + % #3 is always a full stop (.) + % #4 is a template for the other bytes in the sequence. The values for these + % bytes is substituted in here with \uppercase using the \uccode's. + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro that sets a catcode to `other' non-globally +% +\def\DeclareUnicodeCharacterNativeOther#1#2{% + \catcode"#1=\other +} + +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% +\def\unicodechardefs{% + \DeclareUnicodeCharacter{00A0}{\tie}% + \DeclareUnicodeCharacter{00A1}{\exclamdown}% + \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent + \DeclareUnicodeCharacter{00A3}{\pounds{}}% + \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency + \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen + \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar + \DeclareUnicodeCharacter{00A7}{\S}% + \DeclareUnicodeCharacter{00A8}{\"{ }}% + \DeclareUnicodeCharacter{00A9}{\copyright{}}% + \DeclareUnicodeCharacter{00AA}{\ordf}% + \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}% + \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}% + \DeclareUnicodeCharacter{00AD}{\-}% + \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% + \DeclareUnicodeCharacter{00AF}{\={ }}% + % + \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}% + \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% + \DeclareUnicodeCharacter{00B2}{$^2$}% + \DeclareUnicodeCharacter{00B3}{$^3$}% + \DeclareUnicodeCharacter{00B4}{\'{ }}% + \DeclareUnicodeCharacter{00B5}{$\mu$}% + \DeclareUnicodeCharacter{00B6}{\P}% + \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{00B8}{\cedilla{ }}% + \DeclareUnicodeCharacter{00B9}{$^1$}% + \DeclareUnicodeCharacter{00BA}{\ordm}% + \DeclareUnicodeCharacter{00BB}{\guillemetright{}}% + \DeclareUnicodeCharacter{00BC}{$1\over4$}% + \DeclareUnicodeCharacter{00BD}{$1\over2$}% + \DeclareUnicodeCharacter{00BE}{$3\over4$}% + \DeclareUnicodeCharacter{00BF}{\questiondown}% + % + \DeclareUnicodeCharacter{00C0}{\`A}% + \DeclareUnicodeCharacter{00C1}{\'A}% + \DeclareUnicodeCharacter{00C2}{\^A}% + \DeclareUnicodeCharacter{00C3}{\~A}% + \DeclareUnicodeCharacter{00C4}{\"A}% + \DeclareUnicodeCharacter{00C5}{\AA}% + \DeclareUnicodeCharacter{00C6}{\AE}% + \DeclareUnicodeCharacter{00C7}{\cedilla{C}}% + \DeclareUnicodeCharacter{00C8}{\`E}% + \DeclareUnicodeCharacter{00C9}{\'E}% + \DeclareUnicodeCharacter{00CA}{\^E}% + \DeclareUnicodeCharacter{00CB}{\"E}% + \DeclareUnicodeCharacter{00CC}{\`I}% + \DeclareUnicodeCharacter{00CD}{\'I}% + \DeclareUnicodeCharacter{00CE}{\^I}% + \DeclareUnicodeCharacter{00CF}{\"I}% + % + \DeclareUnicodeCharacter{00D0}{\DH}% + \DeclareUnicodeCharacter{00D1}{\~N}% + \DeclareUnicodeCharacter{00D2}{\`O}% + \DeclareUnicodeCharacter{00D3}{\'O}% + \DeclareUnicodeCharacter{00D4}{\^O}% + \DeclareUnicodeCharacter{00D5}{\~O}% + \DeclareUnicodeCharacter{00D6}{\"O}% + \DeclareUnicodeCharacter{00D7}{\ensuremath\times}% + \DeclareUnicodeCharacter{00D8}{\O}% + \DeclareUnicodeCharacter{00D9}{\`U}% + \DeclareUnicodeCharacter{00DA}{\'U}% + \DeclareUnicodeCharacter{00DB}{\^U}% + \DeclareUnicodeCharacter{00DC}{\"U}% + \DeclareUnicodeCharacter{00DD}{\'Y}% + \DeclareUnicodeCharacter{00DE}{\TH}% + \DeclareUnicodeCharacter{00DF}{\ss}% + % + \DeclareUnicodeCharacter{00E0}{\`a}% + \DeclareUnicodeCharacter{00E1}{\'a}% + \DeclareUnicodeCharacter{00E2}{\^a}% + \DeclareUnicodeCharacter{00E3}{\~a}% + \DeclareUnicodeCharacter{00E4}{\"a}% + \DeclareUnicodeCharacter{00E5}{\aa}% + \DeclareUnicodeCharacter{00E6}{\ae}% + \DeclareUnicodeCharacter{00E7}{\cedilla{c}}% + \DeclareUnicodeCharacter{00E8}{\`e}% + \DeclareUnicodeCharacter{00E9}{\'e}% + \DeclareUnicodeCharacter{00EA}{\^e}% + \DeclareUnicodeCharacter{00EB}{\"e}% + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}% + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}% + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}% + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}% + % + \DeclareUnicodeCharacter{00F0}{\dh}% + \DeclareUnicodeCharacter{00F1}{\~n}% + \DeclareUnicodeCharacter{00F2}{\`o}% + \DeclareUnicodeCharacter{00F3}{\'o}% + \DeclareUnicodeCharacter{00F4}{\^o}% + \DeclareUnicodeCharacter{00F5}{\~o}% + \DeclareUnicodeCharacter{00F6}{\"o}% + \DeclareUnicodeCharacter{00F7}{\ensuremath\div}% + \DeclareUnicodeCharacter{00F8}{\o}% + \DeclareUnicodeCharacter{00F9}{\`u}% + \DeclareUnicodeCharacter{00FA}{\'u}% + \DeclareUnicodeCharacter{00FB}{\^u}% + \DeclareUnicodeCharacter{00FC}{\"u}% + \DeclareUnicodeCharacter{00FD}{\'y}% + \DeclareUnicodeCharacter{00FE}{\th}% + \DeclareUnicodeCharacter{00FF}{\"y}% + % + \DeclareUnicodeCharacter{0100}{\=A}% + \DeclareUnicodeCharacter{0101}{\=a}% + \DeclareUnicodeCharacter{0102}{\u{A}}% + \DeclareUnicodeCharacter{0103}{\u{a}}% + \DeclareUnicodeCharacter{0104}{\ogonek{A}}% + \DeclareUnicodeCharacter{0105}{\ogonek{a}}% + \DeclareUnicodeCharacter{0106}{\'C}% + \DeclareUnicodeCharacter{0107}{\'c}% + \DeclareUnicodeCharacter{0108}{\^C}% + \DeclareUnicodeCharacter{0109}{\^c}% + \DeclareUnicodeCharacter{010A}{\dotaccent{C}}% + \DeclareUnicodeCharacter{010B}{\dotaccent{c}}% + \DeclareUnicodeCharacter{010C}{\v{C}}% + \DeclareUnicodeCharacter{010D}{\v{c}}% + \DeclareUnicodeCharacter{010E}{\v{D}}% + \DeclareUnicodeCharacter{010F}{d'}% + % + \DeclareUnicodeCharacter{0110}{\DH}% + \DeclareUnicodeCharacter{0111}{\dh}% + \DeclareUnicodeCharacter{0112}{\=E}% + \DeclareUnicodeCharacter{0113}{\=e}% + \DeclareUnicodeCharacter{0114}{\u{E}}% + \DeclareUnicodeCharacter{0115}{\u{e}}% + \DeclareUnicodeCharacter{0116}{\dotaccent{E}}% + \DeclareUnicodeCharacter{0117}{\dotaccent{e}}% + \DeclareUnicodeCharacter{0118}{\ogonek{E}}% + \DeclareUnicodeCharacter{0119}{\ogonek{e}}% + \DeclareUnicodeCharacter{011A}{\v{E}}% + \DeclareUnicodeCharacter{011B}{\v{e}}% + \DeclareUnicodeCharacter{011C}{\^G}% + \DeclareUnicodeCharacter{011D}{\^g}% + \DeclareUnicodeCharacter{011E}{\u{G}}% + \DeclareUnicodeCharacter{011F}{\u{g}}% + % + \DeclareUnicodeCharacter{0120}{\dotaccent{G}}% + \DeclareUnicodeCharacter{0121}{\dotaccent{g}}% + \DeclareUnicodeCharacter{0122}{\cedilla{G}}% + \DeclareUnicodeCharacter{0123}{\cedilla{g}}% + \DeclareUnicodeCharacter{0124}{\^H}% + \DeclareUnicodeCharacter{0125}{\^h}% + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0128}{\~I}% + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}% + \DeclareUnicodeCharacter{012A}{\=I}% + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}% + \DeclareUnicodeCharacter{012C}{\u{I}}% + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}% + \DeclareUnicodeCharacter{012E}{\ogonek{I}}% + \DeclareUnicodeCharacter{012F}{\ogonek{i}}% + % + \DeclareUnicodeCharacter{0130}{\dotaccent{I}}% + \DeclareUnicodeCharacter{0131}{\dotless{i}}% + \DeclareUnicodeCharacter{0132}{IJ}% + \DeclareUnicodeCharacter{0133}{ij}% + \DeclareUnicodeCharacter{0134}{\^J}% + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}% + \DeclareUnicodeCharacter{0136}{\cedilla{K}}% + \DeclareUnicodeCharacter{0137}{\cedilla{k}}% + \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{0139}{\'L}% + \DeclareUnicodeCharacter{013A}{\'l}% + \DeclareUnicodeCharacter{013B}{\cedilla{L}}% + \DeclareUnicodeCharacter{013C}{\cedilla{l}}% + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}}% + % + \DeclareUnicodeCharacter{0140}{l\U{00B7}}% + \DeclareUnicodeCharacter{0141}{\L}% + \DeclareUnicodeCharacter{0142}{\l}% + \DeclareUnicodeCharacter{0143}{\'N}% + \DeclareUnicodeCharacter{0144}{\'n}% + \DeclareUnicodeCharacter{0145}{\cedilla{N}}% + \DeclareUnicodeCharacter{0146}{\cedilla{n}}% + \DeclareUnicodeCharacter{0147}{\v{N}}% + \DeclareUnicodeCharacter{0148}{\v{n}}% + \DeclareUnicodeCharacter{0149}{'n}% + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}% + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}% + \DeclareUnicodeCharacter{014C}{\=O}% + \DeclareUnicodeCharacter{014D}{\=o}% + \DeclareUnicodeCharacter{014E}{\u{O}}% + \DeclareUnicodeCharacter{014F}{\u{o}}% + % + \DeclareUnicodeCharacter{0150}{\H{O}}% + \DeclareUnicodeCharacter{0151}{\H{o}}% + \DeclareUnicodeCharacter{0152}{\OE}% + \DeclareUnicodeCharacter{0153}{\oe}% + \DeclareUnicodeCharacter{0154}{\'R}% + \DeclareUnicodeCharacter{0155}{\'r}% + \DeclareUnicodeCharacter{0156}{\cedilla{R}}% + \DeclareUnicodeCharacter{0157}{\cedilla{r}}% + \DeclareUnicodeCharacter{0158}{\v{R}}% + \DeclareUnicodeCharacter{0159}{\v{r}}% + \DeclareUnicodeCharacter{015A}{\'S}% + \DeclareUnicodeCharacter{015B}{\'s}% + \DeclareUnicodeCharacter{015C}{\^S}% + \DeclareUnicodeCharacter{015D}{\^s}% + \DeclareUnicodeCharacter{015E}{\cedilla{S}}% + \DeclareUnicodeCharacter{015F}{\cedilla{s}}% + % + \DeclareUnicodeCharacter{0160}{\v{S}}% + \DeclareUnicodeCharacter{0161}{\v{s}}% + \DeclareUnicodeCharacter{0162}{\cedilla{T}}% + \DeclareUnicodeCharacter{0163}{\cedilla{t}}% + \DeclareUnicodeCharacter{0164}{\v{T}}% + \DeclareUnicodeCharacter{0165}{\v{t}}% + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0168}{\~U}% + \DeclareUnicodeCharacter{0169}{\~u}% + \DeclareUnicodeCharacter{016A}{\=U}% + \DeclareUnicodeCharacter{016B}{\=u}% + \DeclareUnicodeCharacter{016C}{\u{U}}% + \DeclareUnicodeCharacter{016D}{\u{u}}% + \DeclareUnicodeCharacter{016E}{\ringaccent{U}}% + \DeclareUnicodeCharacter{016F}{\ringaccent{u}}% + % + \DeclareUnicodeCharacter{0170}{\H{U}}% + \DeclareUnicodeCharacter{0171}{\H{u}}% + \DeclareUnicodeCharacter{0172}{\ogonek{U}}% + \DeclareUnicodeCharacter{0173}{\ogonek{u}}% + \DeclareUnicodeCharacter{0174}{\^W}% + \DeclareUnicodeCharacter{0175}{\^w}% + \DeclareUnicodeCharacter{0176}{\^Y}% + \DeclareUnicodeCharacter{0177}{\^y}% + \DeclareUnicodeCharacter{0178}{\"Y}% + \DeclareUnicodeCharacter{0179}{\'Z}% + \DeclareUnicodeCharacter{017A}{\'z}% + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}% + \DeclareUnicodeCharacter{017C}{\dotaccent{z}}% + \DeclareUnicodeCharacter{017D}{\v{Z}}% + \DeclareUnicodeCharacter{017E}{\v{z}}% + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}% + % + \DeclareUnicodeCharacter{01C4}{D\v{Z}}% + \DeclareUnicodeCharacter{01C5}{D\v{z}}% + \DeclareUnicodeCharacter{01C6}{d\v{z}}% + \DeclareUnicodeCharacter{01C7}{LJ}% + \DeclareUnicodeCharacter{01C8}{Lj}% + \DeclareUnicodeCharacter{01C9}{lj}% + \DeclareUnicodeCharacter{01CA}{NJ}% + \DeclareUnicodeCharacter{01CB}{Nj}% + \DeclareUnicodeCharacter{01CC}{nj}% + \DeclareUnicodeCharacter{01CD}{\v{A}}% + \DeclareUnicodeCharacter{01CE}{\v{a}}% + \DeclareUnicodeCharacter{01CF}{\v{I}}% + % + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}% + \DeclareUnicodeCharacter{01D1}{\v{O}}% + \DeclareUnicodeCharacter{01D2}{\v{o}}% + \DeclareUnicodeCharacter{01D3}{\v{U}}% + \DeclareUnicodeCharacter{01D4}{\v{u}}% + % + \DeclareUnicodeCharacter{01E2}{\={\AE}}% + \DeclareUnicodeCharacter{01E3}{\={\ae}}% + \DeclareUnicodeCharacter{01E6}{\v{G}}% + \DeclareUnicodeCharacter{01E7}{\v{g}}% + \DeclareUnicodeCharacter{01E8}{\v{K}}% + \DeclareUnicodeCharacter{01E9}{\v{k}}% + % + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}% + \DeclareUnicodeCharacter{01F1}{DZ}% + \DeclareUnicodeCharacter{01F2}{Dz}% + \DeclareUnicodeCharacter{01F3}{dz}% + \DeclareUnicodeCharacter{01F4}{\'G}% + \DeclareUnicodeCharacter{01F5}{\'g}% + \DeclareUnicodeCharacter{01F8}{\`N}% + \DeclareUnicodeCharacter{01F9}{\`n}% + \DeclareUnicodeCharacter{01FC}{\'{\AE}}% + \DeclareUnicodeCharacter{01FD}{\'{\ae}}% + \DeclareUnicodeCharacter{01FE}{\'{\O}}% + \DeclareUnicodeCharacter{01FF}{\'{\o}}% + % + \DeclareUnicodeCharacter{021E}{\v{H}}% + \DeclareUnicodeCharacter{021F}{\v{h}}% + % + \DeclareUnicodeCharacter{0226}{\dotaccent{A}}% + \DeclareUnicodeCharacter{0227}{\dotaccent{a}}% + \DeclareUnicodeCharacter{0228}{\cedilla{E}}% + \DeclareUnicodeCharacter{0229}{\cedilla{e}}% + \DeclareUnicodeCharacter{022E}{\dotaccent{O}}% + \DeclareUnicodeCharacter{022F}{\dotaccent{o}}% + % + \DeclareUnicodeCharacter{0232}{\=Y}% + \DeclareUnicodeCharacter{0233}{\=y}% + \DeclareUnicodeCharacter{0237}{\dotless{j}}% + % + \DeclareUnicodeCharacter{02BC}{'}% + % + \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% + % + % Greek letters upper case + \DeclareUnicodeCharacter{0391}{{\it A}}% + \DeclareUnicodeCharacter{0392}{{\it B}}% + \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}% + \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}% + \DeclareUnicodeCharacter{0395}{{\it E}}% + \DeclareUnicodeCharacter{0396}{{\it Z}}% + \DeclareUnicodeCharacter{0397}{{\it H}}% + \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}% + \DeclareUnicodeCharacter{0399}{{\it I}}% + \DeclareUnicodeCharacter{039A}{{\it K}}% + \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}% + \DeclareUnicodeCharacter{039C}{{\it M}}% + \DeclareUnicodeCharacter{039D}{{\it N}}% + \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}% + \DeclareUnicodeCharacter{039F}{{\it O}}% + \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}% + \DeclareUnicodeCharacter{03A1}{{\it P}}% + %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma + \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}% + \DeclareUnicodeCharacter{03A4}{{\it T}}% + \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}% + \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}% + \DeclareUnicodeCharacter{03A7}{{\it X}}% + \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}% + \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}% + % + % Vowels with accents + \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}% + \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}% + \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}% + \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}% + \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}% + \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}% + % + % Standalone accent + \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}% + % + % Greek letters lower case + \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}% + \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}% + \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}% + \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}% + \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}% + \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}% + \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}% + \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}% + \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}% + \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}% + \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}% + \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}% + \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}% + \DeclareUnicodeCharacter{03BF}{{\it o}}% omicron + \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}% + \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}% + \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}% + \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}% + \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}% + \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}% + \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}% + \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}% + \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}% + \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}% + % + % More Greek vowels with accents + \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}% + \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}% + \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}% + \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}% + \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}% + % + % Variant Greek letters + \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}% + \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}% + \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}% + % + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}% + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}% + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}% + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}% + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}% + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}% + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}% + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}% + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}% + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}% + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}% + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}% + % + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}% + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}% + % + \DeclareUnicodeCharacter{1E20}{\=G}% + \DeclareUnicodeCharacter{1E21}{\=g}% + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}% + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}% + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}% + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}% + \DeclareUnicodeCharacter{1E26}{\"H}% + \DeclareUnicodeCharacter{1E27}{\"h}% + % + \DeclareUnicodeCharacter{1E30}{\'K}% + \DeclareUnicodeCharacter{1E31}{\'k}% + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}% + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}% + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}% + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}% + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}% + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}% + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}% + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}% + \DeclareUnicodeCharacter{1E3E}{\'M}% + \DeclareUnicodeCharacter{1E3F}{\'m}% + % + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}% + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}% + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}% + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}% + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}% + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}% + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}% + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}% + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}% + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}% + % + \DeclareUnicodeCharacter{1E54}{\'P}% + \DeclareUnicodeCharacter{1E55}{\'p}% + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}% + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}% + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}% + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}% + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}% + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}% + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}% + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}% + % + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}% + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}% + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}% + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}% + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}% + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}% + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}% + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}% + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}% + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}% + % + \DeclareUnicodeCharacter{1E7C}{\~V}% + \DeclareUnicodeCharacter{1E7D}{\~v}% + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}% + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}% + % + \DeclareUnicodeCharacter{1E80}{\`W}% + \DeclareUnicodeCharacter{1E81}{\`w}% + \DeclareUnicodeCharacter{1E82}{\'W}% + \DeclareUnicodeCharacter{1E83}{\'w}% + \DeclareUnicodeCharacter{1E84}{\"W}% + \DeclareUnicodeCharacter{1E85}{\"w}% + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}% + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}% + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}% + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}% + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}% + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}% + \DeclareUnicodeCharacter{1E8C}{\"X}% + \DeclareUnicodeCharacter{1E8D}{\"x}% + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}% + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}% + % + \DeclareUnicodeCharacter{1E90}{\^Z}% + \DeclareUnicodeCharacter{1E91}{\^z}% + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}% + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}% + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}% + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}% + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}% + \DeclareUnicodeCharacter{1E97}{\"t}% + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}% + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}% + % + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}% + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}% + % + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}% + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}% + \DeclareUnicodeCharacter{1EBC}{\~E}% + \DeclareUnicodeCharacter{1EBD}{\~e}% + % + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}% + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}% + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}% + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}% + % + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}% + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}% + % + \DeclareUnicodeCharacter{1EF2}{\`Y}% + \DeclareUnicodeCharacter{1EF3}{\`y}% + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}% + % + \DeclareUnicodeCharacter{1EF8}{\~Y}% + \DeclareUnicodeCharacter{1EF9}{\~y}% + % + % Punctuation + \DeclareUnicodeCharacter{2013}{--}% + \DeclareUnicodeCharacter{2014}{---}% + \DeclareUnicodeCharacter{2018}{\quoteleft{}}% + \DeclareUnicodeCharacter{2019}{\quoteright{}}% + \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}% + \DeclareUnicodeCharacter{201C}{\quotedblleft{}}% + \DeclareUnicodeCharacter{201D}{\quotedblright{}}% + \DeclareUnicodeCharacter{201E}{\quotedblbase{}}% + \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}% + \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}% + \DeclareUnicodeCharacter{2022}{\bullet{}}% + \DeclareUnicodeCharacter{202F}{\thinspace}% + \DeclareUnicodeCharacter{2026}{\dots{}}% + \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}% + \DeclareUnicodeCharacter{203A}{\guilsinglright{}}% + % + \DeclareUnicodeCharacter{20AC}{\euro{}}% + % + \DeclareUnicodeCharacter{2192}{\expansion{}}% + \DeclareUnicodeCharacter{21D2}{\result{}}% + % + % Mathematical symbols + \DeclareUnicodeCharacter{2200}{\ensuremath\forall}% + \DeclareUnicodeCharacter{2203}{\ensuremath\exists}% + \DeclareUnicodeCharacter{2208}{\ensuremath\in}% + \DeclareUnicodeCharacter{2212}{\minus{}}% + \DeclareUnicodeCharacter{2217}{\ast}% + \DeclareUnicodeCharacter{221E}{\ensuremath\infty}% + \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}% + \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}% + \DeclareUnicodeCharacter{2229}{\ensuremath\cap}% + \DeclareUnicodeCharacter{2261}{\equiv{}}% + \DeclareUnicodeCharacter{2264}{\ensuremath\leq}% + \DeclareUnicodeCharacter{2265}{\ensuremath\geq}% + \DeclareUnicodeCharacter{2282}{\ensuremath\subset}% + \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}% + % + \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}% + \DeclareUnicodeCharacter{2032}{\ensuremath\prime}% + \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}% + \DeclareUnicodeCharacter{2111}{\ensuremath\Im}% + \DeclareUnicodeCharacter{2113}{\ensuremath\ell}% + \DeclareUnicodeCharacter{2118}{\ensuremath\wp}% + \DeclareUnicodeCharacter{211C}{\ensuremath\Re}% + \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}% + \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}% + \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}% + \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}% + \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}% + \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}% + \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}% + \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}% + \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}% + \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}% + \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}% + \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}% + \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}% + \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}% + \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}% + \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}% + \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}% + \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}% + \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}% + \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}% + \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}% + \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}% + \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}% + \DeclareUnicodeCharacter{2202}{\ensuremath\partial}% + \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}% + \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}% + \DeclareUnicodeCharacter{2209}{\ensuremath\notin}% + \DeclareUnicodeCharacter{220B}{\ensuremath\owns}% + \DeclareUnicodeCharacter{220F}{\ensuremath\prod}% + \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}% + \DeclareUnicodeCharacter{2211}{\ensuremath\sum}% + \DeclareUnicodeCharacter{2213}{\ensuremath\mp}% + \DeclareUnicodeCharacter{2218}{\ensuremath\circ}% + \DeclareUnicodeCharacter{221A}{\ensuremath\surd}% + \DeclareUnicodeCharacter{221D}{\ensuremath\propto}% + \DeclareUnicodeCharacter{2220}{\ensuremath\angle}% + \DeclareUnicodeCharacter{2223}{\ensuremath\mid}% + \DeclareUnicodeCharacter{2228}{\ensuremath\vee}% + \DeclareUnicodeCharacter{222A}{\ensuremath\cup}% + \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}% + \DeclareUnicodeCharacter{222E}{\ensuremath\oint}% + \DeclareUnicodeCharacter{223C}{\ensuremath\sim}% + \DeclareUnicodeCharacter{2240}{\ensuremath\wr}% + \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}% + \DeclareUnicodeCharacter{2245}{\ensuremath\cong}% + \DeclareUnicodeCharacter{2248}{\ensuremath\approx}% + \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}% + \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}% + \DeclareUnicodeCharacter{2260}{\ensuremath\neq}% + \DeclareUnicodeCharacter{226A}{\ensuremath\ll}% + \DeclareUnicodeCharacter{226B}{\ensuremath\gg}% + \DeclareUnicodeCharacter{227A}{\ensuremath\prec}% + \DeclareUnicodeCharacter{227B}{\ensuremath\succ}% + \DeclareUnicodeCharacter{2283}{\ensuremath\supset}% + \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}% + \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}% + \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}% + \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}% + \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}% + \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}% + \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}% + \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}% + \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}% + \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}% + \DeclareUnicodeCharacter{2299}{\ensuremath\odot}% + \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}% + \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}% + \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}% + \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}% + \DeclareUnicodeCharacter{22A8}{\ensuremath\models}% + \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}% + \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}% + \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}% + \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}% + \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}% + \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{22C6}{\ensuremath\star}% + \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}% + \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}% + \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}% + \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}% + \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}% + \DeclareUnicodeCharacter{2322}{\ensuremath\frown}% + \DeclareUnicodeCharacter{2323}{\ensuremath\smile}% + % + \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}% + \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}% + \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}% + \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}% + \DeclareUnicodeCharacter{25C7}{\ensuremath\diamond}% + \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}% + \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}% + \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}% + \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}% + \DeclareUnicodeCharacter{266D}{\ensuremath\flat}% + \DeclareUnicodeCharacter{266E}{\ensuremath\natural}% + \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}% + \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}% + \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}% + \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}% + \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}% + \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}% + \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}% + \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}% + \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}% + \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}% + \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}% + \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}% + \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}% + \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}% + \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}% + \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}% + \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}% + \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}% + % + \global\mathchardef\checkmark="1370% actually the square root sign + \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}% +}% end of \unicodechardefs + +% UTF-8 byte sequence (pdfTeX) definitions (replacing and @U command) +% It makes the setting that replace UTF-8 byte sequence. +\def\utfeightchardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterUTFviii + \unicodechardefs +} + +% Whether the active definitions of non-ASCII characters expand to +% non-active tokens with the same character code. This is used to +% write characters literally, instead of using active definitions for +% printing the correct glyphs. +\newif\ifpassthroughchars +\passthroughcharsfalse + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro to replace/pass-through a Unicode character +% +\def\DeclareUnicodeCharacterNative#1#2{% + \catcode"#1=\active + \def\dodeclareunicodecharacternative##1##2##3{% + \begingroup + \uccode`\~="##2\relax + \uppercase{\gdef~}{% + \ifpassthroughchars + ##1% + \else + ##3% + \fi + } + \endgroup + } + \begingroup + \uccode`\.="#1\relax + \uppercase{\def\UTFNativeTmp{.}}% + \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% + \endgroup +} + +% Native Unicode handling (XeTeX and LuaTeX) character replacing definition. +% It activates the setting that replaces Unicode characters. +\def\nativeunicodechardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative + \unicodechardefs +} + +% For native Unicode handling (XeTeX and LuaTeX), +% make the character token expand +% to the sequences given in \unicodechardefs for printing. +\def\DeclareUnicodeCharacterNativeAtU#1#2{% + \def\UTFAtUTmp{#2} + \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp +} + +% @U command definitions for native Unicode handling (XeTeX and LuaTeX). +\def\nativeunicodechardefsatu{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU + \unicodechardefs +} + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% Define all Unicode characters we know about. This makes UTF-8 the default +% input encoding and allows @U to work. +\iftxinativeunicodecapable + \nativeunicodechardefsatu +\else + \utfeightchardefs +\fi + +\message{formatting,} + +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 + +% Following George Bush, get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \txipageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \txipagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \else + \ifx\XeTeXrevision\thisisundefined + \special{papersize=#8,#7}% + \else + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % XeTeX does not have \pdfhorigin and \pdfvorigin. + \fi + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +\def\bsixpaper{{\globaldefs = 1 + \afourpaper + \internalpagesizes{140mm}{100mm}% + {-6.35mm}{-12.7mm}% + {\bindingoffset}{14pt}% + {176mm}{125mm}% + \let\SETdispenvsize=\smallword + \lispnarrowing = 0.2in + \globaldefs = 0 +}} + + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by 2.5in % default 1in margin above heading line + % and 1.5in to include heading, footing and + % bottom margin + % + \dimen2 = \hsize + \advance\dimen2 by 2in % default to 1 inch margin on each side + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + +% Default value of \hfuzz, for suppressing warnings about overfull hboxes. +\hfuzz = 1pt + + +\message{and turning on texinfo input format.} + +\def^^L{\par} % remove \outer, so ^L can appear in an @comment + +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + +% Set catcodes for Texinfo file + +% Active characters for printing the wanted glyph. +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. +% +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde +\chardef\hatchar=`\^ +\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } +\let\realunder=_ + +\catcode`\|=\active \def|{{\tt\char124}} + +\chardef \less=`\< +\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless +\chardef \gtr=`\> +\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr +\catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix +\catcode`\-=\active \let-=\normaldash + + +% used for headline/footline in the output routine, in case the page +% breaks in the middle of an @tex block. +\def\texinfochars{% + \let< = \activeless + \let> = \activegtr + \let~ = \activetilde + \let^ = \activehat + \setregularquotes + \let\b = \strong + \let\i = \smartitalic + % in principle, all other definitions in \tex have to be undone too. +} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ + +% \realbackslash is an actual character `\' with catcode other. +{\catcode`\\=\other @gdef@realbackslash{\}} + +% In Texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active % @ for escape char from now on. + +% Print a typewriter backslash. For math mode, we can't simply use +% \backslashcurfont: the story here is that in math mode, the \char +% of \backslashcurfont ends up printing the roman \ from the math symbol +% font (because \char in math mode uses the \mathcode, and plain.tex +% sets \mathcode`\\="026E). Hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. + +@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. + +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +{@catcode`- = @active + @gdef@normalturnoffactive{% + @passthroughcharstrue + @let-=@normaldash + @let"=@normaldoublequote + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let~=@normaltilde + @let\=@ttbackslash + @setregularquotes + @unsepspaces + } +} + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have @fixbackslash turn them back on. +@catcode`+=@other @catcode`@_=@other + +% \enablebackslashhack - allow file to begin `\input texinfo' +% +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% If the file did not have a `\input texinfo', then it is turned off after +% the first line; otherwise the first `\' in the file would cause an error. +% This is used on the very last line of this file, texinfo.tex. +% We also use @c to call @fixbackslash, in case ends of lines are hidden. +{ +@catcode`@^=7 +@catcode`@^^M=13@gdef@enablebackslashhack{% + @global@let\ = @eatinput% + @catcode`@^^M=13% + @def@c{@fixbackslash@c}% + % Definition for the newline at the end of this file. + @def ^^M{@let^^M@secondlinenl}% + % Definition for a newline in the main Texinfo file. + @gdef @secondlinenl{@fixbackslash}% + % In case the first line has a whole-line command on it + @let@originalparsearg@parsearg + @def@parsearg{@fixbackslash@originalparsearg} +}} + +{@catcode`@^=7 @catcode`@^^M=13% +@gdef@eatinput input texinfo#1^^M{@fixbackslash}} + +% Emergency active definition of newline, in case an active newline token +% appears by mistake. +{@catcode`@^=7 @catcode13=13% +@gdef@enableemergencynewline{% + @gdef^^M{% + @par% + %@par% +}}} + + +@gdef@fixbackslash{% + @ifx\@eatinput @let\ = @ttbackslash @fi + @catcode13=5 % regular end of line + @enableemergencynewline + @let@c=@comment + @let@parsearg@originalparsearg + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. + @catcode`+=@active + @catcode`@_=@active + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets + % called at the beginning of every Texinfo file. Not opening texinfo.cnf + % directly in this file, texinfo.tex, makes it possible to make a format + % file for Texinfo. + % + @openin 1 texinfo.cnf + @ifeof 1 @else @input texinfo.cnf @fi + @closein 1 +} + + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + +% These look ok in all fonts, so just make them not special. +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash + +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@setregularquotes + +@c Local variables: +@c eval: (add-hook 'before-save-hook 'time-stamp) +@c page-delimiter: "^\\\\message\\|emacs-page" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@enablebackslashhack + diff -urN gawk-5.1.0/build-aux/ylwrap gawk-5.1.1/build-aux/ylwrap --- gawk-5.1.0/build-aux/ylwrap 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/build-aux/ylwrap 2020-08-28 14:48:04.000000000 +0300 @@ -0,0 +1,247 @@ +#! /bin/sh +# ylwrap - wrapper for lex/yacc invocations. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# Written by Tom Tromey . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +get_dirname () +{ + case $1 in + */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; + # Otherwise, we want the empty string (not "."). + esac +} + +# guard FILE +# ---------- +# The CPP macro used to guard inclusion of FILE. +guard () +{ + printf '%s\n' "$1" \ + | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ + -e 's/__*/_/g' +} + +# quote_for_sed [STRING] +# ---------------------- +# Return STRING (or stdin) quoted to be used as a sed pattern. +quote_for_sed () +{ + case $# in + 0) cat;; + 1) printf '%s\n' "$1";; + esac \ + | sed -e 's|[][\\.*]|\\&|g' +} + +case "$1" in + '') + echo "$0: No files given. Try '$0 --help' for more information." 1>&2 + exit 1 + ;; + --basedir) + basedir=$2 + shift 2 + ;; + -h|--h*) + cat <<\EOF +Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... + +Wrapper for lex/yacc invocations, renaming files as desired. + + INPUT is the input file + OUTPUT is one file PROG generates + DESIRED is the file we actually want instead of OUTPUT + PROGRAM is program to run + ARGS are passed to PROG + +Any number of OUTPUT,DESIRED pairs may be used. + +Report bugs to . +EOF + exit $? + ;; + -v|--v*) + echo "ylwrap $scriptversion" + exit $? + ;; +esac + + +# The input. +input=$1 +shift +# We'll later need for a correct munging of "#line" directives. +input_sub_rx=`get_dirname "$input" | quote_for_sed` +case $input in + [\\/]* | ?:[\\/]*) + # Absolute path; do nothing. + ;; + *) + # Relative path. Make it absolute. + input=`pwd`/$input + ;; +esac +input_rx=`get_dirname "$input" | quote_for_sed` + +# Since DOS filename conventions don't allow two dots, +# the DOS version of Bison writes out y_tab.c instead of y.tab.c +# and y_tab.h instead of y.tab.h. Test to see if this is the case. +y_tab_nodot=false +if test -f y_tab.c || test -f y_tab.h; then + y_tab_nodot=true +fi + +# The parser itself, the first file, is the destination of the .y.c +# rule in the Makefile. +parser=$1 + +# A sed program to s/FROM/TO/g for all the FROM/TO so that, for +# instance, we rename #include "y.tab.h" into #include "parse.h" +# during the conversion from y.tab.c to parse.c. +sed_fix_filenames= + +# Also rename header guards, as Bison 2.7 for instance uses its header +# guard in its implementation file. +sed_fix_header_guards= + +while test $# -ne 0; do + if test x"$1" = x"--"; then + shift + break + fi + from=$1 + # Handle y_tab.c and y_tab.h output by DOS + if $y_tab_nodot; then + case $from in + "y.tab.c") from=y_tab.c;; + "y.tab.h") from=y_tab.h;; + esac + fi + shift + to=$1 + shift + sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" + sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" +done + +# The program to run. +prog=$1 +shift +# Make any relative path in $prog absolute. +case $prog in + [\\/]* | ?:[\\/]*) ;; + *[\\/]*) prog=`pwd`/$prog ;; +esac + +dirname=ylwrap$$ +do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' +trap "ret=129; $do_exit" 1 +trap "ret=130; $do_exit" 2 +trap "ret=141; $do_exit" 13 +trap "ret=143; $do_exit" 15 +mkdir $dirname || exit 1 + +cd $dirname + +case $# in + 0) "$prog" "$input" ;; + *) "$prog" "$@" "$input" ;; +esac +ret=$? + +if test $ret -eq 0; then + for from in * + do + to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` + if test -f "$from"; then + # If $2 is an absolute path name, then just use that, + # otherwise prepend '../'. + case $to in + [\\/]* | ?:[\\/]*) target=$to;; + *) target=../$to;; + esac + + # Do not overwrite unchanged header files to avoid useless + # recompilations. Always update the parser itself: it is the + # destination of the .y.c rule in the Makefile. Divert the + # output of all other files to a temporary file so we can + # compare them to existing versions. + if test $from != $parser; then + realtarget=$target + target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` + fi + + # Munge "#line" or "#" directives. Don't let the resulting + # debug information point at an absolute srcdir. Use the real + # output file name, not yy.lex.c for instance. Adjust the + # include guards too. + sed -e "/^#/!b" \ + -e "s|$input_rx|$input_sub_rx|" \ + -e "$sed_fix_filenames" \ + -e "$sed_fix_header_guards" \ + "$from" >"$target" || ret=$? + + # Check whether files must be updated. + if test "$from" != "$parser"; then + if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then + echo "$to is unchanged" + rm -f "$target" + else + echo "updating $to" + mv -f "$target" "$realtarget" + fi + fi + else + # A missing file is only an error for the parser. This is a + # blatant hack to let us support using "yacc -d". If -d is not + # specified, don't fail when the header file is "missing". + if test "$from" = "$parser"; then + ret=1 + fi + fi + done +fi + +# Remove the directory. +cd .. +rm -rf $dirname + +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff -urN gawk-5.1.0/builtin.c gawk-5.1.1/builtin.c --- gawk-5.1.0/builtin.c 2020-03-10 09:58:14.000000000 +0200 +++ gawk-5.1.1/builtin.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2020, + * Copyright (C) 1986, 1988, 1989, 1991-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -29,7 +29,6 @@ #if defined(HAVE_FCNTL_H) #include #endif -#include #include "random.h" #include "floatmagic.h" @@ -80,6 +79,7 @@ extern bool output_is_tty; extern FILE *output_fp; +static const char *add_thousands(const char *original, struct lconv *loc); #define POP_TWO_SCALARS(s1, s2) \ s2 = POP_SCALAR(); \ @@ -693,7 +693,7 @@ NODE *arg; long fw, prec, argnum; bool used_dollar; - bool lj, alt, big_flag, bigbig_flag, small_flag, have_prec, need_format; + bool lj, alt, have_prec, need_format; long *cur = NULL; uintmax_t uval; bool sgn; @@ -735,6 +735,11 @@ static const char zero_string[] = "0"; static const char lchbuf[] = "0123456789abcdef"; static const char Uchbuf[] = "0123456789ABCDEF"; + static const char bad_modifiers[] = "hjlLtz"; + static bool warned[sizeof(bad_modifiers)-1]; // auto-init to zero + + bool modifier_seen[sizeof(bad_modifiers)-1]; +#define modifier_index(c) (strchr(bad_modifiers, c) - bad_modifiers) #define INITIAL_OUT_SIZE 64 emalloc(obuf, char *, INITIAL_OUT_SIZE, "format_tree"); @@ -830,7 +835,8 @@ #endif fmt_type = MP_NONE; - lj = alt = big_flag = bigbig_flag = small_flag = false; + lj = alt = false; + memset(modifier_seen, 0, sizeof(modifier_seen)); magic_posix_flag = false; fill = sp; cp = cend; @@ -1014,57 +1020,29 @@ #else goto retry; #endif + case 'h': + case 'j': case 'l': - if (big_flag) - break; - else { - static bool warned = false; - - if (do_lint && ! warned) { - lintwarn(_("`l' is meaningless in awk formats; ignored")); - warned = true; - } - if (do_posix) { - msg(_("fatal: `l' is not permitted in POSIX awk formats")); - goto out; - } - } - big_flag = true; - goto retry; case 'L': - if (bigbig_flag) + case 't': + case 'z': + if (modifier_seen[modifier_index(cs1)]) break; else { - static bool warned = false; + int ind = modifier_index(cs1); - if (do_lint && ! warned) { - lintwarn(_("`L' is meaningless in awk formats; ignored")); - warned = true; + if (do_lint && ! warned[ind]) { + lintwarn(_("`%c' is meaningless in awk formats; ignored"), cs1); + warned[ind] = true; } if (do_posix) { - msg(_("fatal: `L' is not permitted in POSIX awk formats")); + msg(_("fatal: `%c' is not permitted in POSIX awk formats"), cs1); goto out; } } - bigbig_flag = true; + modifier_seen[modifier_index(cs1)] = true; goto retry; - case 'h': - if (small_flag) - break; - else { - static bool warned = false; - if (do_lint && ! warned) { - lintwarn(_("`h' is meaningless in awk formats; ignored")); - warned = true; - } - if (do_posix) { - msg(_("fatal: `h' is not permitted in POSIX awk formats")); - goto out; - } - } - small_flag = true; - goto retry; case 'P': if (magic_posix_flag) break; @@ -1576,24 +1554,27 @@ setlocale(LC_NUMERIC, ""); #endif + bool need_to_add_thousands = false; switch (fmt_type) { #ifdef HAVE_MPFR case MP_INT_WITH_PREC: sprintf(cp, "*.*Z%c", cs1); while ((nc = mpfr_snprintf(obufout, ofre, cpbuf, - (int) fw, (int) prec, zi)) >= ofre) + (int) fw, (int) prec, zi)) >= (int) ofre) chksize(nc) + need_to_add_thousands = true; break; case MP_INT_WITHOUT_PREC: sprintf(cp, "*Z%c", cs1); while ((nc = mpfr_snprintf(obufout, ofre, cpbuf, - (int) fw, zi)) >= ofre) + (int) fw, zi)) >= (int) ofre) chksize(nc) + need_to_add_thousands = true; break; case MP_FLOAT: sprintf(cp, "*.*R*%c", cs1); while ((nc = mpfr_snprintf(obufout, ofre, cpbuf, - (int) fw, (int) prec, ROUND_MODE, mf)) >= ofre) + (int) fw, (int) prec, ROUND_MODE, mf)) >= (int) ofre) chksize(nc) break; #endif @@ -1602,7 +1583,7 @@ sprintf(cp, "*.*%c", cs1); while ((nc = snprintf(obufout, ofre, cpbuf, (int) fw, (int) prec, - (double) tmpval)) >= ofre) + (double) tmpval)) >= (int) ofre) chksize(nc) } else { // For %a and %A, use the default precision if it @@ -1610,7 +1591,7 @@ sprintf(cp, "*%c", cs1); while ((nc = snprintf(obufout, ofre, cpbuf, (int) fw, - (double) tmpval)) >= ofre) + (double) tmpval)) >= (int) ofre) chksize(nc) } } @@ -1619,8 +1600,16 @@ if (quote_flag && ! use_lc_numeric) setlocale(LC_NUMERIC, "C"); #endif - len = strlen(obufout); + if (quote_flag && need_to_add_thousands) { + const char *new_text = add_thousands(obufout, & loc); + + len = strlen(new_text); + chksize(len) + strcpy(obufout, new_text); + free((void *) new_text); + } + ofre -= len; obufout += len; s0 = s1; @@ -2132,10 +2121,12 @@ & hour, & minute, & second, & dst); + // 9/2021: I've been told that according to the ISO 8601-1:2019 spec, + // hour cannot be 24. So the check for hour > 23 is valid. if ( do_lint /* Ready? Set! Go: */ && ( (second < 0 || second > 60) || (minute < 0 || minute > 59) - || (hour < 0 || hour > 23) /* FIXME ISO 8601 allows 24 ? */ + || (hour < 0 || hour > 23) || (day < 1 || day > 31) || (month < 1 || month > 12) )) lintwarn(_("mktime: at least one of the values is out of the default range")); @@ -2678,6 +2669,8 @@ dest = POP_PARAM(); if (dest->type != Node_var_array) fatal(_("match: third argument is not an array")); + check_symtab_functab(dest, "match", + _("%s: cannot use %s as third argument")); assoc_clear(dest); } tre = POP(); @@ -2955,8 +2948,6 @@ RESTART(rp, target->stptr) > target->stlen) goto done; - target->flags |= STRING; - text = target->stptr; textlen = target->stlen; @@ -3204,6 +3195,10 @@ DEREF(target); assert(buf != NULL); return make_str_node(buf, textlen, ALREADY_MALLOCED); + } else if ((target->flags & STRING) == 0) { + /* return a copy of original string */ + DEREF(target); + return make_str_node(target->stptr, target->stlen, 0); } /* return the original string */ @@ -3214,8 +3209,34 @@ if ((flags & LITERAL) != 0) DEREF(target); else if (matches > 0) { - unref(*lhs); - *lhs = make_str_node(buf, textlen, ALREADY_MALLOCED); + /* + * 8/2021: There's a bit of a song and dance here. If someone does + * + * x = @/abc/ + * sub(/b/, "x", x) + * + * What should the type of x be after the call? Does it get converted + * to string? Or does it remain a regexp? We've decided to let it + * remain a regexp. In that case, we have to update the compiled + * regular expression that it holds. + */ + bool is_regex = false; + NODE *target = *lhs; + + if ((target->flags & REGEX) != 0) { + is_regex = true; + + // free old regex registers + refree(target->typed_re->re_reg[0]); + if (target->typed_re->re_reg[1] != NULL) + refree(target->typed_re->re_reg[1]); + freenode(target->typed_re); + } + unref(*lhs); // nuke original value + if (is_regex) + *lhs = make_typed_regex(buf, textlen); + else + *lhs = make_str_node(buf, textlen, ALREADY_MALLOCED); } return make_number((AWKNUM) matches); @@ -3705,7 +3726,9 @@ if (endptr) *endptr = str; } else if (len >= 1 && *str == '0') { - for (; len > 0; len--) { + int l; + // preserve len in case we go to decimal + for (l = len; l > 0; l--) { if (! isdigit((unsigned char) *str)) { if (endptr) *endptr = str; @@ -3997,6 +4020,9 @@ DEREF(t2); } + if (the_result == NULL) + the_result = ""; + return make_string(the_result, strlen(the_result)); } @@ -4070,7 +4096,7 @@ do_typeof(int nargs) { NODE *arg; - char *res = NULL; + const char *res = NULL; bool deref = true; NODE *dbg; @@ -4149,7 +4175,7 @@ /* fall through */ default: if (res == NULL) { - warning(_("typeof detected invalid flags combination `%s'; please file a bug report."), flags2str(arg->flags)); + warning(_("typeof detected invalid flags combination `%s'; please file a bug report"), flags2str(arg->flags)); res = "unknown"; } break; @@ -4282,13 +4308,14 @@ format_nan_inf(NODE *n, char format) { static char buf[100]; + double val = n->numbr; #ifdef HAVE_MPFR if (is_mpg_integer(n)) return NULL; else if (is_mpg_float(n)) { if (mpfr_nan_p(n->mpg_numbr)) { - strcpy(buf, mpfr_sgn(n->mpg_numbr) < 0 ? "-nan" : "+nan"); + strcpy(buf, mpfr_signbit(n->mpg_numbr) != 0 ? "-nan" : "+nan"); goto fmt; } else if (mpfr_inf_p(n->mpg_numbr)) { @@ -4301,7 +4328,6 @@ /* else fallthrough */ #endif - double val = n->numbr; if (isnan(val)) { strcpy(buf, signbit(val) != 0 ? "-nan" : "+nan"); @@ -4325,3 +4351,119 @@ } return buf; } + + +/* check_symtab_functab --- check if dest is SYMTAB or FUNCTAB, fatal if so */ + +void +check_symtab_functab(NODE *dest, const char *fname, const char *msg) +{ + if (dest == symbol_table) + fatal(msg, fname, "SYMTAB"); + else if (dest == func_table) + fatal(msg, fname, "FUNCTAB"); +} + +/* reverse --- reverse the contents of a string in place */ + +static void +reverse(char *str) +{ + int i, j; + char tmp; + + for (i = 0, j = strlen(str) - 1; j > i; i++, j--) { + tmp = str[i]; + str[i] = str[j]; + str[j] = tmp; + } +} + +/* add_thousands --- add the thousands separator. Needed for MPFR %d format */ + +/* + * Copy the source string into the destination string, backwards, + * adding the thousands separator at the right points. Then reverse + * the string when done. This gives us much cleaner code than trying + * to work through the string backwards. (We tried it, it was yucky.) + */ + +static const char * +add_thousands(const char *original, struct lconv *loc) +{ + size_t orig_len = strlen(original); + size_t new_len = orig_len + (orig_len * strlen(loc->thousands_sep)) + 1; // worst case + char *newbuf; + char decimal_point = '\0'; + const char *dec = NULL; + const char *src; + char *dest; + + emalloc(newbuf, char *, new_len, "add_thousands"); + memset(newbuf, '\0', new_len); + + src = original + strlen(original) - 1; + dest = newbuf; + + if (loc->decimal_point[0] != '\0') { + decimal_point = loc->decimal_point[0]; + if ((dec = strchr(original, decimal_point)) != NULL) { + while (src >= dec) + *dest++ = *src--; + } + } + + + int ii = 0; + int jj = 0; + do { + *dest++ = *src--; + if (loc->grouping[ii] && ++jj == loc->grouping[ii]) { + if (src >= original) { /* only add if more digits coming */ + const char *ts = loc->thousands_sep; + int k; + + for (k = strlen(ts) - 1; k >= 0; k--) + *dest++ = ts[k]; + } + if (loc->grouping[ii+1] == 0) + jj = 0; /* keep using current val in loc.grouping[ii] */ + else if (loc->grouping[ii+1] == CHAR_MAX) { + // copy in the rest and be done + while (src >= original) + *dest++ = *src--; + break; + } else { + ii++; + jj = 0; + } + } + } while (src >= original); + + *dest++ = '\0'; + reverse(newbuf); + + return newbuf; +} + +#if 0 +// test program + +int main(int argc, char **argv) +{ + struct lconv *l; + + setlocale(LC_ALL, ""); + l = localeconv(); + + const char *new = add_thousands("12345678901234567890.54321", l); + printf("%s\n", new); + free((void*) new); + + new = add_thousands("12345678901234567890", l); + printf("%s\n", new); + free((void*) new); + + return 0; +} +#endif diff -urN gawk-5.1.0/ChangeLog gawk-5.1.1/ChangeLog --- gawk-5.1.0/ChangeLog 2020-04-14 14:41:24.000000000 +0300 +++ gawk-5.1.1/ChangeLog 2021-10-27 07:53:28.000000000 +0300 @@ -1,3 +1,711 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-24 Arnold D. Robbins + + * README: Updated. + +2021-10-20 Andrew J. Schorr + + * msg.c (err): Need to check that FNR_node->var_value is non-NULL + before testing with is_mpg_number. + +2021-10-18 Arnold D. Robbins + + Factor duplicated code out into a separate function. + D.R.Y. principle. + + * symbol.c (get_name_from_awk_ns): New function. + (lookup): Use it. + (install): Use it. + + * awkgram.y (check_qualified_special): Use awk_namespace instead of a + string constant. + * profile.c (pprint): Ditto. + (adjust_namespace): Ditto. Also, fix the check for the qualified + name to look for the "::" in case one namespace is a prefix of + another. + +2021-10-13 Arnold D. Robbins + + * README: Update version, copyright year. + * custom.h: Update copyright year. + +2021-09-26 Arnold D. Robbins + + * builtin.c (do_mktime): Update that ISO 8601 does not allow + hours > 23. Thanks to Nethox for the info. + +2021-09-23 Arnold D. Robbins + + * gawkapi.h: Some clean-up of comments in the header file. + +2021-09-12 Arnold D. Robbins + + * interpret.h: Remove subscript_in_array variable. + + Unrelated: + + * builtin.c (add_thousands): Fix insertion of thousands_sep + string. Do it in reverse order. + +2021-09-10 Arnold D. Robbins + + * interpret.h: For Op_subscript, don't allow references into + FUNCTAB and SYMTAB to create new elements. Thanks to + Jason C. Kwan for the bug report. + + Unrelated: + + * aclocal.m4: Regenerated: Automake 1.16.4. + * NEWS: Updated. + + Unrelated: + + * awkgram.y (YYERROR_IS_DECLARED): Added for Bison 3.8. + * command.y (YYERROR_IS_DECLARED): Ditto. + * NEWS: Updated. + +2021-09-09 Arnold D. Robbins + + Move to Autoconf 2.71 (finally!) + + * configure.ac: Updated. + * aclocal.m4, configh.in configure: Regenerated. + * NEWS: Updated. + +2021-09-06 Arnold D. Robbins + + Have the ' flag work for %d in MPFR mode also. Thanks to + Dan Nielsen for the report. + + * builtin.c (add_thousands): New function. + (reverse): New helper function. + (format_tree): Use add_thousands if MPFR and an integer + format. + +2021-09-03 Arnold D. Robbins + + * main.c (UPDATE_YEAR): Update to 2021. + +2021-08-18 Arnold D. Robbins + + * main.c (main): Change have_srcfile from int to bool. + +2021-08-15 Arnold D. Robbins + + Allow setting AR and ARFLAGS on the configure command line. + Thanks to Jacob Burkholder for + the report. + + * configure.ac (AR_FLAGS): Provide default value. + (AR): Call AC_SUBST on it. + +2021-08-13 Arnold D. Robbins + + * builtin.c (do_sub): Rationalize handling of strongly typed + regex as argument to sub/gsub, as well as rationalize the return + value from gensub to always be string. Thanks to John Naman + for the bug report. + +2021-08-05 Andrew J. Schorr + + * mpfr.c (do_mpfr_func): New argument, warn_negative. If true, + print a warning message about a negative argument. Bring -M + code into line with regular code. Bug report from Neil Ormos + in the help-gawk list. + + Unrelated: + + * mpfr.c (do_mpfr_int_div, mpg_div, mpg_mod): If dividing by + zero, print a fatal error messages. Brings MPFR code into line + with the regular code. Thanks to Peng Yu for noticing the bug, in + the help-gawk list. + +2021-07-23 Arnold D. Robbins + + * awk.h (exec_count_t): Add typedef for Vax VMS C and everyone else. + (EXEC_COUNT_FMT, EXEC_COUNT_PROFILE_FMT): Corresponding format + strings for printf. + * debug.c (print_instruction): Use EXEC_COUNT_FMT. + * profile.c (indent): Ditto and use EXEC_COUNT_PROFILE_FMT. + +2021-07-07 Arnold D. Robbins + + * array.c (asort_actual): Add a lint warning for passing the + same array as the first two arguments without a third. + Thanks to Peng Yu for the report. + +2021-06-30 Arnold D. Robbins + + * custom.h: Add a bunch of defines to work around the continous, + needless churn in support/dfa.c. + +2021-06-04 Arnold D. Robbins + + * builtin.c (format_tree): In MPFR prints, cast values to + int for proper int vs. unsigned comparison. Fixes things + for HP-UX. Thanks to Daniel Richard G. for the report. + +2021-05-21 Arnold D. Robbins + + * debug.c: For z/OS, use %#p to print pointers, %p everything else. + +2021-05-13 Arnold D. Robbins + + * custom.h: For z/OS, define _REGEX_INCLUDE_LIMITS_H. + * profile.c (pprint): Add a diagnostic print for an + unexprected node type. + +2021-05-05 Arnold D. Robbins + + Move to Automake 1.16.3. + + * configure.ac (AM_INIT_AUTOMAKE): Add subdir-objects option. + * NEWS: Updated. + + Get `make distcheck' working again: + + * Makefile.am (EXTRA_DIST): Remove files that are now in build-aux. + +2021-04-16 Arnold D. Robbins + + * main.c (arg_assign): For -v '@/...' make sure that there are + at least three characters there. Thanks to Ed Morton + for the report. + +2021-04-14 Arnold D. Robbins + + Fix up lint warnings for "no effect" to avoid false warnings. + Straighten out the messages, and remove the run-time warning, + since a parse-time warning is already issued. Thanks to + Arkadiusz Drabczyk for the initial + bug report. + + * awkgram.y (isnoeffect): Add more opcodes that are "no effect". + (add_lint): For LINT_no_effect, check that all the opcodes in the + list are "no effect". Only if so, issue the warning. Remove the + addition of the run-time warning. + * interpret.h (r_interpret): Remove LINT_no_effect from Op_lint + case. + +2021-02-13 Arnold D. Robbins + + * io.c (nextfile): Use the value of ARGC directly in the for + loop, in case it gets changed by code or by a command line + assignment. Thanks to the discussion in comp.lang.awk for + the report. + +2021-01-28 Arnold D. Robbins + + Fix a Day One Bug! + + * main.c (main): For -b option, only set LC_ALL to C if + not --posix. Ooops. + +2021-01-09 Arnold D. Robbins + + Fix problems turning something like 018 into decimal. + Thanks to Arkadiusz Drabczyk and to + Jean-Philippe Guérard + for the reports. + + * builtin.c (nondec2awknum): Use a copy of len, in case we detect + 8 or 9 and have to restart as decimal. + * mpfr.c (mpg_strtoui): For 8 or 9, set base to 10. + + Unrelated: + * array.c, awk.h, awkgram., builtin.c, cmd.h, command.y, debug.c, + eval.c, gawk.api.c, gawkapi.h, interpret.h, io.c, main.c, mfpr.c, + node.c, profile.c, re.c: Update copyright year. + +2021-01-08 Arnold D. Robbins + + General tightening up use of const and types. Thanks to + the C++ porting experiment. + + * array.c (null_array): Separate out multiple assignment of zero. + * awk.h: Add here and pull it out of individual files. + (CONVFMT): Make const char *. + (quote): Make const char *. + (defpath): Make const char *. + (deflibpath): Make const char *. + (envsep): Make const char *. + (DO_FLAG_NONE): New zero enum value. + (getblock): Add a cast to the ty argument. + (make_regnode): First argument is now NODETYPE. + (gawk_name): Returns const char *. + * awkgram.y: Include argument types in read_func pointer. + (make_regnode): First argument is now NODETYPE. + * builtin.c (do_typeof): Use const char *. + (format_nan_inf): Move declaration of val to top of function. + * cmd.h (dbg_prompt, commands_prompt, eval_prompt, dgawk_prompt): + Make const char *. + (struct cmd_token): Use const char *. Rename `class' to `lex_class'. + * command.y (lex_class): Update all uses. + (find_command): Use const char *. + * debug.c (dbg_prompt, commands_prompt, eval_prompt, dgawk_prompt, + output_file): Make const char *. + (struct dbg_option): Use const char *. + (do_info): Use const char *. Cast stop.command to enum argtype. + (do_finish): Cast stop.command to enum argtype. + (do_return, do_until): Ditto. + (print_instruction, set_gawk_output, set_prompt): Add casts to + some function parameters. + * eval.c (update_ERRNO_int): Use const char *. + * gawk.api.c (valtype2str): Return const char *. + (api_get_argument): Use awk_true instead of true in return statements. + (awk_value_to_node): Move declaration of tval to top of function. + (api_release): Cast a_cookie to NODE *. + * gawkapi.h (struct awk_input): Include argument types in + read_func pointer. + * interpret.h (r_interpret): Add cast to argument in call to + do_getline_redir. + * io.c (read_with_timeout): Change second param to void * from char *. + (redirect_string): Add casts to function call parameters. + (path_info): Use const char *. + (init_awkpath): Ditto. + * main.c (CONVFMT, locale_dir): Now const char *. + (do_flags): Init to DO_FLAG_NONE instead of zero. + * mfpr.c (get_rnd_mode): Add cast to return value. + (set_round_mode): Add cast to assignment of rndm. + (do_mpfr_func): Include argument types in type of second parameter. + * node.c (r_make_number): Remove declaration of strtod. + * profile.c (pp_push): Add cast in assignment to n->type. Use + const char * for `pre' at Op_func_call. + * re.c (check_bracket_exp): Add cast to return from memchr. + +2021-01-07 Arnold D. Robbins + + * builtin.c (format_tree): Generalize handling of invalid + format modifiers. Add support for three more letters. Thanks to + Arkadiusz Drabczyk for the report. + + Unrelated: + + * io.c (rsnullscan): Adjust loop test to get to end of string + when re match is null string. Thanks to Ed Morton + for the report. + +2020-12-26 Arnold D. Robbins + + * NEWS: Updated. + +2020-12-20 Arnold D. Robbins + + Second steps fixing +inform, +nancy, for MPFR. + + * builtin.c (format_nan_inf): Use mpfr_signbit instead of mpfr_sgn. + * mpfr.c (force_mpnum): Check for NaN and leading minus and if so + set the signbit with mpfr_setsign. + (mpg_force_number): Copy in code from f_force_number to check + properly for +inf, +nan. + +2020-12-19 Arnold D. Robbins + + First steps fixing +inform, +nancy. Sigh. + + * awk.h (is_ieee_magic_val): Add declaration. + * node.c (is_ieee_magic_val): Make extern, not static. + (r_force_number): Make the check smarter, catch -nan. + +2020-11-02 Arnold D. Robbins + + * re.c (make_regexp): Cast len parameter to int to avoid + compiler warnings. + +2020-10-31 Arnold D. Robbins + + * re.c (make_regexp): When re_compile_pattern fails, use the + original text of the regexp in the error message. Thanks to Neil + R. Ormos for the report. + +2020-10-29 Arnold D. Robbins + + * eval.c (setup_frame): Handle the case of values from FUNCTAB. + Thanks to Denis Shirokov for the report. + +2020-10-12 Arnold D. Robbins + + * gawkapi.c (api_lintwarn): Fix comparison, should be to check + lintfunc, not lintwarn. Thanks to OLLIER Jean-François + , reported 23 March, 2014. + +2020-10-11 Arnold D. Robbins + + * re.c (make_regexp): Add {} to characters that cause rp->maybe_long + to be true. + * io.c (rsrescan): Update comment for step 4. + +2020-09-21 Arnold D. Robbins + + * awk.h (enum redirect_flags): Add RED_NONE. + (redirect_flags_t): New typedef. + * io.c (redflags2str): Handle RED_NONE. + (check_duplicated_redirections): New function. + (redirect_string): Use new typedef. Call new function if do_lint + instead of using inline code. + (close_redir): Add error message for failure on close of two-way pipe. + +2020-09-04 Arnold D. Robbins + + * awkgram.y [GRAMMAR]: Install arrays as Node_var_array. Improves + PROCINFO["identifiers"]. Thanks to anoncoward@nym.hush.com + for the report. + +2020-08-25 Arnold D. Robbins + + * interpret.h (r_interpret): At Op_rule, check if in BEGINFILE. If so, + clear the record. Fixes an issue reported by Pat Rankin in May, 2011. + +2020-08-24 Arnold D. Robbins + + * awkgram.y, builtin.c, command.y, debug.c, gawkapi.c, + io.c, node.c: Make all messages consistent: Remove final periods + from messages that had them. + * TODO: Updated. + +2020-08-20 Arnold D. Robbins + + * awk.h (NODE): Move valref completely out of the union. Fixes + core dumps on old GCC on CentOS 7. + +2020-08-13 Arnold D. Robbins + + Fix TIDYMEM / use of mtrace. + + * configure.ac: Add mtrace to list of functions searched for. + * symbol.c (make_symbol): Set valref to 1. Allows the + release_all_vars function to work. + + Unrelated: + + * array.c (value_info): Spell ROUNDMODE correctly in output. + * mpfr.c (set_ROUNDMODE): Ditto. + +2020-08-12 Arnold D. Robbins + + * awkgram.c, command.c: Regenerated with Bison 3.7.1. + * NEWS: Updated. + + Unrelated: + + * profile.c (pp_namespace): Always print a newline before the + @namespace, in case it comes after a comment. Thanks to J Naman + for the report. + * symbol.c (comp_symbol): Adjust comparison so that names in the + awk namespace come out first. Makes the order of functions in + pretty-printed output more sane. Thanks also to J Naman for + getting me to explore this issue. + +2020-07-29 Arnold D. Robbins + + * custom.h (FLEXIBLE_ARRAY_MEMBER): Define to 1 for dfa.h. + +2020-07-28 Arnold D. Robbins + + Eliminate 'iszero: redefined' warning from tcc. + + * awk.h (is_zero): Renamed from `iszero'. + (boolval): Update usage. + * awkgram.y [GRAMMAR]: Ditto. + (negate_num): Ditto. + * debug.c (condition_triggered): Ditto. + * eval.c (set_LINT): Ditto. + +2020-07-26 Arnold D. Robbins + + * awkgram.c, command.c: Regenerated with Bison 3.7. + * NEWS: Updated. + + Unrelated: + + * gawkapi.h (api_get_mpfr, api_get_mpz): Mark as obsolete. + +2020-07-22 Arnold D. Robbins + + * Makefile.in: Regenerated. + +2020-07-21 Arnold D. Robbins + + * configure.ac (AM_INIT_AUTOMAKE): Update to 1.16. + * ar-lib, compile, config.guess, config.rpath, config.sub, + depcomp, install-sh, missing, ylwrap: Moved to build-aux. + +2020-07-20 gettextize + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.20.2. + +2020-07-19 Arnold D. Robbins + + * NEWS: Fix title on leading set of changes. Thanks to + Marcus for the report. + + Unrelated: Bump minor API version since semantics have changed. + + * gawkapi.h (api_minor_version): Increase to 1. + + Unrelated: Fix a spelling error in a comment. + + * mpfr.c (force_mpnum): Fix a typo. + +2020-07-17 Arnold D. Robbins + + * gawkapi.h (gawk_api_minor_version): Increase, since the + MPFR/MPZ stuff changed some. Remains source and binary + compatible, but semantics are different. + +2020-07-15 Arnold D. Robbins + + Finish cleaning up MPFR valgrind issues. + + * awk.h (struct block_header): Remove MPFR and GMP enums. + * gawkapi.c (getmpfr, freempfr, getmpz, freempz): Removed + (api_get_mpfr): Use emalloc instead of getmpfr. + (api_get_mpz): Use emalloc instead of getmpz. + * gawkapi.h: Add comments on MPFR and MPZ + (make_number_mpfr, make_number_mpz): Update comments. + * node.c (nextfree): Remove mpfr and mpz entries. + * NEWS: Updated. + + Unrelated: + + * config.guess, config.sub: Updated from GNULIB. + +2020-07-13 Arnold D. Robbins + + * mpfr.c (mpg_interpret): Small speedup. If do_itrace and opcode is + not one that's handled, return early. + +2020-07-12 Arnold D. Robbins + + * mpfr.c (mpg_interpret): Make the instruction tracing more sane. + + Fix the testext test for MPFR. + + * gawkapi.c (awk_value_to_node): Use correct code to copy + MPFR/MPN numbers and don't free the original values. + * interpret.h (r_interpret): At Op_ext_builtin, separate out calls + to the external function and awk_value_to_node, for ease in a + debugger. + * NEWS: Updated. + +2020-07-10 Arnold D. Robbins + + Fix printf issues. Thanks to Michal Jaegermann for the report. + + * cint_array.c (cint_dump): Fix printf formats. + * debug.c (print_symbol): Ditto. + * mpfr.c (mpg_interpret): Ditto. + +2020-07-09 Arnold D. Robbins + + Fix dbugeval2 test for MPFR. + + * debug.c (do_eval): Preserve DO_MPFR flag in do_flags before + parsing the string to be evaluated. + + Fix indirect call tests for MPFR: + + * awkgram.y (lookup_builtin): Only return the MPFR builtin + function if the pointer is not NULL. + + Unrelated: + + * config.guess, config.sub: Updated from GNULIB. + +2020-07-08 Arnold D. Robbins + + * str_array.c (str_lookup): If a pure number, copy to a string. Fixes + the printfchar test for MPFR. + + Fix typedregex2 and typedregex3 tests for MPFR: + + * mpfr.c (mpg_zero): No longer static inline. + (force_mpnum): Handle the case of a strongly typed regex. + (mpg_interpret): Add tracing for do_itrace. + * awk.h (mpg_zero): Add declaration. + * node.c (make_typed_regex): Init to zero for MPFR via mpg_zero. + +2020-07-07 Arnold D. Robbins + + * awk.h: Turn all the flag defines into enums. GDB can then show + the bit maps directly. + + Unrelated: Fix another MPFR bug, reported by Hyunho Cho + . + + * mpfr.c (force_mpnum): Restore the character at the end of + the string if only saw + or -. + +2020-07-07 Andrew J. Schorr + + * node.c (r_dupnode): Sanitize the code, particularly for MPFR. + +2020-07-05 Arnold D. Robbins + + Bug fixes in MPFR, reported by Hyunho Cho. + + * node.c (r_dupnode): Set strndmode and also set stlen of new + string. (How did that one get by us for so long?) + * mpfr.c (force_mpnum): Check for a + or - sign with nothing following it. + + Unrelated. Make do_itrace a real variable so that it's easier to + change the value from a debugger. + + * awk.h (do_itrace): Declare. + (DO_ITRACE, do_itrace): Remove macros. + * main.c (do_itrace): Define. + (parse_args): Set do_itrace. + +2020-07-03 Arnold D. Robbins + + Fix a double free error with -M. Thanks to + "NIDE, Naoyuki" for the report. + + * field.c (clear_mpfr): New macro, clears MPFR and NUMCUR bits. + (reset_record): Use it on the newly copied field values. + (purge_record): Add introductory comment since we're in the file. + +2020-07-01 Arnold D. Robbins + + * eval.c (posix_compare): Rewrite contributed by + Michael Builov . + + Unrelated: + + * awk.h: New option: do_itrace. + * interpret.h (r_interpret): Print instruction trace if enabled. + * main.c (optab): New option: -I/--trace. + (parse_args): Update optlist and the code to handle it. + * NEWS: Updated. + +2020-06-29 Arnold D. Robbins + + * debug.c: Cleanup messages. Error messages start with lower + case letter. + * TODO: Updated. + +2020-06-14 Arnold D. Robbins + + Disallow SYMTAB and FUNCTAB as destination arguments to builtin + functions that clear arrays: + + * awk.h (check_symtab_functab): Add declaration. + * array.c (asort_actual): Call it in check for second argument. + * builtin.c (check_symtab_functab): New function. + (do_match): Call it in check for third argument. + * field.c (do_patsplit, do_split): Call it in checks for fourth and + second arguments. + +2020-06-12 Arnold D. Robbins + + * array.c (asort_actual): If SYMTAB or FUNCTAB is the second argument, + fatal out. If they are the first argument, make it work when a + second argument is supplied. + * TODO, NEWS: Updated. + +2020-06-10 Arnold D. Robbins + + More miscellaneous fixes from Michael Builov . + + * node.c (r_unref): Handle GAWKDEBUG same as in awk.h:unref. + (parse_escape): isxdigit/isdigit/isupper called with possible negative + int: fixed. Dead code under "if (do_lint && j > 2)" eliminated, + j cannot be > 2. + (init_btowc_cache): Also initialize wide-char at index 255. + + And so that `make check' passes with GAWKDEBUG defined: + + * msg.c (err): Remove abort() call if fatal. Didn't really do + anything special for us. + +2020-06-10 Arnold D. Robbins + + * awkgram.c, command.c: Regenerated with bison 3.6.3. + * NEWS: Updated. + +2020-06-10 Andrew J. Schorr + + Convert exec_count from long long to unsigned long long. + * awk.h (INSTRUCTION): Change ldl type from long long to unsigned + long long. + * debug.c (print_instruction): Fix printf format for exec_count. + * profile.c (indent): The argument is now an unsigned long long, + and fix the printf format to match. + +2020-06-10 Arnold D. Robbins + + Miscellaneous fixes from Michael Builov . + + * awkgram.y (rule_block): Fix size declaration + (parse_program): Adjust memset call. + (get_comment): Check for end of file before checking for space. + * io.c (gawk_popen): Move os_close_on_exec call inside #endif. + * builtin.c (do_bindtextdomain): Don't pass NULL to strlen. + * debug.c (set_breakpoint): Don't dereference NULL pointer in D_func. + (serialize_list): Get the buffer management right to avoid overrun. + +2020-06-10 Arnold D. Robbins + + Thanks to Andrew Schorr for suggesting a better way to + handle exec_count being a long long. + + * awk.h (INSTRUCTION): Make new ldl member be the long long. + (exec_count): Is now ldl. + * profile.c (pprint): Fix printf of exec_count. + +2020-06-09 Arnold D. Robbins + + * awkgram.y (tokexpand): Use size_t instead of int for size of + buffer. + +2020-06-08 Arnold D. Robbins + + * awkgram.y: Fix `print $"2"' case. Thanks to Ed Morton + for the report. + + Unrelated: + + * awk.h (INSTRUCTION): Make dl a long long for profiling + counts on 32 bit systems. Thanks to Peter Lindgren + for the report. + * profile.c (indent): Take a long long parameter and fix + the printf format. + +2020-06-05 Arnold D. Robbins + + * awkgram.y: Allow @/foo/ as return expression in a function. + Oops. + +2020-06-05 Arnold D. Robbins + + * configure.ac: Add call to AM_PROG_AR for use in + cross compiles. Thanks to Sergei Trofimovich + for the patch. + +2020-05-15 Arnold D. Robbins + + * config.guess, config.sub: Updated from GNULIB. + +2020-05-14 Arnold D. Robbins + + * awkgram.c, command.c: Rebuild with Bison 3.6. + * NEWS: Updated. + +2020-05-06 Arnold D. Robbins + + Add lint check for string + string. It's not concatenation + in awk, but is in most other languages. Thanks to Roland Illig + for the suggestion. + + * awk.h (Op_lint_plus): New opcode. + * awkgram.y (mk_binary): Add it into the list in the right place + if do_lint. + * eval.c (optypes): Add case for Op_lint_plus. + * interpret.h (r_interpret): Ditto. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. @@ -104,7 +812,7 @@ 2020-01-26 John E. Malmberg * custom.h: Additional OpenVMS typedefs needed. - * getext.h: Fix macro for implementations without gettext + * gettext.h: Fix macro for implementations without gettext to not force the result to be a const char *. 2020-01-26 Andrew J. Schorr @@ -122,10 +830,10 @@ * array.c (sort_up_value_type): Handle other types of nodes, in case someone applies PROCINFO["sorted_in"] to SYMTAB or FUNCTAB. This threw an assertion error if assertions were - enabled. Thanks to John Namam for the report. + enabled. Thanks to John Namam for the report. (asort_actual): Disallow SYMTAB and FUNCTAB as first arguments. * TODO: Note that we should should eventually allow SYMTAB/FUNCTAB - passed to asort/asaorti if a destination array is provided. (The + passed to asort/asorti if a destination array is provided. (The current code breaks right now.) 2020-01-19 Arnold D. Robbins @@ -369,7 +1077,6 @@ * gawkapi.h: Update copyright year, fix some spelling errors. 2019-07-08 Andrew J. Schorr -2019-07-08 Andrew J. Schorr * gawkapi.h (gawk_api_major_version): Bump from 2 to 3 because the namespace changes altered the function signatures in gawk_api_t. @@ -472,7 +1179,7 @@ 2019-02-21 Andrew J. Schorr - * interpert.h (Op_store_field): Move call to force_string to + * interpret.h (Op_store_field): Move call to force_string to here from unfield. Speeds up work with fields that are numeric only. Thanks to Tom Gray for the report. diff -urN gawk-5.1.0/ChangeLog.1 gawk-5.1.1/ChangeLog.1 --- gawk-5.1.0/ChangeLog.1 2020-02-06 22:52:55.000000000 +0200 +++ gawk-5.1.1/ChangeLog.1 2021-07-23 15:34:34.000000000 +0300 @@ -531,6 +531,7 @@ 2018-11-11 Arnold D. Robbins * main.c (usage): Improve output for -Z in the help. + 2018-11-11 Arnold D. Robbins * awkgram.y (outer_comment): New variable. diff -urN gawk-5.1.0/cint_array.c gawk-5.1.1/cint_array.c --- gawk-5.1.0/cint_array.c 2020-02-06 22:52:56.000000000 +0200 +++ gawk-5.1.1/cint_array.c 2021-10-27 07:26:43.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013, 2016, 2017, 2019, 2020, + * Copyright (C) 1986, 1988, 1989, 1991-2013, 2016, 2017, 2019, 2020, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -527,8 +527,8 @@ indent(indent_level); fprintf(output_fp, "THRESHOLD: %ld\n", THRESHOLD); indent(indent_level); - fprintf(output_fp, "table_size: %ld (total), %ld (cint), %ld (int + str)\n", - symbol->table_size, cint_size, xsize); + fprintf(output_fp, "table_size: %lu (total), %ld (cint), %ld (int + str)\n", + (unsigned long) symbol->table_size, cint_size, xsize); indent(indent_level); fprintf(output_fp, "array_capacity: %lu\n", (unsigned long) symbol->array_capacity); indent(indent_level); diff -urN gawk-5.1.0/cmd.h gawk-5.1.1/cmd.h --- gawk-5.1.0/cmd.h 2019-08-28 21:54:13.000000000 +0300 +++ gawk-5.1.1/cmd.h 2021-01-09 22:33:56.000000000 +0200 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2004, 2010, 2011, 2013, 2014, 2017, + * Copyright (C) 2004, 2010, 2011, 2013, 2014, 2017, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -43,10 +43,10 @@ extern int input_fd; extern bool input_from_tty; extern FILE *out_fp; -extern char *dbg_prompt; -extern char *commands_prompt; -extern char *eval_prompt; -extern char *dgawk_prompt; +extern const char *dbg_prompt; +extern const char *commands_prompt; +extern const char *eval_prompt; +extern const char *dgawk_prompt; enum argtype { D_illegal, @@ -148,9 +148,9 @@ struct cmdtoken { const char *name; - char *abbrvn; /* abbreviation */ + const char *abbrvn; /* abbreviation */ enum argtype type; - int class; + int lex_class; Func_cmd cf_ptr; const char *help_txt; }; diff -urN gawk-5.1.0/command.y gawk-5.1.1/command.y --- gawk-5.1.0/command.y 2020-04-10 14:45:02.000000000 +0300 +++ gawk-5.1.1/command.y 2021-09-15 14:56:12.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2004, 2010, 2011, 2014, 2016, 2017, 2019, 2020, + * Copyright (C) 2004, 2010, 2011, 2014, 2016, 2017, 2019-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -36,6 +36,7 @@ static int yylex(void); static void yyerror(const char *mesg, ...); +#define YYERROR_IS_DECLARED 1 /* for bison 3.8. sigh. */ static int find_command(const char *token, size_t toklen); @@ -286,7 +287,7 @@ | control_cmd opt_plus_integer | frame_cmd opt_integer { - if (cmdtab[cmd_idx].class == D_FRAME + if (cmdtab[cmd_idx].lex_class == D_FRAME && $2 != NULL && $2->a_int < 0) yyerror(_("invalid frame number: %d"), $2->a_int); } @@ -320,12 +321,12 @@ | D_SOURCE D_STRING { if (in_cmd_src($2->a_string)) - yyerror(_("source: `%s': already sourced."), $2->a_string); + yyerror(_("source: `%s': already sourced"), $2->a_string); } | D_SAVE D_STRING { if (! input_from_tty) - yyerror(_("save: `%s': command not permitted."), $2->a_string); + yyerror(_("save: `%s': command not permitted"), $2->a_string); } | D_COMMANDS commands_arg { @@ -816,93 +817,93 @@ struct cmdtoken cmdtab[] = { { "backtrace", "bt", D_backtrace, D_BACKTRACE, do_backtrace, - gettext_noop("backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames.") }, + gettext_noop("backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames") }, { "break", "b", D_break, D_BREAK, do_breakpoint, - gettext_noop("break [[filename:]N|function] - set breakpoint at the specified location.") }, + gettext_noop("break [[filename:]N|function] - set breakpoint at the specified location") }, { "clear", "", D_clear, D_CLEAR, do_clear, - gettext_noop("clear [[filename:]N|function] - delete breakpoints previously set.") }, + gettext_noop("clear [[filename:]N|function] - delete breakpoints previously set") }, { "commands", "", D_commands, D_COMMANDS, do_commands, - gettext_noop("commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit.") }, + gettext_noop("commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit") }, { "condition", "", D_condition, D_CONDITION, do_condition, - gettext_noop("condition num [expr] - set or clear breakpoint or watchpoint condition.") }, + gettext_noop("condition num [expr] - set or clear breakpoint or watchpoint condition") }, { "continue", "c", D_continue, D_CONTINUE, do_continue, - gettext_noop("continue [COUNT] - continue program being debugged.") }, + gettext_noop("continue [COUNT] - continue program being debugged") }, { "delete", "d", D_delete, D_DELETE, do_delete_breakpoint, - gettext_noop("delete [breakpoints] [range] - delete specified breakpoints.") }, + gettext_noop("delete [breakpoints] [range] - delete specified breakpoints") }, { "disable", "", D_disable, D_DISABLE, do_disable_breakpoint, - gettext_noop("disable [breakpoints] [range] - disable specified breakpoints.") }, + gettext_noop("disable [breakpoints] [range] - disable specified breakpoints") }, { "display", "", D_display, D_DISPLAY, do_display, - gettext_noop("display [var] - print value of variable each time the program stops.") }, + gettext_noop("display [var] - print value of variable each time the program stops") }, { "down", "", D_down, D_DOWN, do_down, - gettext_noop("down [N] - move N frames down the stack.") }, + gettext_noop("down [N] - move N frames down the stack") }, { "dump", "", D_dump, D_DUMP, do_dump_instructions, - gettext_noop("dump [filename] - dump instructions to file or stdout.") }, + gettext_noop("dump [filename] - dump instructions to file or stdout") }, { "enable", "e", D_enable, D_ENABLE, do_enable_breakpoint, - gettext_noop("enable [once|del] [breakpoints] [range] - enable specified breakpoints.") }, + gettext_noop("enable [once|del] [breakpoints] [range] - enable specified breakpoints") }, { "end", "", D_end, D_END, do_commands, - gettext_noop("end - end a list of commands or awk statements.") }, + gettext_noop("end - end a list of commands or awk statements") }, { "eval", "", D_eval, D_EVAL, do_eval, - gettext_noop("eval stmt|[p1, p2, ...] - evaluate awk statement(s).") }, + gettext_noop("eval stmt|[p1, p2, ...] - evaluate awk statement(s)") }, { "exit", "", D_quit, D_QUIT, do_quit, - gettext_noop("exit - (same as quit) exit debugger.") }, + gettext_noop("exit - (same as quit) exit debugger") }, { "finish", "", D_finish, D_FINISH, do_finish, - gettext_noop("finish - execute until selected stack frame returns.") }, + gettext_noop("finish - execute until selected stack frame returns") }, { "frame", "f", D_frame, D_FRAME, do_frame, - gettext_noop("frame [N] - select and print stack frame number N.") }, + gettext_noop("frame [N] - select and print stack frame number N") }, { "help", "h", D_help, D_HELP, do_help, - gettext_noop("help [command] - print list of commands or explanation of command.") }, + gettext_noop("help [command] - print list of commands or explanation of command") }, { "ignore", "", D_ignore, D_IGNORE, do_ignore_breakpoint, - gettext_noop("ignore N COUNT - set ignore-count of breakpoint number N to COUNT.") }, + gettext_noop("ignore N COUNT - set ignore-count of breakpoint number N to COUNT") }, { "info", "i", D_info, D_INFO, do_info, - gettext_noop("info topic - source|sources|variables|functions|break|frame|args|locals|display|watch.") }, + gettext_noop("info topic - source|sources|variables|functions|break|frame|args|locals|display|watch") }, { "list", "l", D_list, D_LIST, do_list, - gettext_noop("list [-|+|[filename:]lineno|function|range] - list specified line(s).") }, + gettext_noop("list [-|+|[filename:]lineno|function|range] - list specified line(s)") }, { "next", "n", D_next, D_NEXT, do_next, - gettext_noop("next [COUNT] - step program, proceeding through subroutine calls.") }, + gettext_noop("next [COUNT] - step program, proceeding through subroutine calls") }, { "nexti", "ni", D_nexti, D_NEXTI, do_nexti, - gettext_noop("nexti [COUNT] - step one instruction, but proceed through subroutine calls.") }, + gettext_noop("nexti [COUNT] - step one instruction, but proceed through subroutine calls") }, { "option", "o", D_option, D_OPTION, do_option, - gettext_noop("option [name[=value]] - set or display debugger option(s).") }, + gettext_noop("option [name[=value]] - set or display debugger option(s)") }, { "print", "p", D_print, D_PRINT, do_print_var, - gettext_noop("print var [var] - print value of a variable or array.") }, + gettext_noop("print var [var] - print value of a variable or array") }, { "printf", "", D_printf, D_PRINTF, do_print_f, - gettext_noop("printf format, [arg], ... - formatted output.") }, + gettext_noop("printf format, [arg], ... - formatted output") }, { "quit", "q", D_quit, D_QUIT, do_quit, - gettext_noop("quit - exit debugger.") }, + gettext_noop("quit - exit debugger") }, { "return", "", D_return, D_RETURN, do_return, - gettext_noop("return [value] - make selected stack frame return to its caller.") }, + gettext_noop("return [value] - make selected stack frame return to its caller") }, { "run", "r", D_run, D_RUN, do_run, - gettext_noop("run - start or restart executing program.") }, + gettext_noop("run - start or restart executing program") }, #ifdef HAVE_LIBREADLINE { "save", "", D_save, D_SAVE, do_save, - gettext_noop("save filename - save commands from the session to file.") }, + gettext_noop("save filename - save commands from the session to file") }, #endif { "set", "", D_set, D_SET, do_set_var, - gettext_noop("set var = value - assign value to a scalar variable.") }, + gettext_noop("set var = value - assign value to a scalar variable") }, { "silent", "", D_silent, D_SILENT, do_commands, - gettext_noop("silent - suspends usual message when stopped at a breakpoint/watchpoint.") }, + gettext_noop("silent - suspends usual message when stopped at a breakpoint/watchpoint") }, { "source", "", D_source, D_SOURCE, do_source, - gettext_noop("source file - execute commands from file.") }, + gettext_noop("source file - execute commands from file") }, { "step", "s", D_step, D_STEP, do_step, - gettext_noop("step [COUNT] - step program until it reaches a different source line.") }, + gettext_noop("step [COUNT] - step program until it reaches a different source line") }, { "stepi", "si", D_stepi, D_STEPI, do_stepi, - gettext_noop("stepi [COUNT] - step one instruction exactly.") }, + gettext_noop("stepi [COUNT] - step one instruction exactly") }, { "tbreak", "t", D_tbreak, D_TBREAK, do_tmp_breakpoint, - gettext_noop("tbreak [[filename:]N|function] - set a temporary breakpoint.") }, + gettext_noop("tbreak [[filename:]N|function] - set a temporary breakpoint") }, { "trace", "", D_trace, D_TRACE, do_trace_instruction, - gettext_noop("trace on|off - print instruction before executing.") }, + gettext_noop("trace on|off - print instruction before executing") }, { "undisplay", "", D_undisplay, D_UNDISPLAY, do_undisplay, - gettext_noop("undisplay [N] - remove variable(s) from automatic display list.") }, + gettext_noop("undisplay [N] - remove variable(s) from automatic display list") }, { "until", "u", D_until, D_UNTIL, do_until, - gettext_noop("until [[filename:]N|function] - execute until program reaches a different line or line N within current frame.") }, + gettext_noop("until [[filename:]N|function] - execute until program reaches a different line or line N within current frame") }, { "unwatch", "", D_unwatch, D_UNWATCH, do_unwatch, - gettext_noop("unwatch [N] - remove variable(s) from watch list.") }, + gettext_noop("unwatch [N] - remove variable(s) from watch list") }, { "up", "", D_up, D_UP, do_up, - gettext_noop("up [N] - move N frames up the stack.") }, + gettext_noop("up [N] - move N frames up the stack") }, { "watch", "w", D_watch, D_WATCH, do_watch, - gettext_noop("watch var - set a watchpoint for a variable.") }, + gettext_noop("watch var - set a watchpoint for a variable") }, { "where", "", D_backtrace, D_BACKTRACE, do_backtrace, - gettext_noop("where [N] - (same as backtrace) print trace of all or N innermost (outermost if N < 0) frames.") }, + gettext_noop("where [N] - (same as backtrace) print trace of all or N innermost (outermost if N < 0) frames") }, { NULL, NULL, D_illegal, 0, (Func_cmd) 0, NULL }, }; @@ -1096,7 +1097,7 @@ add_history(h->line); #endif cmd_idx = repeat_idx; - return cmdtab[cmd_idx].class; /* repeat last command */ + return cmdtab[cmd_idx].lex_class; /* repeat last command */ } repeat_idx = -1; } @@ -1156,7 +1157,7 @@ arg->a_string = estrdup(lexptr_begin, lexend - lexptr_begin); append_cmdarg(arg); } - return cmdtab[cmd_idx].class; + return cmdtab[cmd_idx].lex_class; } else { yyerror(_("unknown command - `%.*s', try help"), toklen, tokstart); return '\n'; @@ -1417,7 +1418,7 @@ static int find_command(const char *token, size_t toklen) { - char *name, *abrv; + const char *name, *abrv; int i, k; bool try_exact = true; int abrv_match = -1; diff -urN gawk-5.1.0/configh.in gawk-5.1.1/configh.in --- gawk-5.1.0/configh.in 2020-04-14 14:45:01.000000000 +0300 +++ gawk-5.1.1/configh.in 2021-10-28 19:48:28.000000000 +0300 @@ -26,14 +26,17 @@ /* Define to 1 if you have the `btowc' function. */ #undef HAVE_BTOWC -/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the - CoreFoundation framework. */ -#undef HAVE_CFLOCALECOPYCURRENT +/* Define to 1 if you have the Mac OS X function + CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE +/* Define to 1 if C supports variable-length arrays. */ +#undef HAVE_C_VARARRAYS + /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT @@ -147,6 +150,9 @@ /* Define to 1 if you have the `memset_ulong' function. */ #undef HAVE_MEMSET_ULONG +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP @@ -156,6 +162,9 @@ /* Define to 1 if you have fully functional mpfr and gmp libraries. */ #undef HAVE_MPFR +/* Define to 1 if you have the `mtrace' function. */ +#undef HAVE_MTRACE + /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H @@ -195,6 +204,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H @@ -377,7 +389,9 @@ /* The size of `unsigned long', as computed by sizeof. */ #undef SIZEOF_UNSIGNED_LONG -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* enable built-in intdiv0 function */ @@ -386,9 +400,6 @@ /* some systems define this type here */ #undef TIME_T_IN_SYS_TYPES_H -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME @@ -399,41 +410,99 @@ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE #endif /* Version number of package */ #undef VERSION -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES -/* Define to 1 if on MINIX. */ -#undef _MINIX - /* The _Noreturn keyword of C11. */ #ifndef _Noreturn # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ @@ -447,18 +516,16 @@ #endif -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE - -/* Define to 1 if type `char' is unsigned and you are not using gcc. */ +/* Define to 1 if type `char' is unsigned and your compiler does not + predefine this macro. */ #ifndef __CHAR_UNSIGNED__ # undef __CHAR_UNSIGNED__ #endif +/* Define to 1 if C does not support variable-length arrays, and if the + compiler does not already define this. */ +#undef __STDC_NO_VLA__ + /* Define to empty if `const' does not conform to ANSI C. */ #undef const @@ -475,19 +542,20 @@ not define. */ #undef intmax_t -/* Define to `int' if does not define. */ +/* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is - supported directly. */ + supported only directly. */ #undef restrict -/* Work around a bug in Sun C++: it does not support _Restrict or - __restrict__, even though the corresponding Sun C compiler ends up with - "#define restrict _Restrict" or "#define restrict __restrict__" in the - previous line. Perhaps some future version of Sun C++ will work with - restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ -#if defined __SUNPRO_CC && !defined __RESTRICT +/* Work around a bug in older versions of Sun C++, which did not + #define __restrict__ or support _Restrict or __restrict__ + even though the corresponding Sun C compiler ended up with + "#define restrict _Restrict" or "#define restrict __restrict__" + in the previous line. This workaround can be removed once + we assume Oracle Developer Studio 12.5 (2016) or later. */ +#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ # define _Restrict # define __restrict__ #endif diff -urN gawk-5.1.0/configure gawk-5.1.1/configure --- gawk-5.1.0/configure 2020-04-14 14:44:52.000000000 +0300 +++ gawk-5.1.1/configure 2021-10-28 19:48:26.000000000 +0300 @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GNU Awk 5.1.0. +# Generated by GNU Autoconf 2.71 for GNU Awk 5.1.1. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +84,6 @@ fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +109,10 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,42 +169,53 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -230,14 +223,21 @@ esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -255,18 +255,19 @@ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-gawk@gnu.org + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bug-gawk@gnu.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do @@ -294,6 +295,7 @@ } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -311,6 +313,14 @@ as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -325,7 +335,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -334,7 +344,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -373,12 +383,13 @@ # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -390,18 +401,27 @@ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -413,9 +433,9 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -442,7 +462,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -486,7 +506,7 @@ s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -500,6 +520,10 @@ exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -513,6 +537,13 @@ ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -580,50 +611,45 @@ # Identity of this package. PACKAGE_NAME='GNU Awk' PACKAGE_TARNAME='gawk' -PACKAGE_VERSION='5.1.0' -PACKAGE_STRING='GNU Awk 5.1.0' +PACKAGE_VERSION='5.1.1' +PACKAGE_STRING='GNU Awk 5.1.1' PACKAGE_BUGREPORT='bug-gawk@gnu.org' -PACKAGE_URL='http://www.gnu.org/software/gawk/' +PACKAGE_URL='https://www.gnu.org/software/gawk/' # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= gt_needs= -ac_header_list= -ac_func_list= +ac_func_c_list= enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE @@ -650,11 +676,11 @@ LIBICONV INTL_MACOSX_LIBS XGETTEXT_EXTRA_OPTIONS +MSGMERGE_FOR_MSGFMT_OPTION MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 -MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION @@ -662,13 +688,15 @@ SED ZOS_FAIL acl_shlibext +ac_ct_AR +AR RANLIB +CPP LN_S YFLAGS YACC EGREP GREP -CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE @@ -698,6 +726,9 @@ AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V +CSCOPE +ETAGS +CTAGS am__untar am__tar AMTAR @@ -789,9 +820,9 @@ LDFLAGS LIBS CPPFLAGS -CPP YACC -YFLAGS' +YFLAGS +CPP' ac_subdirs_all='extension' # Initialize some variables set by options. @@ -860,8 +891,6 @@ *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -902,9 +931,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -928,9 +957,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1141,9 +1170,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1157,9 +1186,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1203,9 +1232,9 @@ *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1221,7 +1250,7 @@ case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1285,7 +1314,7 @@ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1342,7 +1371,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU Awk 5.1.0 to adapt to many kinds of systems. +\`configure' configures GNU Awk 5.1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1413,7 +1442,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Awk 5.1.0:";; + short | recursive ) echo "Configuration of GNU Awk 5.1.1:";; esac cat <<\_ACEOF @@ -1459,20 +1488,20 @@ LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory - CPP C preprocessor YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. + CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . -GNU Awk home page: . -General help using GNU software: . +GNU Awk home page: . +General help using GNU software: . _ACEOF ac_status=$? fi @@ -1488,9 +1517,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1518,7 +1547,8 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1526,7 +1556,7 @@ echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1535,10 +1565,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Awk configure 5.1.0 -generated by GNU Autoconf 2.69 +GNU Awk configure 5.1.1 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1555,14 +1585,14 @@ ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1570,14 +1600,15 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1587,6 +1618,39 @@ } # ac_fn_c_try_compile +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. @@ -1599,7 +1663,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1607,14 +1671,15 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1624,184 +1689,20 @@ } # ac_fn_c_try_cpp -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to bug-gawk@gnu.org ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1809,17 +1710,18 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1834,6 +1736,49 @@ } # ac_fn_c_try_link +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -1841,17 +1786,18 @@ ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof ($2)) return 0; @@ -1859,12 +1805,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -1872,18 +1819,19 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type @@ -1902,7 +1850,7 @@ /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; @@ -1912,14 +1860,15 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -1929,9 +1878,10 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid; break -else +else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -1939,14 +1889,14 @@ fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; @@ -1956,14 +1906,15 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; @@ -1973,9 +1924,10 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=$ac_mid; break -else +else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -1983,14 +1935,14 @@ fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val @@ -1998,7 +1950,7 @@ /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2008,12 +1960,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid -else +else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; @@ -2023,12 +1976,12 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } +static long int longval (void) { return $2; } +static unsigned long int ulongval (void) { return $2; } #include #include int -main () +main (void) { FILE *f = fopen ("conftest.val", "w"); @@ -2056,9 +2009,10 @@ return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : echo >>conftest.val; read $3 &5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -2089,16 +2044,9 @@ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -2116,24 +2064,25 @@ #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func @@ -2145,16 +2094,17 @@ ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (ac_aggr.$3) @@ -2163,14 +2113,15 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) @@ -2179,41 +2130,45 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { #ifndef $as_decl_name #ifdef __cplusplus @@ -2227,27 +2182,50 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_decl +} # ac_fn_check_decl +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU Awk $as_me 5.1.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by GNU Awk $as_me 5.1.1, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2280,8 +2258,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2316,7 +2298,7 @@ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2351,11 +2333,13 @@ # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2366,8 +2350,8 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2391,7 +2375,7 @@ ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2399,14 +2383,14 @@ do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2414,15 +2398,15 @@ do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2430,8 +2414,8 @@ echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2445,63 +2429,48 @@ # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2511,23 +2480,439 @@ # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" gt_needs="$gt_needs " -as_fn_append ac_header_list " sys/time.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_func_list " alarm" +as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" +as_fn_append ac_func_c_list " alarm HAVE_ALARM" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath ar-lib compile config.guess config.sub missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2538,12 +2923,12 @@ eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2552,24 +2937,24 @@ ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2579,11 +2964,12 @@ fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2607,43 +2993,20 @@ if test "$INSTALL" = "" then - INSTALL="$srcdir/install-sh -c" + INSTALL="$srcdir/build-aux/install-sh -c" export INSTALL fi -am__api_version='1.16' -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -# Find a good install program. We prefer a C program (faster), +am__api_version='1.16' + + + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -2657,20 +3020,25 @@ # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -2680,13 +3048,13 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -2694,12 +3062,12 @@ echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -2715,7 +3083,7 @@ rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -2725,8 +3093,8 @@ INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2736,8 +3104,8 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2791,8 +3159,8 @@ as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= @@ -2811,26 +3179,23 @@ # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then @@ -2850,11 +3215,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -2862,11 +3228,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2877,11 +3247,11 @@ fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2890,11 +3260,12 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -2902,11 +3273,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2917,11 +3292,11 @@ fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2929,8 +3304,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2942,25 +3317,31 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -2971,7 +3352,7 @@ fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a @@ -2981,18 +3362,19 @@ MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -3000,11 +3382,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3015,24 +3401,25 @@ fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -3048,12 +3435,12 @@ rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -3067,7 +3454,8 @@ rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -3077,12 +3465,13 @@ *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -3094,8 +3483,8 @@ am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -3127,17 +3516,13 @@ # Define the identity of the package. PACKAGE='gawk' - VERSION='5.1.0' + VERSION='5.1.1' -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. @@ -3177,6 +3562,20 @@ +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile @@ -3221,25 +3620,25 @@ fi - - # Check whether --enable-lint was given. -if test "${enable_lint+set}" = set; then : +if test ${enable_lint+y} +then : enableval=$enable_lint; if test "$enableval" = no then -$as_echo "#define NO_LINT 1" >>confdefs.h +printf "%s\n" "#define NO_LINT 1" >>confdefs.h fi fi # Check whether --enable-builtin-intdiv0 was given. -if test "${enable_builtin_intdiv0+set}" = set; then : +if test ${enable_builtin_intdiv0+y} +then : enableval=$enable_builtin_intdiv0; if test "$enableval" = yes then -$as_echo "#define SUPPLY_INTDIV 1" >>confdefs.h +printf "%s\n" "#define SUPPLY_INTDIV 1" >>confdefs.h sed '/^@set PATCHLEVEL/a\ @set INTDIV' < "$srcdir"/doc/gawktexi.in > foo @@ -3252,7 +3651,8 @@ SKIP_MPFR=no # Check whether --enable-mpfr was given. -if test "${enable_mpfr+set}" = set; then : +if test ${enable_mpfr+y} +then : enableval=$enable_mpfr; if test "$enableval" = no then SKIP_MPFR=yes @@ -3263,7 +3663,8 @@ EXTENSIONDIR= # Check whether --enable-versioned-extension-dir was given. -if test "${enable_versioned_extension_dir+set}" = set; then : +if test ${enable_versioned_extension_dir+y} +then : enableval=$enable_versioned_extension_dir; if test "$enableval" = yes then MAJOR=`awk '/define gawk_api_major_version/ { print $3 }' < $srcdir/gawkapi.h` @@ -3280,26 +3681,29 @@ pkgextensiondir='${pkglibdir}'${EXTENSIONDIR} -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -3318,21 +3722,22 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -3355,24 +3760,25 @@ case x$ax_disable_triplet_transform/`uname` in #( x/MSYS*) : + if test x$ac_cv_build != x; then ax_tt_var=`echo $ac_cv_build | sed 's|-msys$|-cygwin|'` if test x$ax_tt_var = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&5 -$as_echo "$as_me: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&5 +printf "%s\n" "$as_me: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&6;} elif test x$ax_tt_var != x`$SHELL "$ac_aux_dir/config.sub" $ax_tt_var`; then - { $as_echo "$as_me:${as_lineno-$LINENO}: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&5 -$as_echo "$as_me: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&5 +printf "%s\n" "$as_me: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&6;} elif test x$ax_tt_var != x$ac_cv_build; then if test x$ax_tt_header_is_printed != xyes; then ax_tt_header_is_printed=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 -$as_echo "$as_me: Triplet conversion on MSYS platform:" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 +printf "%s\n" "$as_me: Triplet conversion on MSYS platform:" >&6;} fi gawk_cv_build_orig=$ac_cv_build ac_cv_build=$ax_tt_var - { $as_echo "$as_me:${as_lineno-$LINENO}: build: replacing $gawk_cv_build_orig -> $ac_cv_build" >&5 -$as_echo "$as_me: build: replacing $gawk_cv_build_orig -> $ac_cv_build" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: build: replacing $gawk_cv_build_orig -> $ac_cv_build" >&5 +printf "%s\n" "$as_me: build: replacing $gawk_cv_build_orig -> $ac_cv_build" >&6;} ax_tt_var= case $ac_cv_build in *-*-*) ;; @@ -3396,24 +3802,25 @@ fi + if test x$ac_cv_host != x; then ax_tt_var=`echo $ac_cv_host | sed 's|-msys$|-cygwin|'` if test x$ax_tt_var = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&5 -$as_echo "$as_me: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&5 +printf "%s\n" "$as_me: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&6;} elif test x$ax_tt_var != x`$SHELL "$ac_aux_dir/config.sub" $ax_tt_var`; then - { $as_echo "$as_me:${as_lineno-$LINENO}: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&5 -$as_echo "$as_me: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&5 +printf "%s\n" "$as_me: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&6;} elif test x$ax_tt_var != x$ac_cv_host; then if test x$ax_tt_header_is_printed != xyes; then ax_tt_header_is_printed=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 -$as_echo "$as_me: Triplet conversion on MSYS platform:" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 +printf "%s\n" "$as_me: Triplet conversion on MSYS platform:" >&6;} fi gawk_cv_host_orig=$ac_cv_host ac_cv_host=$ax_tt_var - { $as_echo "$as_me:${as_lineno-$LINENO}: host: replacing $gawk_cv_host_orig -> $ac_cv_host" >&5 -$as_echo "$as_me: host: replacing $gawk_cv_host_orig -> $ac_cv_host" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: host: replacing $gawk_cv_host_orig -> $ac_cv_host" >&5 +printf "%s\n" "$as_me: host: replacing $gawk_cv_host_orig -> $ac_cv_host" >&6;} ax_tt_var= case $ac_cv_host in *-*-*) ;; @@ -3443,12 +3850,21 @@ esac + + + + + + + + + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out @@ -3484,11 +3900,12 @@ fi done rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; fi @@ -3514,11 +3931,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3526,11 +3944,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3541,11 +3963,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3554,11 +3976,12 @@ ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3566,11 +3989,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3581,11 +4008,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -3593,8 +4020,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3607,11 +4034,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3619,11 +4047,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3634,11 +4066,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3647,11 +4079,12 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3660,15 +4093,19 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3684,18 +4121,18 @@ # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3706,11 +4143,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3718,11 +4156,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3733,11 +4175,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3750,11 +4192,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3762,11 +4205,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3777,11 +4224,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3793,8 +4240,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3802,25 +4249,129 @@ fi fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3830,7 +4381,7 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3838,7 +4389,7 @@ /* end confdefs.h. */ int -main () +main (void) { ; @@ -3850,9 +4401,9 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3873,11 +4424,12 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3894,7 +4446,7 @@ # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3910,44 +4462,46 @@ done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3961,15 +4515,15 @@ * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3978,7 +4532,7 @@ /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -3990,8 +4544,8 @@ ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3999,10 +4553,10 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -4010,39 +4564,40 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4056,11 +4611,12 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -4069,31 +4625,32 @@ break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -4103,29 +4660,33 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -4134,57 +4695,60 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -4199,94 +4763,144 @@ CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -4295,21 +4909,23 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4337,8 +4953,8 @@ rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. @@ -4356,11 +4972,12 @@ depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4467,8 +5084,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -4483,149 +5100,183 @@ -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes +ac_header= ac_cache= +for ac_item in $ac_header_c_list do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h -else - # Broken: fails on valid input. -continue fi -rm -f conftest.err conftest.i conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - done - ac_cv_prog_CPP=$CPP +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext + #include + mbstate_t x; +int +main (void) +{ - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes fi -rm -f conftest.err conftest.i conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else $as_nop + MINIX= fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h +fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST @@ -4633,10 +5284,15 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP @@ -4645,13 +5301,13 @@ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -4679,16 +5335,17 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else @@ -4699,10 +5356,15 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP @@ -4711,13 +5373,13 @@ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -4746,539 +5408,1241 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 +for ac_prog in 'bison -y' byacc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_YACC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +printf "%s\n" "$YACC" >&6; } else - ac_cv_header_stdc=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - ac_cv_header_stdc=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } fi -rm -f conftest* +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - ac_cv_header_stdc=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f conftest* + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" fi -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - ac_cv_header_stdc=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + + + fi fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -$as_echo "#define STDC_HEADERS 1" >>confdefs.h fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + test -n "$CC" && break + done fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + test -n "$ac_ct_CC" && break done + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - MINIX= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "$MINIX" = yes; then +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h +fi -$as_echo "#define _MINIX 1" >>confdefs.h +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -# define __EXTENSIONS__ 1 - $ac_includes_default int -main () +main (void) { +#ifndef __GNUC__ + choke me +#endif ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h +int +main (void) +{ - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h +int +main (void) +{ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac +int +main (void) +{ - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" fi else - ac_cv_path_EGREP=$EGREP + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi fi - - fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - -for ac_prog in 'bison -y' byacc +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_YACC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_YACC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break done - done -IFS=$as_save_IFS +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 fi -YACC=$ac_cv_prog_YACC -if test -n "$YACC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 -$as_echo "$YACC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - test -n "$YACC" && break -done -test -n "$YACC" || YACC="yacc" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } + am_cv_CC_dependencies_compiler_type=none fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : -struct incomplete_array -{ - int datasize; - double data[]; -}; +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext -struct named_init { - int number; - const wchar_t *name; - double average; -}; + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext -typedef const char *ccp; +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} + done + ac_cv_prog_CPP=$CPP -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : - const char *str; - int number; - float fnumber; +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext -int -main () -{ +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : - // Check bool. - _Bool success = false; +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for variable-length arrays" >&5 +printf %s "checking for variable-length arrays... " >&6; } +if test ${ac_cv_c_vararrays+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC_NO_VLA__ + defined + #endif - ni.number = 58; +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "defined" >/dev/null 2>&1 +then : + ac_cv_c_vararrays='no: __STDC_NO_VLA__ is defined' +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Test for VLA support. This test is partly inspired + from examples in the C standard. Use at least two VLA + functions to detect the GCC 3.4.3 bug described in: + https://lists.gnu.org/archive/html/bug-gnulib/2014-08/msg00014.html + */ + #ifdef __STDC_NO_VLA__ + syntax error; + #else + extern int n; + int B[100]; + int fvla (int m, int C[m][m]); - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; + int + simple (int count, int all[static count]) + { + return all[count - 1]; + } - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); + int + fvla (int m, int C[m][m]) + { + typedef int VLA[m][m]; + VLA x; + int D[m]; + static int (*q)[m] = &B; + int (*s)[n] = q; + return C && &x[0][0] == &D[0] && &D[0] == s[0]; + } + #endif + +int +main (void) +{ ; return 0; } _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c99=$ac_arg +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_vararrays=yes +else $as_nop + ac_cv_c_vararrays=no fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : +rm -rf conftest* fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_vararrays" >&5 +printf "%s\n" "$ac_cv_c_vararrays" >&6; } + if test "$ac_cv_c_vararrays" = yes; then + +printf "%s\n" "#define HAVE_C_VARARRAYS 1" >>confdefs.h + + elif test "$ac_cv_c_vararrays" = no; then + +printf "%s\n" "#define __STDC_NO_VLA__ 1" >>confdefs.h + fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -5290,10 +6654,11 @@ /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -5303,7 +6668,8 @@ done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : break fi @@ -5315,29 +6681,24 @@ else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -5349,10 +6710,11 @@ /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -5362,11 +6724,12 @@ done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi @@ -5380,11 +6743,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -5392,11 +6756,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5407,11 +6775,11 @@ fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5420,11 +6788,12 @@ ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -5432,11 +6801,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5447,11 +6820,11 @@ fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -5459,8 +6832,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -5474,13 +6847,14 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -5496,20 +6870,209 @@ rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi +# support/ builds libsupport.a, allow for cross version of ar + + if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +printf %s "checking the archiver ($AR) interface... " >&6; } +if test ${am_cv_ar_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +printf "%s\n" "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac + + +AR_FLAGS = cru # set default + + # This is mainly for my use during testing and development. # Yes, it's a bit of a hack. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for special development options" >&5 -$as_echo_n "checking for special development options... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special development options" >&5 +printf %s "checking for special development options... " >&6; } if test -f $srcdir/.developing then # add other debug flags as appropriate, save GAWKDEBUG for emergencies @@ -5521,11 +7084,11 @@ then CFLAGS="$CFLAGS -Wall -fno-builtin -g3 -ggdb3" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } CFLAGS="$CFLAGS -DNDEBUG" # turn off assertions fi @@ -5535,11 +7098,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for z/OS USS compilation" >&5 -$as_echo_n "checking for z/OS USS compilation... " >&6; } -if ${ac_cv_zos_uss+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for z/OS USS compilation" >&5 +printf %s "checking for z/OS USS compilation... " >&6; } +if test ${ac_cv_zos_uss+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "OS/390" = "`uname`" then @@ -5549,8 +7113,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_zos_uss}" >&5 -$as_echo "${ac_cv_zos_uss}" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_zos_uss}" >&5 +printf "%s\n" "${ac_cv_zos_uss}" >&6; } if test "x$ac_cv_zos_uss" = "xyes" then ac_zos_uss_cc_id=unknown @@ -5567,10 +7131,10 @@ c89) if test -n "$_C89_OPTIONS" then - { $as_echo "$as_me:${as_lineno-$LINENO}: CC = $CC" >&5 -$as_echo "$as_me: CC = $CC" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: _C89_OPTIONS = $_C89_OPTIONS" >&5 -$as_echo "$as_me: _C89_OPTIONS = $_C89_OPTIONS" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: CC = $CC" >&5 +printf "%s\n" "$as_me: CC = $CC" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: _C89_OPTIONS = $_C89_OPTIONS" >&5 +printf "%s\n" "$as_me: _C89_OPTIONS = $_C89_OPTIONS" >&6;} else as_fn_error $? "c89-setup-required To build GNU Awk using \"c89\", please set @@ -5616,22 +7180,23 @@ \$REAL_CC -qhaltonmsg=CCN3296 -qnosearch "\$@" -qsearch=/usr/include EOF chmod +x zos-cc - { $as_echo "$as_me:${as_lineno-$LINENO}: wrapping $CC with zos-cc to obtain standard behavior" >&5 -$as_echo "$as_me: wrapping $CC with zos-cc to obtain standard behavior" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: wrapping $CC with zos-cc to obtain standard behavior" >&5 +printf "%s\n" "$as_me: wrapping $CC with zos-cc to obtain standard behavior" >&6;} CC="`pwd`/zos-cc" ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized compiler environment" >&5 -$as_echo "$as_me: WARNING: unrecognized compiler environment" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized compiler environment" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized compiler environment" >&2;} ;; esac fi # ac_cv_zos_uss = yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if ${ac_cv_search_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5639,62 +7204,66 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char strerror (); int -main () +main (void) { return strerror (); ; return 0; } _ACEOF -for ac_lib in '' cposix; do +for ac_lib in '' cposix +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_strerror=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_strerror+:} false; then : + if test ${ac_cv_search_strerror+y} +then : break fi done -if ${ac_cv_search_strerror+:} false; then : +if test ${ac_cv_search_strerror+y} +then : -else +else $as_nop ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -$as_echo "$ac_cv_search_strerror" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf "%s\n" "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi # Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : +if test ${enable_largefile+y} +then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC @@ -5708,44 +7277,47 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_largefile_CC=' -n32'; break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5754,22 +7326,23 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 @@ -5778,43 +7351,43 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=64; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF +printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5823,22 +7396,23 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 @@ -5847,45 +7421,42 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=1; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf "%s\n" "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF +printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h ;; esac rm -rf conftest* fi - - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we are using EBCDIC" >&5 -$as_echo_n "checking if we are using EBCDIC... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we are using EBCDIC" >&5 +printf %s "checking if we are using EBCDIC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if 'a' == 0x81 @@ -5893,18 +7464,19 @@ #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gnu_gawk_in_ebcdic" >/dev/null 2>&1; then : + $EGREP "gnu_gawk_in_ebcdic" >/dev/null 2>&1 +then : -$as_echo "#define USE_EBCDIC 1" >>confdefs.h +printf "%s\n" "#define USE_EBCDIC 1" >>confdefs.h use_ebcdic=yes -else +else $as_nop use_ebcdic=no fi -rm -f conftest* +rm -rf conftest* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_ebcdic" >&5 -$as_echo "$use_ebcdic" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $use_ebcdic" >&5 +printf "%s\n" "$use_ebcdic" >&6; } if test "$use_ebcdic" = yes then ZOS_FAIL='; echo Expect $@ to fail on z/OS.' @@ -5918,11 +7490,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -5936,10 +7509,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -5948,13 +7526,13 @@ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5982,28 +7560,29 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : +if test ${enable_nls+y} +then : enableval=$enable_nls; USE_NLS=$enableval -else +else $as_nop USE_NLS=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } - GETTEXT_MACRO_VERSION=0.19 + GETTEXT_MACRO_VERSION=0.20 @@ -6037,11 +7616,12 @@ # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. @@ -6069,20 +7649,21 @@ fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. @@ -6092,11 +7673,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6109,21 +7694,16 @@ fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; - *) MSGFMT_015=$MSGFMT ;; - esac - - case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac @@ -6159,11 +7739,12 @@ # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. @@ -6191,11 +7772,11 @@ fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f messages.po @@ -6236,11 +7817,12 @@ # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. @@ -6267,15 +7849,23 @@ fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - test -n "$localedir" || localedir='${datadir}/locale' + if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' + else + if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' + else + MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' + fi + fi test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= @@ -6303,9 +7893,10 @@ # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi @@ -6322,88 +7913,151 @@ } fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` - while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac +if test -n "$LD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 +printf %s "checking for ld... " >&6; } +elif test "$GCC" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 +if test -n "$LD"; then + # Let the user override the test with a path. + : else - if test -z "$LD"; then - acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$acl_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 &6 +else $as_nop + + acl_cv_path_LD= # Final result of this test + ac_prog=ld # Program to search in $PATH + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; esac fi - done - IFS="$acl_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # The compiler produces 64-bit code. Add option '-b64' so that the + # linker groks 64-bit object files. + case "$acl_cv_path_LD " in + *" -b64 "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; + esac + fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + sparc64-*-netbsd*) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # The compiler produces 32-bit code. Add option '-m elf32_sparc' + # so that the linker groks 32-bit object files. + case "$acl_cv_path_LD " in + *" -m elf32_sparc "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; + esac + fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + esac -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 + + LD="$acl_cv_path_LD" +fi +if test -n "$LD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh @@ -6434,8 +8090,8 @@ acl_cv_rpath=done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" @@ -6446,76 +8102,435 @@ acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : +if test ${enable_rpath+y} +then : enableval=$enable_rpath; : -else +else $as_nop enable_rpath=yes fi - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 +printf %s "checking 32-bit host C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi_32bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$gl_cv_host_cpu_c_abi"; then + case "$gl_cv_host_cpu_c_abi" in + i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) + gl_cv_host_cpu_c_abi_32bit=yes ;; + x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) + gl_cv_host_cpu_c_abi_32bit=no ;; + *) + gl_cv_host_cpu_c_abi_32bit=unknown ;; + esac + else + case "$host_cpu" in + + # CPUs that only support a 32-bit ABI. + arc \ + | bfin \ + | cris* \ + | csky \ + | epiphany \ + | ft32 \ + | h8300 \ + | m68k \ + | microblaze | microblazeel \ + | nds32 | nds32le | nds32be \ + | nios2 | nios2eb | nios2el \ + | or1k* \ + | or32 \ + | sh | sh1234 | sh1234elb \ + | tic6x \ + | xtensa* ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + # CPUs that only support a 64-bit ABI. + alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ + | mmix ) + gl_cv_host_cpu_c_abi_32bit=no + ;; + + i[34567]86 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) \ + && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=yes +else $as_nop + gl_cv_host_cpu_c_abi_32bit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + riscv32 | riscv64 ) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi_32bit=unknown + ;; + esac + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 +printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } + + HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5 +printf %s "checking for ELF binary format... " >&6; } +if test ${gl_cv_elf+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -#ifdef _LP64 -sixtyfour bits -#endif +#ifdef __ELF__ + Extensible Linking Format + #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : - gl_cv_solaris_64bit=yes -else - gl_cv_solaris_64bit=no + $EGREP "Extensible Linking Format" >/dev/null 2>&1 +then : + gl_cv_elf=yes +else $as_nop + gl_cv_elf=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 +printf "%s\n" "$gl_cv_elf" >&6; } + if test $gl_cv_elf; then + # Extract the ELF class of a file (5th byte) in decimal. + # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header + if od -A x < /dev/null >/dev/null 2>/dev/null; then + # Use POSIX od. + func_elfclass () + { + od -A n -t d1 -j 4 -N 1 + } + else + # Use BSD hexdump. + func_elfclass () + { + dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' + echo + } + fi + case $HOST_CPU_C_ABI_32BIT in + yes) + # 32-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 + } + ;; + no) + # 64-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 + } + ;; + *) + # Unknown. + acl_is_expected_elfclass () + { + : + } + ;; + esac + else + acl_is_expected_elfclass () + { + : + } + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 +printf %s "checking for the common suffixes of directories in the library search path... " >&6; } +if test ${acl_cv_libdirstems+y} +then : + printf %s "(cached) " >&6 +else $as_nop + acl_libdirstem=lib + acl_libdirstem2= + acl_libdirstem3= + case "$host_os" in + solaris*) + if test $HOST_CPU_C_ABI_32BIT = no; then + acl_libdirstem2=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem3=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test $HOST_CPU_C_ABI_32BIT != no; then + # 32-bit or unknown ABI. + if test -d /usr/lib32; then + acl_libdirstem2=lib32 + fi + fi + if test $HOST_CPU_C_ABI_32BIT != yes; then + # 64-bit or unknown ABI. + if test -d /usr/lib64; then + acl_libdirstem3=lib64 + fi + fi + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; + */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib32 ) acl_libdirstem2=lib32 ;; + */lib64 ) acl_libdirstem3=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + if test $HOST_CPU_C_ABI_32BIT = yes; then + # 32-bit ABI. + acl_libdirstem3= + fi + if test $HOST_CPU_C_ABI_32BIT = no; then + # 64-bit ABI. + acl_libdirstem2= + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 +printf "%s\n" "$acl_cv_libdirstems" >&6; } + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` + acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` @@ -6536,13 +8551,16 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : +if test ${with_libiconv_prefix+y} +then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -6556,6 +8574,8 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" @@ -6563,15 +8583,19 @@ else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" fi fi fi + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi LIBICONV= LTLIBICONV= INCICONV= @@ -6617,45 +8641,51 @@ shrext= fi if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" - found_so="$dir/$f" - break + found_a="$dir/$libname.$acl_libext" fi - done + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi fi fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi + done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do @@ -6672,7 +8702,7 @@ -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else @@ -6682,14 +8712,14 @@ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do - if test -f "$dir/$f"; then + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break @@ -6699,7 +8729,7 @@ fi fi if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi @@ -6721,7 +8751,8 @@ if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= @@ -6800,6 +8831,13 @@ fi additional_includedir="$basedir/include" ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then @@ -6845,12 +8883,14 @@ for dep in $dependency_libs; do case "$dep" in -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -6869,14 +8909,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir" fi fi haveit= @@ -6890,14 +8930,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir" fi fi fi @@ -7004,78 +9044,81 @@ - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFPreferencesCopyAppValue=yes -else +else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 +printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } +if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { -CFLocaleCopyCurrent(); +CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyPreferredLanguages=yes +else $as_nop + gt_cv_func_CFLocaleCopyPreferredLanguages=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h fi INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi @@ -7116,11 +9159,12 @@ gt_expression_test_code= fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if eval \${$gt_func_gnugettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7135,7 +9179,7 @@ $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -7145,17 +9189,18 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libc=yes" -else +else $as_nop eval "$gt_func_gnugettext_libc=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then @@ -7188,11 +9233,12 @@ done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no @@ -7203,7 +9249,7 @@ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -7212,10 +9258,11 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" @@ -7227,7 +9274,7 @@ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -7236,24 +9283,26 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then @@ -7261,12 +9310,13 @@ fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7278,7 +9328,7 @@ #endif int -main () +main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful @@ -7363,22 +9413,35 @@ #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - result |= 16; + { + /* Try standardized names. */ + iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); + /* Try IRIX, OSF/1 names. */ + iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); + /* Try AIX names. */ + iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); + /* Try HP-UX names. */ + iconv_t cd4 = iconv_open ("utf8", "eucJP"); + if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) + && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) + result |= 16; + if (cd1 != (iconv_t)(-1)) + iconv_close (cd1); + if (cd2 != (iconv_t)(-1)) + iconv_close (cd2); + if (cd3 != (iconv_t)(-1)) + iconv_close (cd3); + if (cd4 != (iconv_t)(-1)) + iconv_close (cd4); + } return result; ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -7390,8 +9453,8 @@ LIBS="$am_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; @@ -7401,14 +9464,14 @@ fi if test "$am_func_iconv" = yes; then -$as_echo "#define HAVE_ICONV 1" >>confdefs.h +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= @@ -7424,7 +9487,6 @@ - use_additional=yes acl_save_prefix="$prefix" @@ -7434,13 +9496,16 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then : +if test ${with_libintl_prefix+y} +then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -7454,6 +9519,8 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" @@ -7461,15 +9528,19 @@ else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" fi fi fi + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi LIBINTL= LTLIBINTL= INCINTL= @@ -7515,45 +9586,51 @@ shrext= fi if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" - found_so="$dir/$f" - break + found_a="$dir/$libname.$acl_libext" fi - done + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi fi fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi + done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do @@ -7570,7 +9647,7 @@ -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else @@ -7580,14 +9657,14 @@ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do - if test -f "$dir/$f"; then + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break @@ -7597,7 +9674,7 @@ fi fi if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi @@ -7619,7 +9696,8 @@ if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= @@ -7698,6 +9776,13 @@ fi additional_includedir="$basedir/include" ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then @@ -7743,12 +9828,14 @@ for dep in $dependency_libs; do case "$dep" in -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -7767,14 +9854,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir" fi fi haveit= @@ -7788,14 +9875,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir" fi fi fi @@ -7878,12 +9965,12 @@ - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if eval \${$gt_func_gnugettext_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" @@ -7906,7 +9993,7 @@ $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -7916,12 +10003,13 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libintl=yes" -else +else $as_nop eval "$gt_func_gnugettext_libintl=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" @@ -7943,7 +10031,7 @@ $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -7953,21 +10041,22 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ @@ -7994,20 +10083,20 @@ if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then -$as_echo "#define ENABLE_NLS 1" >>confdefs.h +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" @@ -8017,18 +10106,18 @@ else gt_source="included intl directory" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= @@ -8055,10 +10144,10 @@ fi -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h -$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi @@ -8076,299 +10165,341 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if ${am_cv_langinfo_codeset+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +printf %s "checking for nl_langinfo and CODESET... " >&6; } +if test ${am_cv_langinfo_codeset+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { char* cs = nl_langinfo(CODESET); return !cs; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_langinfo_codeset=yes -else +else $as_nop am_cv_langinfo_codeset=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 -$as_echo "$am_cv_langinfo_codeset" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +printf "%s\n" "$am_cv_langinfo_codeset" >&6; } if test $am_cv_langinfo_codeset = yes; then -$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h +printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 -$as_echo_n "checking for LC_MESSAGES... " >&6; } -if ${gt_cv_val_LC_MESSAGES+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +printf %s "checking for LC_MESSAGES... " >&6; } +if test ${gt_cv_val_LC_MESSAGES+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return LC_MESSAGES ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_val_LC_MESSAGES=yes -else +else $as_nop gt_cv_val_LC_MESSAGES=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 -$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 +printf "%s\n" "$gt_cv_val_LC_MESSAGES" >&6; } if test $gt_cv_val_LC_MESSAGES = yes; then -$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h +printf "%s\n" "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi -for ac_header in arpa/inet.h fcntl.h locale.h libintl.h mcheck.h \ - netdb.h netinet/in.h stddef.h string.h \ - sys/ioctl.h sys/param.h sys/select.h sys/socket.h sys/time.h unistd.h \ - termios.h stropts.h wchar.h wctype.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" +if test "x$ac_cv_header_arpa_inet_h" = xyes +then : + printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include +fi +ac_fn_c_check_header_compile "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" +if test "x$ac_cv_header_libintl_h" = xyes +then : + printf "%s\n" "#define HAVE_LIBINTL_H 1" >>confdefs.h -int -main () -{ +fi +ac_fn_c_check_header_compile "$LINENO" "mcheck.h" "ac_cv_header_mcheck_h" "$ac_includes_default" +if test "x$ac_cv_header_mcheck_h" = xyes +then : + printf "%s\n" "#define HAVE_MCHECK_H 1" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" +if test "x$ac_cv_header_netdb_h" = xyes +then : + printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include +fi +ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_in_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : +fi +ac_fn_c_check_header_compile "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default" +if test "x$ac_cv_header_stddef_h" = xyes +then : + printf "%s\n" "#define HAVE_STDDEF_H 1" >>confdefs.h -else - ac_cv_header_stdc=no fi -rm -f conftest* +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ioctl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h -else - ac_cv_header_stdc=no fi -rm -f conftest* +ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_socket_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : +fi +ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" +if test "x$ac_cv_header_termios_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h -else - ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$ac_includes_default" +if test "x$ac_cv_header_stropts_h" = xyes +then : + printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h + fi +ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes +then : + printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" +if test "x$ac_cv_header_wctype_h" = xyes +then : + printf "%s\n" "#define HAVE_WCTYPE_H 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then -$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } -if ${ac_cv_header_stdbool_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +printf %s "checking for stdbool.h that conforms to C99... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include - #include - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #if false - "error: false is not 0" + #ifndef __bool_true_false_are_defined + #error "__bool_true_false_are_defined is not defined" #endif - #ifndef true - "error: true is not defined" + char a[__bool_true_false_are_defined == 1 ? 1 : -1]; + + /* Regardless of whether this is C++ or "_Bool" is a + valid type name, "true" and "false" should be usable + in #if expressions and integer constant expressions, + and "bool" should be a valid type name. */ + + #if !true + #error "'true' is not true" #endif #if true != 1 - "error: true is not 1" + #error "'true' is not equal to 1" #endif - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; - struct s { _Bool s: 1; _Bool t; } s; + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(_Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - _Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See - http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ - _Bool q = true; - _Bool *pq = &q; + bool p = true; + bool *pp = &p; + + /* C 1999 specifies that bool, true, and false are to be + macros, but C++ 2011 and later overrule this. */ + #if __cplusplus < 201103 + #ifndef bool + #error "bool is not defined" + #endif + #ifndef false + #error "false is not defined" + #endif + #ifndef true + #error "true is not defined" + #endif + #endif + + /* If _Bool is available, repeat with it all the tests + above that used bool. */ + #ifdef HAVE__BOOL + struct sB { _Bool s: 1; _Bool t; } t; + + char q[(_Bool) 0.5 == true ? 1 : -1]; + char r[(_Bool) 0.0 == false ? 1 : -1]; + char u[sizeof (_Bool) > 0 ? 1 : -1]; + char v[sizeof t.t > 0 ? 1 : -1]; + + _Bool w[h]; + char x[sizeof m == h * sizeof m[0] ? 1 : -1]; + char y[-1 - (_Bool) 0 < 0 ? 1 : -1]; + _Bool z = true; + _Bool *pz = &p; + #endif int -main () +main (void) { - bool e = &s; - *pq |= q; - *pq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq); + bool ps = &s; + *pp |= p; + *pp |= ! p; + + #ifdef HAVE__BOOL + _Bool pt = &t; + *pz |= z; + *pz |= ! z; + #endif + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps + #ifdef HAVE__BOOL + + !q + !r + !u + !v + !w + !x + !y + !z + !pt + #endif + ); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_header_stdbool_h=yes -else +else $as_nop ac_cv_header_stdbool_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 -$as_echo "$ac_cv_header_stdbool_h" >&6; } - ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" -if test "x$ac_cv_type__Bool" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE__BOOL 1 -_ACEOF - - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi - +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf "%s\n" "$ac_cv_header_stdbool_h" >&6; } if test $ac_cv_header_stdbool_h = yes; then -$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 -$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } -if ${ac_cv_header_sys_wait_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 +printf %s "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } +if test ${ac_cv_header_sys_wait_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8381,7 +10512,7 @@ #endif int -main () +main (void) { int s; wait (&s); @@ -8390,84 +10521,43 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_header_sys_wait_h=yes -else +else $as_nop ac_cv_header_sys_wait_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 -$as_echo "$ac_cv_header_sys_wait_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 +printf "%s\n" "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then -$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi if test "$ac_cv_header_string_h" = yes then - for ac_header in memory.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" -if test "x$ac_cv_header_memory_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MEMORY_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h fi -done - else - for ac_header in strings.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" -if test "x$ac_cv_header_strings_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRINGS_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +if test "x$ac_cv_header_strings_h" = xyes +then : + printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h fi -done - fi if test "$build_alias" != "$host_alias"; then @@ -8479,66 +10569,95 @@ fi -ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -if test "x$ac_cv_type_pid_t" = xyes; then : -else + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default +" +if test "x$ac_cv_type_pid_t" = xyes +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} -cat >>confdefs.h <<_ACEOF -#define pid_t int _ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else $as_nop + ac_pid_type='__int64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h + fi + ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : + $EGREP "uid_t" >/dev/null 2>&1 +then : ac_cv_type_uid_t=yes -else +else $as_nop ac_cv_type_uid_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then -$as_echo "#define uid_t int" >>confdefs.h +printf "%s\n" "#define uid_t int" >>confdefs.h -$as_echo "#define gid_t int" >>confdefs.h +printf "%s\n" "#define gid_t int" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 -$as_echo_n "checking type of array argument to getgroups... " >&6; } -if ${ac_cv_type_getgroups+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 +printf %s "checking type of array argument to getgroups... " >&6; } +if test ${ac_cv_type_getgroups+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_type_getgroups=cross -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Mike Rendell for this test. */ @@ -8548,7 +10667,7 @@ #define MAX(x, y) ((x) > (y) ? (x) : (y)) int -main () +main (void) { gid_t gidset[NGID]; int i, n; @@ -8565,9 +10684,10 @@ return n > 0 && gidset[n] != val.gval; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_type_getgroups=gid_t -else +else $as_nop ac_cv_type_getgroups=int fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -8581,29 +10701,29 @@ _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then : + $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1 +then : ac_cv_type_getgroups=gid_t -else +else $as_nop ac_cv_type_getgroups=int fi -rm -f conftest* +rm -rf conftest* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 -$as_echo "$ac_cv_type_getgroups" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 +printf "%s\n" "$ac_cv_type_getgroups" >&6; } -cat >>confdefs.h <<_ACEOF -#define GETGROUPS_T $ac_cv_type_getgroups -_ACEOF +printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 -$as_echo_n "checking for unsigned long long int... " >&6; } -if ${ac_cv_type_unsigned_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ unsigned long long int ull = 18446744073709551615ULL; @@ -8611,7 +10731,7 @@ ? 1 : -1)]; int i = 63; int -main () +main (void) { unsigned long long int ullmax = 18446744073709551615ull; return (ull << 63 | ull >> 63 | ull << i | ull >> i @@ -8620,36 +10740,39 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_type_unsigned_long_long_int=yes -else +else $as_nop ac_cv_type_unsigned_long_long_int=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 -$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } if test $ac_cv_type_unsigned_long_long_int = yes; then -$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 -$as_echo_n "checking for long long int... " >&6; } -if ${ac_cv_type_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_type_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int if test $ac_cv_type_long_long_int = yes; then - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : : -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8659,7 +10782,7 @@ # define LLONG_MAX (HALF - 1 + HALF) #endif int -main () +main (void) { long long int n = 1; int i; @@ -8676,9 +10799,10 @@ return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : -else +else $as_nop ac_cv_type_long_long_int=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -8688,20 +10812,21 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 -$as_echo "$ac_cv_type_long_long_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_long_long_int" >&6; } if test $ac_cv_type_long_long_int = yes; then -$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h +printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 -$as_echo_n "checking for unsigned long long int... " >&6; } -if ${ac_cv_type_unsigned_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ unsigned long long int ull = 18446744073709551615ULL; @@ -8709,7 +10834,7 @@ ? 1 : -1)]; int i = 63; int -main () +main (void) { unsigned long long int ullmax = 18446744073709551615ull; return (ull << 63 | ull >> 63 | ull << i | ull >> i @@ -8718,37 +10843,37 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_type_unsigned_long_long_int=yes -else +else $as_nop ac_cv_type_unsigned_long_long_int=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 -$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } if test $ac_cv_type_unsigned_long_long_int = yes; then -$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" -if test "x$ac_cv_type_intmax_t" = xyes; then : +if test "x$ac_cv_type_intmax_t" = xyes +then : -$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h -else +else $as_nop test $ac_cv_type_long_long_int = yes \ && ac_type='long long int' \ || ac_type='long int' -cat >>confdefs.h <<_ACEOF -#define intmax_t $ac_type -_ACEOF +printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h fi @@ -8756,30 +10881,28 @@ ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" -if test "x$ac_cv_type_uintmax_t" = xyes; then : +if test "x$ac_cv_type_uintmax_t" = xyes +then : -$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h -else +else $as_nop test $ac_cv_type_unsigned_long_long_int = yes \ && ac_type='unsigned long long int' \ || ac_type='unsigned long int' -cat >>confdefs.h <<_ACEOF -#define uintmax_t $ac_type -_ACEOF +printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes; then : +if test "x$ac_cv_type_ssize_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ssize_t int -_ACEOF +printf "%s\n" "#define ssize_t int" >>confdefs.h fi @@ -8787,17 +10910,19 @@ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5 -$as_echo_n "checking size of unsigned int... " >&6; } -if ${ac_cv_sizeof_unsigned_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5 +printf %s "checking size of unsigned int... " >&6; } +if test ${ac_cv_sizeof_unsigned_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default" +then : -else +else $as_nop if test "$ac_cv_type_unsigned_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (unsigned int) See \`config.log' for more details" "$LINENO" 5; } else @@ -8806,31 +10931,31 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5 -$as_echo "$ac_cv_sizeof_unsigned_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5 +printf "%s\n" "$ac_cv_sizeof_unsigned_int" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int -_ACEOF +printf "%s\n" "#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5 -$as_echo_n "checking size of unsigned long... " >&6; } -if ${ac_cv_sizeof_unsigned_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default"; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5 +printf %s "checking size of unsigned long... " >&6; } +if test ${ac_cv_sizeof_unsigned_long+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default" +then : -else +else $as_nop if test "$ac_cv_type_unsigned_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (unsigned long) See \`config.log' for more details" "$LINENO" 5; } else @@ -8839,21 +10964,19 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5 -$as_echo "$ac_cv_sizeof_unsigned_long" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5 +printf "%s\n" "$ac_cv_sizeof_unsigned_long" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long -_ACEOF +printf "%s\n" "#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long" >>confdefs.h cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { time_t foo; @@ -8863,17 +10986,18 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -$as_echo "#define TIME_T_IN_SYS_TYPES_H 1" >>confdefs.h +printf "%s\n" "#define TIME_T_IN_SYS_TYPES_H 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { wctype_t foo; @@ -8883,17 +11007,18 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -$as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WCTYPE_T 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { wint_t foo; @@ -8903,18 +11028,19 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -$as_echo "#define HAVE_WINT_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int -main () +main (void) { struct sockaddr_storage foo; @@ -8923,12 +11049,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -$as_echo "#define HAVE_SOCKADDR_STORAGE 1" >>confdefs.h +printf "%s\n" "#define HAVE_SOCKADDR_STORAGE 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -8938,15 +11065,17 @@ ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include #include " -if test "x$ac_cv_type_socklen_t" = xyes; then : +if test "x$ac_cv_type_socklen_t" = xyes +then : -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t equivalent" >&5 -$as_echo_n "checking for socklen_t equivalent... " >&6; } - if ${rsync_cv_socklen_t_equiv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socklen_t equivalent" >&5 +printf %s "checking for socklen_t equivalent... " >&6; } + if test ${rsync_cv_socklen_t_equiv+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Systems have either "struct sockaddr *" or # "void *" as the second argument to getpeername @@ -8964,7 +11093,7 @@ int getpeername (int, $arg2 *, $t *); int -main () +main (void) { $t len; @@ -8974,13 +11103,14 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : rsync_cv_socklen_t_equiv="$t" break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done done @@ -8991,12 +11121,10 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rsync_cv_socklen_t_equiv" >&5 -$as_echo "$rsync_cv_socklen_t_equiv" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $rsync_cv_socklen_t_equiv" >&5 +printf "%s\n" "$rsync_cv_socklen_t_equiv" >&6; } -cat >>confdefs.h <<_ACEOF -#define socklen_t $rsync_cv_socklen_t_equiv -_ACEOF +printf "%s\n" "#define socklen_t $rsync_cv_socklen_t_equiv" >>confdefs.h fi @@ -9005,66 +11133,37 @@ - - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - for ac_func in $ac_func_list -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi done - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 -$as_echo_n "checking for working mktime... " >&6; } -if ${ac_cv_func_working_mktime+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 +printf %s "checking for working mktime... " >&6; } +if test ${ac_cv_func_working_mktime+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_func_working_mktime=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ -#ifdef TIME_WITH_SYS_TIME +#include +#ifdef HAVE_SYS_TIME_H # include -# include -#else -# ifdef HAVE_SYS_TIME_H -# include -# else -# include -# endif #endif #include @@ -9203,7 +11302,7 @@ } int -main () +main (void) { time_t t, delta; int i, j; @@ -9247,9 +11346,10 @@ return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_working_mktime=yes -else +else $as_nop ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -9257,8 +11357,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 -$as_echo "$ac_cv_func_working_mktime" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 +printf "%s\n" "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIBOBJS " in *" mktime.$ac_objext "* ) ;; @@ -9270,22 +11370,24 @@ case "$ac_cv_func_working_mktime" in yes) -$as_echo "#define HAVE_MKTIME 1" >>confdefs.h +printf "%s\n" "#define HAVE_MKTIME 1" >>confdefs.h ;; esac ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" -if test "x$ac_cv_func_getaddrinfo" = xyes; then : +if test "x$ac_cv_func_getaddrinfo" = xyes +then : -$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo in -lsocket" >&5 -$as_echo_n "checking for getaddrinfo in -lsocket... " >&6; } -if ${ac_cv_lib_socket_getaddrinfo+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo in -lsocket" >&5 +printf %s "checking for getaddrinfo in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_getaddrinfo+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9294,43 +11396,43 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char getaddrinfo (); int -main () +main (void) { return getaddrinfo (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_socket_getaddrinfo=yes -else +else $as_nop ac_cv_lib_socket_getaddrinfo=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getaddrinfo" >&5 -$as_echo "$ac_cv_lib_socket_getaddrinfo" >&6; } -if test "x$ac_cv_lib_socket_getaddrinfo" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getaddrinfo" >&5 +printf "%s\n" "$ac_cv_lib_socket_getaddrinfo" >&6; } +if test "x$ac_cv_lib_socket_getaddrinfo" = xyes +then : -$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fmod" >&5 -$as_echo_n "checking for library containing fmod... " >&6; } -if ${ac_cv_search_fmod+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing fmod" >&5 +printf %s "checking for library containing fmod... " >&6; } +if test ${ac_cv_search_fmod+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9338,55 +11440,58 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char fmod (); int -main () +main (void) { return fmod (); ; return 0; } _ACEOF -for ac_lib in '' m; do +for ac_lib in '' m +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_fmod=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_fmod+:} false; then : + if test ${ac_cv_search_fmod+y} +then : break fi done -if ${ac_cv_search_fmod+:} false; then : +if test ${ac_cv_search_fmod+y} +then : -else +else $as_nop ac_cv_search_fmod=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmod" >&5 -$as_echo "$ac_cv_search_fmod" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmod" >&5 +printf "%s\n" "$ac_cv_search_fmod" >&6; } ac_res=$ac_cv_search_fmod -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing isinf" >&5 -$as_echo_n "checking for library containing isinf... " >&6; } -if ${ac_cv_search_isinf+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing isinf" >&5 +printf %s "checking for library containing isinf... " >&6; } +if test ${ac_cv_search_isinf+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9394,55 +11499,58 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char isinf (); int -main () +main (void) { return isinf (); ; return 0; } _ACEOF -for ac_lib in '' m; do +for ac_lib in '' m +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_isinf=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_isinf+:} false; then : + if test ${ac_cv_search_isinf+y} +then : break fi done -if ${ac_cv_search_isinf+:} false; then : +if test ${ac_cv_search_isinf+y} +then : -else +else $as_nop ac_cv_search_isinf=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_isinf" >&5 -$as_echo "$ac_cv_search_isinf" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_isinf" >&5 +printf "%s\n" "$ac_cv_search_isinf" >&6; } ac_res=$ac_cv_search_isinf -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ismod" >&5 -$as_echo_n "checking for library containing ismod... " >&6; } -if ${ac_cv_search_ismod+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ismod" >&5 +printf %s "checking for library containing ismod... " >&6; } +if test ${ac_cv_search_ismod+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9450,46 +11558,48 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char ismod (); int -main () +main (void) { return ismod (); ; return 0; } _ACEOF -for ac_lib in '' m; do +for ac_lib in '' m +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_ismod=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_ismod+:} false; then : + if test ${ac_cv_search_ismod+y} +then : break fi done -if ${ac_cv_search_ismod+:} false; then : +if test ${ac_cv_search_ismod+y} +then : -else +else $as_nop ac_cv_search_ismod=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ismod" >&5 -$as_echo "$ac_cv_search_ismod" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ismod" >&5 +printf "%s\n" "$ac_cv_search_ismod" >&6; } ac_res=$ac_cv_search_ismod -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi @@ -9510,7 +11620,6 @@ - use_additional=yes acl_save_prefix="$prefix" @@ -9520,13 +11629,16 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libsigsegv-prefix was given. -if test "${with_libsigsegv_prefix+set}" = set; then : +if test ${with_libsigsegv_prefix+y} +then : withval=$with_libsigsegv_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -9540,6 +11652,8 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" @@ -9547,15 +11661,19 @@ else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" fi fi fi + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi LIBSIGSEGV= LTLIBSIGSEGV= INCSIGSEGV= @@ -9601,45 +11719,51 @@ shrext= fi if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" - found_so="$dir/$f" - break + found_a="$dir/$libname.$acl_libext" fi - done + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi fi fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi + done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBSIGSEGV; do @@ -9656,7 +11780,7 @@ -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else @@ -9666,14 +11790,14 @@ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do - if test -f "$dir/$f"; then + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break @@ -9683,7 +11807,7 @@ fi fi if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi @@ -9705,7 +11829,8 @@ if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBSIGSEGV="${LIBSIGSEGV}${LIBSIGSEGV:+ }$found_so" else haveit= @@ -9784,6 +11909,13 @@ fi additional_includedir="$basedir/include" ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = 'sigsegv'; then + LIBSIGSEGV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then @@ -9829,12 +11961,14 @@ for dep in $dependency_libs; do case "$dep" in -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -9853,14 +11987,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBSIGSEGV="${LIBSIGSEGV}${LIBSIGSEGV:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LIBSIGSEGV="${LIBSIGSEGV}${LIBSIGSEGV:+ }-L$dependency_libdir" fi fi haveit= @@ -9874,14 +12008,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBSIGSEGV="${LTLIBSIGSEGV}${LTLIBSIGSEGV:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LTLIBSIGSEGV="${LTLIBSIGSEGV}${LTLIBSIGSEGV:+ }-L$dependency_libdir" fi fi fi @@ -9965,7 +12099,6 @@ - ac_save_CPPFLAGS="$CPPFLAGS" for element in $INCSIGSEGV; do @@ -9991,11 +12124,12 @@ done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsigsegv" >&5 -$as_echo_n "checking for libsigsegv... " >&6; } -if ${ac_cv_libsigsegv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsigsegv" >&5 +printf %s "checking for libsigsegv... " >&6; } +if test ${ac_cv_libsigsegv+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_LIBS="$LIBS" case " $LIBSIGSEGV" in @@ -10006,34 +12140,35 @@ /* end confdefs.h. */ #include int -main () +main (void) { sigsegv_deinstall_handler(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_libsigsegv=yes -else +else $as_nop ac_cv_libsigsegv='no, consider installing GNU libsigsegv' fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libsigsegv" >&5 -$as_echo "$ac_cv_libsigsegv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libsigsegv" >&5 +printf "%s\n" "$ac_cv_libsigsegv" >&6; } if test "$ac_cv_libsigsegv" = yes; then HAVE_LIBSIGSEGV=yes -$as_echo "#define HAVE_LIBSIGSEGV 1" >>confdefs.h +printf "%s\n" "#define HAVE_LIBSIGSEGV 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libsigsegv" >&5 -$as_echo_n "checking how to link with libsigsegv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBSIGSEGV" >&5 -$as_echo "$LIBSIGSEGV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libsigsegv" >&5 +printf %s "checking how to link with libsigsegv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBSIGSEGV" >&5 +printf "%s\n" "$LIBSIGSEGV" >&6; } else HAVE_LIBSIGSEGV=no CPPFLAGS="$ac_save_CPPFLAGS" @@ -10054,38 +12189,307 @@ esac # Need the check for mkstemp and tmpfile for missing_d/snprintf.c. -for ac_func in __etoa_l atexit btowc fmod gai_strerror \ - getgrent getgroups grantpt \ - fwrite_unlocked \ - isascii isblank iswctype iswlower iswupper mbrlen \ - memcmp memcpy memcpy_ulong memmove memset \ - memset_ulong mkstemp posix_openpt setenv setlocale setsid sigprocmask \ - snprintf strchr \ - strerror strftime strcasecmp strncasecmp strcoll strtod strtoul \ - system timegm tmpfile towlower towupper tzset usleep waitpid wcrtomb \ - wcscoll wctype -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "__etoa_l" "ac_cv_func___etoa_l" +if test "x$ac_cv_func___etoa_l" = xyes +then : + printf "%s\n" "#define HAVE___ETOA_L 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf "%s\n" "#define HAVE_ATEXIT 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "btowc" "ac_cv_func_btowc" +if test "x$ac_cv_func_btowc" = xyes +then : + printf "%s\n" "#define HAVE_BTOWC 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 -$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } -if ${ac_cv_func_mbrtowc+:} false; then : - $as_echo_n "(cached) " >&6 -else +fi +ac_fn_c_check_func "$LINENO" "fmod" "ac_cv_func_fmod" +if test "x$ac_cv_func_fmod" = xyes +then : + printf "%s\n" "#define HAVE_FMOD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror" +if test "x$ac_cv_func_gai_strerror" = xyes +then : + printf "%s\n" "#define HAVE_GAI_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgrent" "ac_cv_func_getgrent" +if test "x$ac_cv_func_getgrent" = xyes +then : + printf "%s\n" "#define HAVE_GETGRENT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "grantpt" "ac_cv_func_grantpt" +if test "x$ac_cv_func_grantpt" = xyes +then : + printf "%s\n" "#define HAVE_GRANTPT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fwrite_unlocked" "ac_cv_func_fwrite_unlocked" +if test "x$ac_cv_func_fwrite_unlocked" = xyes +then : + printf "%s\n" "#define HAVE_FWRITE_UNLOCKED 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isascii" "ac_cv_func_isascii" +if test "x$ac_cv_func_isascii" = xyes +then : + printf "%s\n" "#define HAVE_ISASCII 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isblank" "ac_cv_func_isblank" +if test "x$ac_cv_func_isblank" = xyes +then : + printf "%s\n" "#define HAVE_ISBLANK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "iswctype" "ac_cv_func_iswctype" +if test "x$ac_cv_func_iswctype" = xyes +then : + printf "%s\n" "#define HAVE_ISWCTYPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "iswlower" "ac_cv_func_iswlower" +if test "x$ac_cv_func_iswlower" = xyes +then : + printf "%s\n" "#define HAVE_ISWLOWER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "iswupper" "ac_cv_func_iswupper" +if test "x$ac_cv_func_iswupper" = xyes +then : + printf "%s\n" "#define HAVE_ISWUPPER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen" +if test "x$ac_cv_func_mbrlen" = xyes +then : + printf "%s\n" "#define HAVE_MBRLEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memcmp" "ac_cv_func_memcmp" +if test "x$ac_cv_func_memcmp" = xyes +then : + printf "%s\n" "#define HAVE_MEMCMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy" +if test "x$ac_cv_func_memcpy" = xyes +then : + printf "%s\n" "#define HAVE_MEMCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memcpy_ulong" "ac_cv_func_memcpy_ulong" +if test "x$ac_cv_func_memcpy_ulong" = xyes +then : + printf "%s\n" "#define HAVE_MEMCPY_ULONG 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" +if test "x$ac_cv_func_memmove" = xyes +then : + printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" +if test "x$ac_cv_func_memset" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memset_ulong" "ac_cv_func_memset_ulong" +if test "x$ac_cv_func_memset_ulong" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET_ULONG 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mtrace" "ac_cv_func_mtrace" +if test "x$ac_cv_func_mtrace" = xyes +then : + printf "%s\n" "#define HAVE_MTRACE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_openpt" "ac_cv_func_posix_openpt" +if test "x$ac_cv_func_posix_openpt" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" +if test "x$ac_cv_func_setenv" = xyes +then : + printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" +if test "x$ac_cv_func_setlocale" = xyes +then : + printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid" +if test "x$ac_cv_func_setsid" = xyes +then : + printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask" +if test "x$ac_cv_func_sigprocmask" = xyes +then : + printf "%s\n" "#define HAVE_SIGPROCMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" +if test "x$ac_cv_func_snprintf" = xyes +then : + printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr" +if test "x$ac_cv_func_strchr" = xyes +then : + printf "%s\n" "#define HAVE_STRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = xyes +then : + printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcoll" "ac_cv_func_strcoll" +if test "x$ac_cv_func_strcoll" = xyes +then : + printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strtod" "ac_cv_func_strtod" +if test "x$ac_cv_func_strtod" = xyes +then : + printf "%s\n" "#define HAVE_STRTOD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul" +if test "x$ac_cv_func_strtoul" = xyes +then : + printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "system" "ac_cv_func_system" +if test "x$ac_cv_func_system" = xyes +then : + printf "%s\n" "#define HAVE_SYSTEM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm" +if test "x$ac_cv_func_timegm" = xyes +then : + printf "%s\n" "#define HAVE_TIMEGM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tmpfile" "ac_cv_func_tmpfile" +if test "x$ac_cv_func_tmpfile" = xyes +then : + printf "%s\n" "#define HAVE_TMPFILE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower" +if test "x$ac_cv_func_towlower" = xyes +then : + printf "%s\n" "#define HAVE_TOWLOWER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "towupper" "ac_cv_func_towupper" +if test "x$ac_cv_func_towupper" = xyes +then : + printf "%s\n" "#define HAVE_TOWUPPER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset" +if test "x$ac_cv_func_tzset" = xyes +then : + printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "usleep" "ac_cv_func_usleep" +if test "x$ac_cv_func_usleep" = xyes +then : + printf "%s\n" "#define HAVE_USLEEP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" +if test "x$ac_cv_func_wcrtomb" = xyes +then : + printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" +if test "x$ac_cv_func_wcscoll" = xyes +then : + printf "%s\n" "#define HAVE_WCSCOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype" +if test "x$ac_cv_func_wctype" = xyes +then : + printf "%s\n" "#define HAVE_WCTYPE 1" >>confdefs.h + +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 +printf %s "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } +if test ${ac_cv_func_mbrtowc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { wchar_t wc; char const s[] = ""; @@ -10096,25 +12500,27 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_func_mbrtowc=yes -else +else $as_nop ac_cv_func_mbrtowc=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 -$as_echo "$ac_cv_func_mbrtowc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 +printf "%s\n" "$ac_cv_func_mbrtowc" >&6; } if test $ac_cv_func_mbrtowc = yes; then -$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h +printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h fi # Check whether --enable-extensions was given. -if test "${enable_extensions+set}" = set; then : +if test ${enable_extensions+y} +then : enableval=$enable_extensions; fi @@ -10126,17 +12532,19 @@ mirbsd* | openedition*) # OS/390 z/OS POSIX layer ;; *) - ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : # Check this separately. Some systems have dlopen # in libc. Notably freebsd and cygwin. # HP-NSK has it in zrldsrl - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10144,49 +12552,51 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -for ac_lib in '' dl zrldsrl; do +for ac_lib in '' dl zrldsrl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : + if test ${ac_cv_search_dlopen+y} +then : break fi done -if ${ac_cv_search_dlopen+:} false; then : +if test ${ac_cv_search_dlopen+y} +then : -else +else $as_nop ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" gawk_have_dlopen=yes -else +else $as_nop gawk_have_dlopen=no fi @@ -10196,13 +12606,12 @@ then extensions_supported=yes -$as_echo "#define DYNAMIC 1" >>confdefs.h +printf "%s\n" "#define DYNAMIC 1" >>confdefs.h fi fi - ;; esac @@ -10224,50 +12633,53 @@ case $host_os in vms*|beos*|os2*|msdos) -$as_echo "#define GETPGRP_VOID 1" >>confdefs.h +printf "%s\n" "#define GETPGRP_VOID 1" >>confdefs.h ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 -$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } -if ${ac_cv_func_getpgrp_void+:} false; then : - $as_echo_n "(cached) " >&6 -else +*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 +printf %s "checking whether getpgrp requires zero arguments... " >&6; } +if test ${ac_cv_func_getpgrp_void+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Use it with a single arg. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { getpgrp (0); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_func_getpgrp_void=no -else +else $as_nop ac_cv_func_getpgrp_void=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 -$as_echo "$ac_cv_func_getpgrp_void" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 +printf "%s\n" "$ac_cv_func_getpgrp_void" >&6; } if test $ac_cv_func_getpgrp_void = yes; then -$as_echo "#define GETPGRP_VOID 1" >>confdefs.h +printf "%s\n" "#define GETPGRP_VOID 1" >>confdefs.h fi ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for printf %F format" >&5 -$as_echo_n "checking for printf %F format... " >&6; } -if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for printf %F format" >&5 +printf %s "checking for printf %F format... " >&6; } +if test "$cross_compiling" = yes +then : has_f_format=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10288,9 +12700,10 @@ } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : has_f_format=yes -else +else $as_nop has_f_format=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -10300,17 +12713,18 @@ if test "$has_f_format" = yes then -$as_echo "#define PRINTF_HAS_F_FORMAT 1" >>confdefs.h +printf "%s\n" "#define PRINTF_HAS_F_FORMAT 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_f_format" >&5 -$as_echo "$has_f_format" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $has_f_format" >&5 +printf "%s\n" "$has_f_format" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for printf %a format" >&5 -$as_echo_n "checking for printf %a format... " >&6; } -if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for printf %a format" >&5 +printf %s "checking for printf %a format... " >&6; } +if test "$cross_compiling" = yes +then : has_a_format=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10331,9 +12745,10 @@ } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : has_a_format=yes -else +else $as_nop has_a_format=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -10343,11 +12758,11 @@ if test "$has_a_format" = yes then -$as_echo "#define PRINTF_HAS_A_FORMAT 1" >>confdefs.h +printf "%s\n" "#define PRINTF_HAS_A_FORMAT 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_a_format" >&5 -$as_echo "$has_a_format" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $has_a_format" >&5 +printf "%s\n" "$has_a_format" >&6; } gawk_have_sockets=no @@ -10375,16 +12790,18 @@ # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes; then : +if test "x$ac_cv_func_gethostbyname" = xyes +then : fi if test $ac_cv_func_gethostbyname = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -10393,30 +12810,29 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char gethostbyname (); int -main () +main (void) { return gethostbyname (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_nsl_gethostbyname=yes -else +else $as_nop ac_cv_lib_nsl_gethostbyname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : SOCKET_LIBS="$SOCKET_LIBS -lnsl" fi @@ -10430,16 +12846,18 @@ # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" -if test "x$ac_cv_func_connect" = xyes; then : +if test "x$ac_cv_func_connect" = xyes +then : fi if test $ac_cv_func_connect = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 -$as_echo_n "checking for connect in -lsocket... " >&6; } -if ${ac_cv_lib_socket_connect+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 +printf %s "checking for connect in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_connect+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $SOCKET_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -10448,30 +12866,29 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char connect (); int -main () +main (void) { return connect (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_socket_connect=yes -else +else $as_nop ac_cv_lib_socket_connect=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 -$as_echo "$ac_cv_lib_socket_connect" >&6; } -if test "x$ac_cv_lib_socket_connect" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 +printf "%s\n" "$ac_cv_lib_socket_connect" >&6; } +if test "x$ac_cv_lib_socket_connect" = xyes +then : SOCKET_LIBS="-lsocket $SOCKET_LIBS" gawk_have_sockets=yes fi @@ -10483,17 +12900,17 @@ if test "${gawk_have_sockets}" = "yes" then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the socket library calls" >&5 -$as_echo_n "checking where to find the socket library calls... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the socket library calls" >&5 +printf %s "checking where to find the socket library calls... " >&6; } case "${SOCKET_LIBS}" in ?*) gawk_lib_loc="${SOCKET_LIBS}" ;; *) gawk_lib_loc="the standard library" ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${gawk_lib_loc}" >&5 -$as_echo "${gawk_lib_loc}" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${gawk_lib_loc}" >&5 +printf "%s\n" "${gawk_lib_loc}" >&6; } -$as_echo "#define HAVE_SOCKETS 1" >>confdefs.h +printf "%s\n" "#define HAVE_SOCKETS 1" >>confdefs.h fi @@ -10501,9 +12918,10 @@ # Check whether --with-readline was given. -if test "${with_readline+set}" = set; then : +if test ${with_readline+y} +then : withval=$with_readline; _do_readline=$withval -else +else $as_nop _do_readline=yes fi @@ -10519,17 +12937,18 @@ _combo="-lreadline${_termcap:+ $_termcap}" LIBS="$LIBS $_combo" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether readline via \"$_combo\" is present and sane" >&5 -$as_echo_n "checking whether readline via \"$_combo\" is present and sane... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether readline via \"$_combo\" is present and sane" >&5 +printf %s "checking whether readline via \"$_combo\" is present and sane... " >&6; } - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int -main () +main (void) { int fd; @@ -10548,16 +12967,17 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : _found_readline=yes -else +else $as_nop _found_readline=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -10582,9 +13002,10 @@ return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : _found_readline=yes -else +else $as_nop _found_readline=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -10592,18 +13013,19 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_found_readline" >&5 -$as_echo "$_found_readline" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_found_readline" >&5 +printf "%s\n" "$_found_readline" >&6; } LIBS=$_readline_save_libs if test $_found_readline = yes ; then case $host_os in - *bsd* ) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 -$as_echo_n "checking for tgetent in -ltermcap... " >&6; } -if ${ac_cv_lib_termcap_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else + *bsd* ) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +printf %s "checking for tgetent in -ltermcap... " >&6; } +if test ${ac_cv_lib_termcap_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -10612,46 +13034,46 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_termcap_tgetent=yes -else +else $as_nop ac_cv_lib_termcap_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 -$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } -if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = xyes +then : _combo="$_combo -ltermcap" fi ;; esac -$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h +printf "%s\n" "#define HAVE_LIBREADLINE 1" >>confdefs.h LIBREADLINE=$_combo - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5 -$as_echo_n "checking for history_list in -lreadline... " >&6; } -if ${ac_cv_lib_readline_history_list+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5 +printf %s "checking for history_list in -lreadline... " >&6; } +if test ${ac_cv_lib_readline_history_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lreadline $_combo $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -10660,32 +13082,31 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char history_list (); int -main () +main (void) { return history_list (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_readline_history_list=yes -else +else $as_nop ac_cv_lib_readline_history_list=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_history_list" >&5 -$as_echo "$ac_cv_lib_readline_history_list" >&6; } -if test "x$ac_cv_lib_readline_history_list" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_history_list" >&5 +printf "%s\n" "$ac_cv_lib_readline_history_list" >&6; } +if test "x$ac_cv_lib_readline_history_list" = xyes +then : -$as_echo "#define HAVE_HISTORY_LIST 1" >>confdefs.h +printf "%s\n" "#define HAVE_HISTORY_LIST 1" >>confdefs.h fi @@ -10709,9 +13130,10 @@ no) # Check whether --with-mpfr was given. -if test "${with_mpfr+set}" = set; then : +if test ${with_mpfr+y} +then : withval=$with_mpfr; _do_mpfr=$withval -else +else $as_nop _do_mpfr=yes fi @@ -10726,8 +13148,8 @@ _combo="-lmpfr -lgmp" LIBS="$LIBS $_combo" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mpfr via \"$_combo\" is present and usable" >&5 -$as_echo_n "checking whether mpfr via \"$_combo\" is present and usable... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mpfr via \"$_combo\" is present and usable" >&5 +printf %s "checking whether mpfr via \"$_combo\" is present and usable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10738,7 +13160,7 @@ #include int -main () +main (void) { mpfr_t p; @@ -10753,22 +13175,23 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : _found_mpfr=yes -else +else $as_nop _found_mpfr=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_found_mpfr" >&5 -$as_echo "$_found_mpfr" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_found_mpfr" >&5 +printf "%s\n" "$_found_mpfr" >&6; } LIBS=$_mpfr_save_libs if test $_found_mpfr = yes ; then -$as_echo "#define HAVE_MPFR 1" >>confdefs.h +printf "%s\n" "#define HAVE_MPFR 1" >>confdefs.h LIBMPFR=$_combo @@ -10786,11 +13209,10 @@ esac ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : +if test "x$ac_cv_member_struct_stat_st_blksize" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h fi @@ -10800,11 +13222,10 @@ #include " -if test "x$ac_cv_member_struct_passwd_pw_passwd" = xyes; then : +if test "x$ac_cv_member_struct_passwd_pw_passwd" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_PASSWD_PW_PASSWD 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_PASSWD 1" >>confdefs.h fi @@ -10814,27 +13235,27 @@ #include " -if test "x$ac_cv_member_struct_group_gr_passwd" = xyes; then : +if test "x$ac_cv_member_struct_group_gr_passwd" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_GROUP_GR_PASSWD 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_GROUP_GR_PASSWD 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if ${ac_cv_struct_tm+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if test ${ac_cv_struct_tm+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int -main () +main (void) { struct tm tm; int *p = &tm.tm_sec; @@ -10843,56 +13264,135 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_struct_tm=time.h -else +else $as_nop ac_cv_struct_tm=sys/time.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +printf "%s\n" "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then -$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h +printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include #include <$ac_cv_struct_tm> " -if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : +if test "x$ac_cv_member_struct_tm_tm_zone" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h fi if test "$ac_cv_member_struct_tm_tm_zone" = yes; then -$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h +printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h else - ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include -" -if test "x$ac_cv_have_decl_tzname" = xyes; then : + ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_tzname" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME $ac_have_decl -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 -$as_echo_n "checking for tzname... " >&6; } -if ${ac_cv_var_tzname+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 +printf %s "checking for tzname... " >&6; } +if test ${ac_cv_var_tzname+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -10901,41 +13401,43 @@ #endif int -main () +main (void) { return tzname[0][0]; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_var_tzname=yes -else +else $as_nop ac_cv_var_tzname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 -$as_echo "$ac_cv_var_tzname" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 +printf "%s\n" "$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then -$as_echo "#define HAVE_TZNAME 1" >>confdefs.h +printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 -$as_echo_n "checking whether char is unsigned... " >&6; } -if ${ac_cv_c_char_unsigned+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 +printf %s "checking whether char is unsigned... " >&6; } +if test ${ac_cv_c_char_unsigned+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { static int test_array [1 - 2 * !(((char) -1) < 0)]; test_array [0] = 0; @@ -10945,30 +13447,32 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_char_unsigned=no -else +else $as_nop ac_cv_c_char_unsigned=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 -$as_echo "$ac_cv_c_char_unsigned" >&6; } -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 +printf "%s\n" "$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes; then + printf "%s\n" "#define __CHAR_UNSIGNED__ 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __cplusplus @@ -10981,7 +13485,7 @@ /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. + /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ @@ -11009,7 +13513,7 @@ iptr p = 0; ++p; } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; @@ -11025,93 +13529,100 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_const=yes -else +else $as_nop ac_cv_c_const=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -$as_echo "#define const /**/" >>confdefs.h +printf "%s\n" "#define const /**/" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 -$as_echo_n "checking for C/C++ restrict keyword... " >&6; } -if ${ac_cv_c_restrict+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 +printf %s "checking for C/C++ restrict keyword... " >&6; } +if test ${ac_cv_c_restrict+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_restrict=no - # The order here caters to the fact that C++ does not require restrict. - for ac_kw in __restrict __restrict__ _Restrict restrict; do + # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: + # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html + # Put 'restrict' last, because C++ lacks it. + for ac_kw in __restrict__ __restrict _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -typedef int * int_ptr; - int foo (int_ptr $ac_kw ip) { - return ip[0]; - } +typedef int *int_ptr; + int foo (int_ptr $ac_kw ip) { return ip[0]; } + int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ + int bar (int ip[$ac_kw]) { return ip[0]; } + int -main () +main (void) { int s[1]; - int * $ac_kw t = s; - t[0] = 0; - return foo(t) + int *$ac_kw t = s; + t[0] = 0; + return foo (t) + bar (t); + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_restrict=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 -$as_echo "$ac_cv_c_restrict" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 +printf "%s\n" "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; - no) $as_echo "#define restrict /**/" >>confdefs.h + no) printf "%s\n" "#define restrict /**/" >>confdefs.h ;; - *) cat >>confdefs.h <<_ACEOF -#define restrict $ac_cv_c_restrict -_ACEOF + *) printf "%s\n" "#define restrict $ac_cv_c_restrict" >>confdefs.h ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +printf %s "checking for inline... " >&6; } +if test ${ac_cv_c_inline+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } +static $ac_kw foo_t static_foo (void) {return 0; } +$ac_kw foo_t foo (void) {return 0; } #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_inline=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; @@ -11128,11 +13639,12 @@ ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5 -$as_echo_n "checking for preprocessor stringizing operator... " >&6; } -if ${ac_cv_c_stringize+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5 +printf %s "checking for preprocessor stringizing operator... " >&6; } +if test ${ac_cv_c_stringize+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define x(y) #y @@ -11140,19 +13652,20 @@ char *s = x(teststring); _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "#teststring" >/dev/null 2>&1; then : + $EGREP "#teststring" >/dev/null 2>&1 +then : ac_cv_c_stringize=no -else +else $as_nop ac_cv_c_stringize=yes fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5 -$as_echo "$ac_cv_c_stringize" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5 +printf "%s\n" "$ac_cv_c_stringize" >&6; } if test $ac_cv_c_stringize = yes; then -$as_echo "#define HAVE_STRINGIZE 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRINGIZE 1" >>confdefs.h fi @@ -11203,8 +13716,8 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -11234,15 +13747,15 @@ /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -11256,8 +13769,8 @@ fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -11274,7 +13787,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -11285,14 +13798,14 @@ LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -11309,6 +13822,10 @@ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${TEST_CROSS_COMPILE_TRUE}" && test -z "${TEST_CROSS_COMPILE_FALSE}"; then as_fn_error $? "conditional \"TEST_CROSS_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -11322,8 +13839,8 @@ ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -11346,14 +13863,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -11363,46 +13882,46 @@ fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -11411,13 +13930,6 @@ fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -11426,8 +13938,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -11439,30 +13955,10 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -11475,13 +13971,14 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -11508,18 +14005,20 @@ { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -11531,12 +14030,13 @@ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -11567,7 +14067,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -11589,6 +14089,10 @@ as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -11602,6 +14106,12 @@ ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -11643,7 +14153,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -11652,7 +14162,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -11714,8 +14224,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Awk $as_me 5.1.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by GNU Awk $as_me 5.1.1, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -11775,18 +14285,20 @@ $config_commands Report bugs to . -GNU Awk home page: . -General help using GNU software: ." +GNU Awk home page: . +General help using GNU software: ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -GNU Awk config.status 5.1.0 -configured by $0, generated by GNU Autoconf 2.69, +GNU Awk config.status 5.1.1 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -11826,15 +14338,15 @@ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -11842,7 +14354,7 @@ --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -11851,7 +14363,7 @@ as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -11879,7 +14391,7 @@ if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -11893,7 +14405,7 @@ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -11903,9 +14415,8 @@ # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake < 1.5. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. + OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" @@ -11939,9 +14450,9 @@ # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -12277,7 +14788,7 @@ esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -12285,17 +14796,17 @@ # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -12312,7 +14823,7 @@ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -12336,9 +14847,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -12400,8 +14911,8 @@ case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -12445,9 +14956,9 @@ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -12463,20 +14974,20 @@ # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi @@ -12496,7 +15007,7 @@ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | +printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -12516,8 +15027,8 @@ s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -12543,7 +15054,7 @@ for am_mf do # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line @@ -12555,7 +15066,7 @@ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | +printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -12577,7 +15088,7 @@ $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | +printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -12602,8 +15113,8 @@ (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is @@ -12656,14 +15167,11 @@ if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) @@ -12806,7 +15314,7 @@ ;; *) case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac @@ -12816,7 +15324,7 @@ # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" @@ -12837,17 +15345,17 @@ test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 - $as_echo "$ac_msg" >&6 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 + printf "%s\n" "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -12877,17 +15385,15 @@ cd "$ac_dir" - # Check for guested configure; otherwise get Cygnus style configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure - elif test -f "$ac_srcdir/configure.in"; then - # This should be Cygnus configure. - ac_sub_configure=$ac_aux_dir/configure else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 -$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 +printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi @@ -12900,8 +15406,8 @@ ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 +printf "%s\n" "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || @@ -12912,8 +15418,8 @@ done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi if test "$GCC" = yes && @@ -12926,3 +15432,4 @@ mv foo $i/Makefile done fi + diff -urN gawk-5.1.0/configure.ac gawk-5.1.1/configure.ac --- gawk-5.1.0/configure.ac 2020-04-14 14:44:46.000000000 +0300 +++ gawk-5.1.1/configure.ac 2021-10-25 19:19:24.000000000 +0300 @@ -1,7 +1,7 @@ dnl dnl configure.ac --- autoconf input file for gawk dnl -dnl Copyright (C) 1995-2020 the Free Software Foundation, Inc. +dnl Copyright (C) 1995-2021 the Free Software Foundation, Inc. dnl dnl This file is part of GAWK, the GNU implementation of the dnl AWK Programming Language. @@ -23,7 +23,7 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([GNU Awk],[5.1.0],[bug-gawk@gnu.org],[gawk]) +AC_INIT([GNU Awk],[5.1.1],[bug-gawk@gnu.org],[gawk]) # This is a hack. Different versions of install on different systems # are just too different. Chuck it and use install-sh. @@ -35,14 +35,16 @@ if test "$INSTALL" = "" then - INSTALL="$srcdir/install-sh -c" + INSTALL="$srcdir/build-aux/install-sh -c" export INSTALL fi -AC_PREREQ([2.69]) -AM_INIT_AUTOMAKE([1.15 dist-xz dist-lzip]) +AC_PREREQ([2.71]) AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_AUX_DIR([build-aux]) + +AM_INIT_AUTOMAKE([1.16 dist-xz dist-lzip subdir-objects]) AC_ARG_ENABLE([lint], [AS_HELP_STRING([--disable-lint],[do not compile in gawk lint checking])], @@ -95,7 +97,8 @@ AC_PROG_EGREP AC_PROG_YACC AC_PROG_LN_S -AC_PROG_CC_C99 +AC_PROG_CC +AC_C_VARARRAYS AC_PROG_CPP AC_PROG_RANLIB @@ -105,6 +108,12 @@ AC_PROG_INSTALL AC_PROG_MAKE_SET +# support/ builds libsupport.a, allow for cross version of ar +AM_PROG_AR + +AR_FLAGS = cru # set default +AC_SUBST(AR) + # This is mainly for my use during testing and development. # Yes, it's a bit of a hack. AC_MSG_CHECKING([for special development options]) @@ -156,7 +165,7 @@ dnl initialize GNU gettext AM_GNU_GETTEXT([external]) -AM_GNU_GETTEXT_VERSION([0.19.8]) +AM_GNU_GETTEXT_VERSION([0.20.2]) AM_LANGINFO_CODESET gt_LC_MESSAGES @@ -165,10 +174,11 @@ netdb.h netinet/in.h stddef.h string.h \ sys/ioctl.h sys/param.h sys/select.h sys/socket.h sys/time.h unistd.h \ termios.h stropts.h wchar.h wctype.h) -AC_HEADER_STDC + AC_HEADER_STDBOOL AC_HEADER_SYS_WAIT -AC_HEADER_TIME +AC_CHECK_HEADERS_ONCE([sys/time.h]) + if test "$ac_cv_header_string_h" = yes then @@ -298,7 +308,8 @@ fwrite_unlocked \ isascii isblank iswctype iswlower iswupper mbrlen \ memcmp memcpy memcpy_ulong memmove memset \ - memset_ulong mkstemp posix_openpt setenv setlocale setsid sigprocmask \ + memset_ulong mkstemp mtrace \ + posix_openpt setenv setlocale setsid sigprocmask \ snprintf strchr \ strerror strftime strcasecmp strncasecmp strcoll strtod strtoul \ system timegm tmpfile towlower towupper tzset usleep waitpid wcrtomb \ diff -urN gawk-5.1.0/custom.h gawk-5.1.1/custom.h --- gawk-5.1.0/custom.h 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/custom.h 2021-10-14 22:15:00.000000000 +0300 @@ -11,7 +11,7 @@ */ /* - * Copyright (C) 1995-2004, 2008, 2009, 2011, 2016, 2018, 2019, 2020, + * Copyright (C) 1995-2004, 2008, 2009, 2011, 2016, 2018-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -92,6 +92,12 @@ #define _XOPEN_SOURCE_EXTENDED 1 #endif +#ifdef __MVS__ +#ifndef _REGEX_INCLUDE_LIMITS_H +#define _REGEX_INCLUDE_LIMITS_H 1 +#endif +#endif + /* Junk for dfa.[ch] */ /* The __pure__ attribute was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) @@ -99,5 +105,11 @@ #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif +#define FLEXIBLE_ARRAY_MEMBER 1 +#define xreallocarray xnrealloc +#define xizalloc xzalloc +#define xicalloc xcalloc +#define xirealloc xrealloc +#define ximalloc xmalloc #include "mbsupport.h" /* defines stuff for DJGPP to fake MBS */ diff -urN gawk-5.1.0/debug.c gawk-5.1.1/debug.c --- gawk-5.1.0/debug.c 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/debug.c 2021-10-24 20:31:24.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2004, 2010-2013, 2016-2020 the Free Software Foundation, Inc. + * Copyright (C) 2004, 2010-2013, 2016-2021 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -54,9 +54,9 @@ static size_t linebuf_len; FILE *out_fp; -char *dbg_prompt; -char *commands_prompt = "> "; /* breakpoint or watchpoint commands list */ -char *eval_prompt = "@> "; /* awk statement(s) */ +const char *dbg_prompt; +const char *commands_prompt = "> "; /* breakpoint or watchpoint commands list */ +const char *eval_prompt = "@> "; /* awk statement(s) */ bool input_from_tty = false; int input_fd; @@ -198,12 +198,12 @@ static bool need_restart = false; enum { BREAK=1, WATCH, DISPLAY, HISTORY, OPTION }; static const char *const env_variable[] = { -"", -"DGAWK_BREAK", -"DGAWK_WATCH", -"DGAWK_DISPLAY", -"DGAWK_HISTORY", -"DGAWK_OPTION", + "", + "DGAWK_BREAK", + "DGAWK_WATCH", + "DGAWK_DISPLAY", + "DGAWK_HISTORY", + "DGAWK_OPTION", }; static void serialize_list(int type); static void unserialize_list(int type); @@ -219,7 +219,7 @@ struct dbg_option { const char *name; int *num_val; - char **str_val; + const char **str_val; void (*assign)(const char *); const char *help_txt; }; @@ -244,8 +244,8 @@ /* debugger option related variables */ -static char *output_file = "/dev/stdout"; /* gawk output redirection */ -char *dgawk_prompt = NULL; /* initialized in interpret */ +static const char *output_file = "/dev/stdout"; /* gawk output redirection */ +const char *dgawk_prompt = NULL; /* initialized in interpret */ static int list_size = DEFAULT_LISTSIZE; /* # of lines that 'list' prints */ static int do_trace = false; static int do_save_history = true; @@ -254,19 +254,19 @@ static const struct dbg_option option_list[] = { {"history_size", &history_size, NULL, &set_history_size, - gettext_noop("set or show the number of lines to keep in history file.") }, + gettext_noop("set or show the number of lines to keep in history file") }, {"listsize", &list_size, NULL, &set_listsize, - gettext_noop("set or show the list command window size.") }, + gettext_noop("set or show the list command window size") }, {"outfile", NULL, &output_file, &set_gawk_output, - gettext_noop("set or show gawk output file.") }, + gettext_noop("set or show gawk output file") }, {"prompt", NULL, &dgawk_prompt, &set_prompt, - gettext_noop("set or show debugger prompt."), }, + gettext_noop("set or show debugger prompt"), }, {"save_history", &do_save_history, NULL, &set_save_history, - gettext_noop("(un)set or show saving of command history (value=on|off).") }, + gettext_noop("(un)set or show saving of command history (value=on|off)") }, {"save_options", &do_save_options, NULL, &set_save_options, - gettext_noop("(un)set or show saving of options (value=on|off).") }, + gettext_noop("(un)set or show saving of options (value=on|off)") }, {"trace", &do_trace, NULL, &set_trace, - gettext_noop("(un)set or show instruction tracing (value=on|off).") }, + gettext_noop("(un)set or show instruction tracing (value=on|off)") }, {0, NULL, NULL, NULL, 0}, }; @@ -355,11 +355,20 @@ #define CHECK_PROG_RUNNING() \ do { \ if (! prog_running) { \ - d_error(_("program not running.")); \ + d_error(_("program not running")); \ return false; \ } \ } while (false) +// On z/OS, one needs to use %#p to get the leading 0x in the output. +// Having that makes it consistent with Linux and makes the use of +// helper scripts easier. +#ifdef USE_EBCDIC +#define PTRFMT "%#p" +#else +#define PTRFMT "%p" +#endif + /* g_readline -- read a line of text; the interface is like 'readline' but * without any command-line editing; used when not compiled with @@ -490,7 +499,7 @@ int errno_val = 0; if (src == NULL || *src == '\0') { - d_error(_("no current source file.")); + d_error(_("no current source file")); return NULL; } @@ -539,7 +548,7 @@ } if (fstat(s->fd, &sbuf) == 0 && s->mtime < sbuf.st_mtime) { - fprintf(out_fp, _("WARNING: source file `%s' modified since program compilation.\n"), + fprintf(out_fp, _("warning: source file `%s' modified since program compilation.\n"), src); efree(s->line_offset); s->line_offset = NULL; @@ -766,7 +775,7 @@ gprintf(out_fp, _("Number Disp Enabled Location\n\n")); for (b = breakpoints.prev; b != &breakpoints; b = b->prev) { - char *disp = "keep"; + const char *disp = "keep"; if ((b->flags & BP_ENABLE_ONCE) != 0) disp = "dis"; else if ((b->flags & BP_TEMP) != 0) @@ -775,7 +784,7 @@ b->number, disp, (b->flags & BP_ENABLE) != 0 ? "yes" : "no", b->src, b->bpi->source_line); if (b->hit_count > 0) - gprintf(out_fp, _("\tno of hits = %ld\n"), b->hit_count); + gprintf(out_fp, _("\tnumber of hits = %ld\n"), b->hit_count); if ((b->flags & BP_IGNORE) != 0) gprintf(out_fp, _("\tignore next %ld hit(s)\n"), b->ignore_count); if (b->cndn.code != NULL) @@ -964,7 +973,7 @@ valinfo(r->var_value, fprintf, out_fp); break; case Node_var_array: - fprintf(out_fp, "array, %ld elements\n", assoc_length(r)); + fprintf(out_fp, "array, %ld elements\n", (long) assoc_length(r)); break; case Node_func: fprintf(out_fp, "`function'\n"); @@ -1129,7 +1138,7 @@ subs = a->a_node; r = in_array(arr, subs); if (r == NULL) - fprintf(out_fp, _("[\"%.*s\"] not in array `%s'\n"), (int) subs->stlen, subs->stptr, arr_name); + fprintf(out_fp, _("subscript \"%.*s\" is not in array `%s'\n"), (int) subs->stlen, subs->stptr, arr_name); else if (r->type == Node_var_array) { if (count > 1) print_subscript(r, r->vname, a->next, count - 1); @@ -1181,7 +1190,7 @@ subs = a->a_node; value = in_array(r, subs); if (value == NULL) { - fprintf(out_fp, _("[\"%.*s\"] not in array `%s'\n"), + fprintf(out_fp, _("subscript \"%.*s\" is not in array `%s'\n"), (int) subs->stlen, subs->stptr, name); break; } else if (value->type != Node_var_array) { @@ -1511,10 +1520,10 @@ if ((d = find_item(list, arg->a_int)) == NULL) { /* split into two for easier message translation */ if (list == &display_list) - d_error(_("No display item numbered %ld"), + d_error(_("no display item numbered %ld"), arg->a_int); else - d_error(_("No watch item numbered %ld"), + d_error(_("no watch item numbered %ld"), arg->a_int); } else delete_item(d); @@ -1540,7 +1549,7 @@ sub = d->subs[i]; r = in_array(symbol, sub); if (r == NULL) { - fprintf(out_fp, _("%d: [\"%.*s\"] not in array `%s'\n"), + fprintf(out_fp, _("%d: subscript \"%.*s\" is not in array `%s'\n"), d->number, (int) sub->stlen, sub->stptr, d->sname); break; } @@ -1616,7 +1625,7 @@ return false; /* not triggered */ force_number(r); - di = ! iszero(r); + di = ! is_zero(r); DEREF(r); return di; } @@ -2383,7 +2392,7 @@ case D_int: /* break lineno */ lineno = (int) arg->a_int; if (lineno <= 0 || lineno > s->srclines) - d_error(_("line number %d in file `%s' out of range"), lineno, src); + d_error(_("line number %d in file `%s' is out of range"), lineno, src); else { rp = find_rule(src, lineno); if (rp == NULL) @@ -2403,9 +2412,11 @@ if ((b = set_breakpoint_at(rp, rp->source_line, false)) == NULL) fprintf(out_fp, _("cannot set breakpoint in function `%s'\n"), func->vname); - else if (temporary) - b->flags |= BP_TEMP; - lineno = b->bpi->source_line; + else { + if (temporary) + b->flags |= BP_TEMP; + lineno = b->bpi->source_line; + } break; default: @@ -2964,7 +2975,7 @@ restart(true); /* does not return */ } - fprintf(out_fp, _("Starting program: \n")); + fprintf(out_fp, _("Starting program:\n")); prog_running = true; fatal_tag_valid = 1; @@ -3029,7 +3040,7 @@ } b = find_breakpoint(stop.break_point); if (b == NULL) { - d_error(_("invalid breakpoint number %d."), stop.break_point); + d_error(_("invalid breakpoint number %d"), stop.break_point); return false; } b->flags |= BP_IGNORE; @@ -3049,7 +3060,7 @@ stop.repeat_count = arg->a_int; else stop.repeat_count = 1; - stop.command = cmd; + stop.command = (enum argtype) cmd; return true; } @@ -3226,10 +3237,10 @@ } stop.fcall_count = fcall_count - cur_frame - 1; assert(stop.fcall_count >= 0); - fprintf(out_fp, _("Run till return from ")); + fprintf(out_fp, _("Run until return from ")); print_numbered_frame(cur_frame); stop.check_func = check_finish; - stop.command = cmd; + stop.command = (enum argtype) cmd; stop.print_ret = true; return true; } @@ -3277,7 +3288,7 @@ assert(stop.fcall_count >= 0); stop.pc = (func->code_ptr + 1)->lasti; assert(stop.pc->opcode == Op_K_return); - stop.command = cmd; + stop.command = (enum argtype) cmd; stop.check_func = check_return; @@ -3340,7 +3351,7 @@ stop.sourceline = sourceline; stop.fcall_count = fcall_count - cur_frame; stop.check_func = check_until; - stop.command = cmd; + stop.command = (enum argtype) cmd; return true; } @@ -3379,7 +3390,7 @@ stop.pc = ip; stop.fcall_count = fcall_count - cur_frame; stop.check_func = check_until; - stop.command = cmd; + stop.command = (enum argtype) cmd; return true; } } @@ -3400,7 +3411,7 @@ stop.pc = ip; stop.fcall_count = fcall_count - cur_frame; stop.check_func = check_until; - stop.command = cmd; + stop.command = (enum argtype) cmd; return true; } if (ip == (rp + 1)->lasti) @@ -3759,7 +3770,7 @@ if (noffset == 0) { static char buf[50]; /* offset for 2nd to last lines in a multi-line output */ - noffset = sprintf(buf, "[ :%p] %-20.20s: ", (void *) pc, + noffset = sprintf(buf, "[ :" PTRFMT "] %-20.20s: ", (void *) pc, opcode2str(pc->opcode)); } @@ -3785,9 +3796,9 @@ print_func(fp, "\n"); if (pc->source_line <= 0) - print_func(fp, "[ :%p] %-20.20s: ", pc, opcode2str(pc->opcode)); + print_func(fp, "[ :" PTRFMT "] %-20.20s: ", pc, opcode2str(pc->opcode)); else - print_func(fp, "[%6d:%p] %-20.20s: ", + print_func(fp, "[%6d:" PTRFMT "] %-20.20s: ", pc->source_line, pc, opcode2str(pc->opcode)); if (prog_running && ! in_dump) { @@ -3798,35 +3809,35 @@ switch (pc->opcode) { case Op_K_if: - print_func(fp, "[branch_if = %p] [branch_else = %p] [branch_else->lasti = %p]\n", + print_func(fp, "[branch_if = " PTRFMT "] [branch_else = " PTRFMT "] [branch_else->lasti = " PTRFMT "]\n", pc->branch_if, pc->branch_else, pc->branch_else->lasti); break; case Op_K_else: - print_func(fp, "[branch_end = %p]\n", pc->branch_end); + print_func(fp, "[branch_end = " PTRFMT "]\n", pc->branch_end); break; case Op_K_while: - print_func(fp, "[while_body = %p] [target_break = %p]\n", (pc+1)->while_body, pc->target_break); + print_func(fp, "[while_body = " PTRFMT "] [target_break = " PTRFMT "]\n", (pc+1)->while_body, pc->target_break); break; case Op_K_do: - print_func(fp, "[doloop_cond = %p] [target_break = %p]", (pc+1)->doloop_cond, pc->target_break); + print_func(fp, "[doloop_cond = " PTRFMT "] [target_break = " PTRFMT "]", (pc+1)->doloop_cond, pc->target_break); if (pc->comment) - print_func(fp, " [comment = %p]", pc->comment); + print_func(fp, " [comment = " PTRFMT "]", pc->comment); print_func(fp, "\n"); if (pc->comment) print_instruction(pc->comment, print_func, fp, in_dump); break; case Op_K_for: - print_func(fp, "[forloop_cond = %p] ", (pc+1)->forloop_cond); + print_func(fp, "[forloop_cond = " PTRFMT "] ", (pc+1)->forloop_cond); /* fall through */ case Op_K_arrayfor: - print_func(fp, "[forloop_body = %p] ", (pc+1)->forloop_body); - print_func(fp, "[target_break = %p] [target_continue = %p]", pc->target_break, pc->target_continue); + print_func(fp, "[forloop_body = " PTRFMT "] ", (pc+1)->forloop_body); + print_func(fp, "[target_break = " PTRFMT "] [target_continue = " PTRFMT "]", pc->target_break, pc->target_continue); if (pc->comment != NULL) { - print_func(fp, " [comment = %p]\n", (pc)->comment); + print_func(fp, " [comment = " PTRFMT "]\n", (pc)->comment); print_instruction(pc->comment, print_func, fp, in_dump); } else print_func(fp, "\n"); @@ -3835,15 +3846,15 @@ case Op_K_switch: { bool need_newline = false; - print_func(fp, "[switch_start = %p] [switch_end = %p]\n", (pc+1)->switch_start, (pc+1)->switch_end); + print_func(fp, "[switch_start = " PTRFMT "] [switch_end = " PTRFMT "]\n", (pc+1)->switch_start, (pc+1)->switch_end); if (pc->comment || (pc+1)->switch_end->comment) print_func(fp, "%*s", noffset, ""); if (pc->comment) { - print_func(fp, "[start_comment = %p]", pc->comment); + print_func(fp, "[start_comment = " PTRFMT "]", pc->comment); need_newline = true; } if ((pc+1)->switch_end->comment) { - print_func(fp, "[end_comment = %p]", (pc + 1)->switch_end->comment); + print_func(fp, "[end_comment = " PTRFMT "]", (pc + 1)->switch_end->comment); need_newline = true; } if (need_newline) @@ -3856,9 +3867,9 @@ break; case Op_K_default: - print_func(fp, "[stmt_start = %p] [stmt_end = %p]", pc->stmt_start, pc->stmt_end); + print_func(fp, "[stmt_start = " PTRFMT "] [stmt_end = " PTRFMT "]", pc->stmt_start, pc->stmt_end); if (pc->comment) { - print_func(fp, " [comment = %p]\n", pc->comment); + print_func(fp, " [comment = " PTRFMT "]\n", pc->comment); print_instruction(pc->comment, print_func, fp, in_dump); } else print_func(fp, "\n"); @@ -3871,7 +3882,7 @@ case Op_var_assign: print_func(fp, "[set_%s()]", get_spec_varname(pc->assign_var)); if (pc->assign_ctxt != 0) - print_func(fp, " [assign_ctxt = %s]", opcode2str(pc->assign_ctxt)); + print_func(fp, " [assign_ctxt = %s]", opcode2str((OPCODE) pc->assign_ctxt)); print_func(fp, "\n"); break; @@ -3881,7 +3892,7 @@ break; case Op_field_spec_lhs: - print_func(fp, "[target_assign = %p] [do_reference = %s]\n", + print_func(fp, "[target_assign = " PTRFMT "] [do_reference = %s]\n", pc->target_assign, pc->do_reference ? "true" : "false"); break; @@ -3889,7 +3900,7 @@ print_func(fp, "[param_cnt = %d] [source_file = %s]", pcount, pc->source_file ? pc->source_file : "cmd. line"); if (pc[3].nexti != NULL) { - print_func(fp, "[ns_list = %p]\n", pc[3].nexti); + print_func(fp, "[ns_list = " PTRFMT "]\n", pc[3].nexti); print_ns_list(pc[3].nexti, print_func, fp, in_dump); } else print_func(fp, "\n"); @@ -3903,7 +3914,7 @@ case Op_K_getline: print_func(fp, "[into_var = %s]\n", pc->into_var ? "true" : "false"); - print_func(fp, "%*s[target_beginfile = %p] [target_endfile = %p]\n", + print_func(fp, "%*s[target_beginfile = " PTRFMT "] [target_endfile = " PTRFMT "]\n", noffset, "", (pc + 1)->target_beginfile, (pc + 1)->target_endfile); break; @@ -3925,19 +3936,19 @@ break; case Op_K_nextfile: - print_func(fp, "[target_newfile = %p] [target_endfile = %p]\n", + print_func(fp, "[target_newfile = " PTRFMT "] [target_endfile = " PTRFMT "]\n", pc->target_newfile, pc->target_endfile); break; case Op_newfile: - print_func(fp, "[target_jmp = %p] [target_endfile = %p]\n", + print_func(fp, "[target_jmp = " PTRFMT "] [target_endfile = " PTRFMT "]\n", pc->target_jmp, pc->target_endfile); - print_func(fp, "%*s[target_get_record = %p]\n", + print_func(fp, "%*s[target_get_record = " PTRFMT "]\n", noffset, "", (pc + 1)->target_get_record); break; case Op_get_record: - print_func(fp, "[target_newfile = %p]\n", pc->target_newfile); + print_func(fp, "[target_newfile = " PTRFMT "]\n", pc->target_newfile); break; case Op_jmp: @@ -3949,19 +3960,19 @@ case Op_arrayfor_init: case Op_K_break: case Op_K_continue: - print_func(fp, "[target_jmp = %p]\n", pc->target_jmp); + print_func(fp, "[target_jmp = " PTRFMT "]\n", pc->target_jmp); break; case Op_K_exit: - print_func(fp, "[target_end = %p] [target_atexit = %p]\n", + print_func(fp, "[target_end = " PTRFMT "] [target_atexit = " PTRFMT "]\n", pc->target_end, pc->target_atexit); break; case Op_K_case: - print_func(fp, "[target_jmp = %p] [match_exp = %s]", + print_func(fp, "[target_jmp = " PTRFMT "] [match_exp = %s]", pc->target_jmp, (pc + 1)->match_exp ? "true" : "false"); if (pc->comment) { - print_func(fp, " [comment = %p]\n", pc->comment); + print_func(fp, " [comment = " PTRFMT "]\n", pc->comment); print_instruction(pc->comment, print_func, fp, in_dump); } else print_func(fp, "\n"); @@ -3970,26 +3981,26 @@ case Op_K_namespace: print_func(fp, "[namespace = %s]", pc->ns_name); if (pc->nexti) - print_func(fp, "[nexti = %p]", pc->nexti); + print_func(fp, "[nexti = " PTRFMT "]", pc->nexti); if (pc->comment) - print_func(fp, "[comment = %p]", pc->comment); + print_func(fp, "[comment = " PTRFMT "]", pc->comment); print_func(fp, "\n"); break; case Op_arrayfor_incr: - print_func(fp, "[array_var = %s] [target_jmp = %p]\n", + print_func(fp, "[array_var = %s] [target_jmp = " PTRFMT "]\n", pc->array_var->type == Node_param_list ? func->fparms[pc->array_var->param_cnt].param : pc->array_var->vname, pc->target_jmp); break; case Op_line_range: - print_func(fp, "[triggered = %ld] [target_jmp = %p]\n", + print_func(fp, "[triggered = %ld] [target_jmp = " PTRFMT "]\n", pc->triggered, pc->target_jmp); break; case Op_cond_pair: - print_func(fp, "[line_range = %p] [target_jmp = %p]\n", + print_func(fp, "[line_range = " PTRFMT "] [target_jmp = " PTRFMT "]\n", pc->line_range, pc->target_jmp); break; @@ -4056,7 +4067,7 @@ ruletab[pc->in_rule], pc->source_file ? pc->source_file : "cmd. line"); if (pc[3].nexti != NULL) { - print_func(fp, "[ns_list = %p]\n", pc[3].nexti); + print_func(fp, "[ns_list = " PTRFMT "]\n", pc[3].nexti); print_ns_list(pc[3].nexti, print_func, fp, in_dump); } else print_func(fp, "\n"); @@ -4074,7 +4085,7 @@ break; case Op_exec_count: - print_func(fp, "[exec_count = %ld]\n", pc->exec_count); + print_func(fp, "[exec_count = " EXEC_COUNT_FMT "]\n", pc->exec_count); break; case Op_store_var: @@ -4098,7 +4109,7 @@ pc->memory->comment_type == EOL_COMMENT ? "EOL" : "BLOCK"); if (pc->comment) { - print_func(fp, " [comment = %p]\n", pc->comment); + print_func(fp, " [comment = " PTRFMT "]\n", pc->comment); print_instruction(pc->comment, print_func, fp, in_dump); } else print_func(fp, "\n"); @@ -4431,8 +4442,8 @@ } - -/* serialize_list--- convert a list structure to a byte stream and +/* + * serialize_list--- convert a list structure to a byte stream and * save in environment. */ @@ -4605,10 +4616,10 @@ } if (nchar > 0) { /* non-empty commands list */ - nchar += (strlen("commands ") + 20 + strlen("end") + 1); /* 20 for cnum (an int) */ - if (nchar > buflen - bl) { - buflen = bl + nchar; - erealloc(buf, char *, buflen + 3, "serialize_list"); + nchar += (strlen("commands ") + 20 /*cnum*/ + 1 /*CSEP*/ + strlen("end") + 1 /*FSEP*/); + if (nchar >= buflen - bl) { + buflen = bl + nchar + 1 /*RSEP*/; + erealloc(buf, char *, buflen + 1, "serialize_list"); } nchar = sprintf(buf + bl, "commands %d", cnum); bl += nchar; @@ -4634,8 +4645,8 @@ nchar = strlen("end"); /* end of 'commands' */ memcpy(buf + bl, "end", nchar); bl += nchar; + buf[bl++] = FSEP; /* field */ } - buf[bl++] = FSEP; /* field */ buf[bl++] = RSEP; /* record */ buf[bl] = '\0'; @@ -4643,9 +4654,9 @@ if (cndn->expr) { bl--; /* undo RSEP from above */ nchar = strlen(cndn->expr); - if (nchar > buflen - bl) { - buflen = bl + nchar; - erealloc(buf, char *, buflen + 3, "serialize_list"); + if (nchar + 1 /*FSEP*/ >= buflen - bl) { + buflen = bl + nchar + 1 /*FSEP*/ + 1 /*RSEP*/; + erealloc(buf, char *, buflen + 1, "serialize_list"); } memcpy(buf + bl, cndn->expr, nchar); bl += nchar; @@ -4862,7 +4873,7 @@ field_cnt++; if (field_cnt == MAX_FIELD) #ifdef GAWKDEBUG - fatal("Increase MAX_FIELD and recompile."); + fatal("Increase MAX_FIELD and recompile"); #else return; #endif @@ -5282,7 +5293,7 @@ if (output_fp != stdout) { if (output_fp != stderr) { fclose(output_fp); - efree(output_file); + efree((void*) output_file); } output_fp = stdout; output_is_tty = os_isatty(fileno(stdout)); @@ -5353,7 +5364,7 @@ static void set_prompt(const char *value) { - efree(dgawk_prompt); + efree((void *) dgawk_prompt); dgawk_prompt = estrdup(value, strlen(value)); dbg_prompt = dgawk_prompt; } @@ -5600,7 +5611,7 @@ ctxt->install_func = append_symbol; /* keep track of newly installed globals */ push_context(ctxt); the_source = add_srcfile(SRC_CMDLINE, arg->a_string, srcfiles, NULL, NULL); - do_flags = false; + do_flags &= DO_MPFR; // preserve this flag only ret = parse_program(&code, true); do_flags = save_flags; remove_params(this_func); @@ -5750,7 +5761,7 @@ check_symbol(NODE *r) { invalid_symbol++; - d_error(_("No symbol `%s' in current context"), r->vname); + d_error(_("no symbol `%s' in current context"), r->vname); /* install anyway, but keep track of it */ append_symbol(r); } diff -urN gawk-5.1.0/doc/awkcard.in gawk-5.1.1/doc/awkcard.in --- gawk-5.1.0/doc/awkcard.in 2020-04-02 09:25:12.000000000 +0300 +++ gawk-5.1.1/doc/awkcard.in 2021-10-25 19:18:13.000000000 +0300 @@ -2,7 +2,7 @@ .\" .\" Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, .\" 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, -.\" 2019, 2020 +.\" 2019, 2020, 2021 .\" Free Software Foundation, Inc. .\" .\" Permission is granted to make and distribute verbatim copies of @@ -100,7 +100,7 @@ \*(CD .SL .nf -\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2020 +\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2021 Free Software Foundation, Inc. .nf .BT @@ -273,6 +273,8 @@ .TI "\*(FC\-i \*(FIfile\*(FR, \*(FC\-\^\-include \*(FIfile\*(FR Include library AWK code in \*(FIfile\*(FR. See \fHAwk Program Execution\*(FR. +.TI "\*(FC\-I\*(FR, \*(FC\-\^\-trace\*(FR +Print the internal byte code names as they are executed. .TI "\*(FC\-l \*(FIlib\*(FR, \*(FC\-\^\-load \*(FIlib\*(FR Load dynamic extension \*(FIlib\fP. See \fHDynamic Extensions\*(FR. @@ -298,8 +300,7 @@ .TI "\*(FC\-p\*(FR[\*(FC\*(FIfile\*(FR], \*(FC\-\^\-profile\*(FR[\*(FC=\*(FIfile\*(FR] Send profiling data to \*(FIfile\*(FR (default: \*(FCawkprof.out\*(FR). -The profile contains execution counts in the left margin -of each statement in the program. +The profile contains execution counts in the left margin. .TI "\*(FC\-P\*(FR, \*(FC\-\^\-posix\*(FR Disable common and GNU extensions. .TI "\*(FC\-r\*(FR, \*(FC\-\^\-re\-interval\*(FR @@ -1077,11 +1078,11 @@ .fi \*(CDIt is possible to call the \*(FClength()\fP built-in function not only with no argument, but even without parentheses. -Doing so, however, is poor practice, -and \*(GK +Doing so, however, is poor practice. +\*(CB\*(GK issues a warning about its use if \*(FC\-\^\-lint\fP -is specified on the command line.\*(CB -.EB "\s+2\f(HBHISTORICAL FEATURES (\*(GK\f(HB)\*(FR\s0" +is specified on the command line.\*(CL +.EB "\s+2\f(HBHISTORICAL FEATURES\*(FR\s0" .BT .\" --- Regular Expressions @@ -1983,7 +1984,7 @@ .ES .nf \*(CDHost: \*(FCftp.gnu.org\*(FR -File: \*(FC/gnu/gawk/gawk-5.1.0.tar.gz\fP +File: \*(FC/gnu/gawk/gawk-5.1.1.tar.gz\fP .in +.2i .fi GNU \*(AK (\*(GK). There may be a later version. @@ -2011,7 +2012,7 @@ .ES .fi \*(CDCopyright \(co 1996\(en2005, -2007, 2009\(en2020 Free Software Foundation, Inc. +2007, 2009\(en2021 Free Software Foundation, Inc. .sp .5 Permission is granted to make and distribute verbatim copies of this reference card provided the copyright notice and this permission notice diff -urN gawk-5.1.0/doc/bc_notes gawk-5.1.1/doc/bc_notes --- gawk-5.1.0/doc/bc_notes 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/doc/bc_notes 2020-06-10 20:01:40.000000000 +0300 @@ -154,6 +154,7 @@ struct exp_instruction *di; NODE *(*fptr) P((int)); long dl; + unsigned long long ldl; char *name; } d; @@ -251,7 +252,7 @@ /*------------------ pretty printing/profiling --------*/ /* Op_exec_count */ -#define exec_count d.dl +#define exec_count d.ldl /* Op_K_while */ #define while_body d.di diff -urN gawk-5.1.0/doc/ChangeLog gawk-5.1.1/doc/ChangeLog --- gawk-5.1.0/doc/ChangeLog 2020-04-14 14:41:39.000000000 +0300 +++ gawk-5.1.1/doc/ChangeLog 2021-10-27 07:53:39.000000000 +0300 @@ -1,3 +1,480 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-20 Arnold D. Robbins + + * gawktexi.in (FS versus FPAT): New subsection. + (String Functions): Reference it. + +2021-10-13 Arnold D. Robbins + + * awkcard.in, gawkinet.texi, gawkworkflow.texi: Update copyright year. + +2021-10-09 Arnold D. Robbins + + * gawktexi.in: Clarify that initialization and increment parts of + a for loop can't use the C comma operator. Thanks to J Naman + for pointing out the doc was too subtle. + + Unrelated: further expand the bug reporting text and discussion + about comp.lang.awk. + + Unrelated: Fix some spelling errors. Also, convert some + Unicode characters back into plain ASCII. + + * wordlist: Updated. + * wordlist3: Updated. + +2021-10-03 Arnold D. Robbins + + * gawktexi.in: Continue clarifying typeof() usage. And other fixes. + All thanks to Antonio Columbo. + (UPDATE-MONTH): Set to October. Also thanks to Antonio. + +2021-10-01 Arnold D. Robbins + + * gawktexi.in: Clarify typeof() usage with array elements + created by reference. + +2021-09-27 Arnold D. Robbins + + * gawktexi.in: Small cleanups from Antonio Columbo. General + review of usage of @code. + +2021-09-24 Arnold D. Robbins + + * gawktexi.in (Building the Documentation): Improve the text, + add info on building the HTML doc. Thanks to Antonio Columbo + for the encouragement. + (Distribution Contents): Update with more files. + +2021-09-23 Arnold D. Robbins + + * gawktexi.in (Strong Regexp Constants): Document that they + can be assigned with -v. Thanks to J Naman + for the report. + +2021-09-22 Arnold D. Robbins + + * gawktexi.in (Compiling from Git): New node. + (Building the Documentation): New node. + Set the update month and update the patch level. + * awkcard.in: Update tar ball version. + +2021-09-09 Arnold D. Robbins + + * gawktexi.in (Interval Expressions): Add some notes borrowed from + Paul Eggert in the grep documentation. + +2021-08-26 Arnold D. Robbins + + * gawktexi.in (Strong Regexp Constants): Document behavior + when used as third argument of sub() or gsub(). + (String Functions): Document that gensub() always returns + a string. + +2021-07-15 Arnold D. Robbins + + * gawktexi.in: Remove obsolete bits relating to VMS. + +2021-07-09 Arnold D. Robbins + + * gawktexi.in: Make @EMAIL usage consistent everywhere. + Thanks to Antonio Columbo for pointing it out. + +2021-07-07 Andrew J. Schorr + + * gawktexi.in (Isnumeric Function): Improve description of how + isnumeric differs from the traditional x+0 == x test. + +2021-07-05 Arnold D. Robbins + + * gawk.1: Document that asort() and asorti() allow the same array to + be passed for the first and second arguments. + * gawktexi.in (String Functions, Array Sorting Functions): Ditto. + Thanks to Peng Yu for the report. + +2021-07-02 Arnold D. Robbins + + * gawktexi.in (Bugs): Added discussion of what is and is not + a bug, as well as of the new help-gawk@gnu.org list and how + things are now managed. + +2021-06-30 Arnold D. Robbins + + * texinfo.tex: Updated from GNULIB. + +2021-06-25 Arnold D. Robbins + + * gawktexi.in (Isnumeric Function): Some final (we hope) tweaks. + +2021-06-24 Andrew J. Schorr + + * gawktexi.in (Isnumeric Function): Fix location of endfile + tag, and add a comment about how this differs from x+0 == x. + +2021-06-23 Arnold D. Robbins + + * gawktexi.in (Isnumeric Function): Add an additional paragraph + from Andy. Turn some real tabs into spaces. + +2021-06-22 Andrew J. Schorr + + * gawktexi.in (Isnumeric Function): New node. + +2021-06-21 Arnold D. Robbins + + * gawktexi.in (Performance bugs): New section. + (Compiling with MPFR): New section. Thanks to + Peter Lindgren for the suggestion. + +2021-06-18 Arnold D. Robbins + + * gawktexi.in (Internationalization): Fix indexing. Thanks to + Antonio Columbo for pointing it out. + +2021-06-17 Arnold D. Robbins + + * gawktexi.in (Internationalization): Add some appropriate quotes. + (Feature History): Some minor edits. + +2021-06-10 Arnold D. Robbins + + * wordlist: Add some more words. + +2021-05-30 Arnold D. Robbins + + * gawktexi.in (Feature History): Fix a typo and clarify wording. + Thanks to Antonio Columbo for the report. + +2021-05-27 Arnold D. Robbins + + * gawktexi.in (Feature History): Add features from 5.1.1. + +2021-04-04 Arnold D. Robbins + + * gawktexi.in: Update menues. + +2021-03-31 Arnold D. Robbins + + * gawktexi.in (Regexp Operator Details): Added a sidebar on + matching the empty regexp. Thanks to Arkadiusz Drabczyk + for pointing out the lack of + documentation. + +2021-03-18 Arnold D. Robbins + + * texinfo.tex: Updated from GNULIB. + +2021-01-25 Arnold D. Robbins + + * gawktexi.in: Fix some spelling errors. + * gawkinet.texi: Ditto. + * wordlist, wordlist2, wordlist4: Updated. + +2021-01-23 Arnold D. Robbins + + * gawktexi.in: A number of small fixes, thanks to + Antonio Columbo. + + Unrelated: + + * texinfo.tex: Updated via GNULIB. + +2021-01-21 Arnold D. Robbins + + * gawktexi.in (Other Versions): Add information on more + awk implementations. + +2021-01-08 Arnold D. Robbins + + * gawktexi.in (gawk split records): Document that RS = "()" + doesn't split records on the null string. + (Regexp Field Splitting): Ditto, for FS. + +2020-12-28 Juergen Kahrs + + * gawkinet.texi: Update mailpopclient. + +2020-12-27 Juergen Kahrs + + * gawkinet.texi: Update finger client, add catpipe + client and server. + +2020-12-26 Juergen Kahrs + + * gawkinet.texi: Update datetime client. + +2020-12-26 Arnold D. Robbins + + * gawktexi.in (More CSV): Add indexing and reference to + Manuel Collado's CSVMODE library. + +2020-12-07 Arnold D. Robbins + + * gawktexi.in (awk split records): Remove the bit about POSIX + mode not treating newline as a field separator; it's been not + true since 2015. Thanks to Arkadiusz Drabczyk + for the report. + +2020-12-07 Juergen Kahrs + + * gawkinet.texi: Fix a number of FIXMEs. + +2020-12-04 Juergen Kahrs + + * gawkinet.texi: Update urefs. + +2020-12-01 Arnold D. Robbins + + * gawkinet.texi: Lots of cleanup edits. Bump the minor part + of the edition. + * gawktexi.in: New section on extension philosphy. + +2020-11-28 Arnold D. Robbins + + * gawkworkflow.texi: Add an additional web resource. + * gawktexi.in: More edits in sample programs chapter. + +2020-11-16 Arnold D. Robbins + + * gawktexi.in (Nextfile Statement): Clarify what happens in + a BEGINFILE rule. + * gawktexi.in: Additional small fixes. + +2020-10-31 Arnold D. Robbins + + * texinfo.tex: Updated from GNULIB. + +2020-10-28 Arnold D. Robbins + + * gawktexi.in (Other Arguments): Add a sidebar about quoting shell + variables on the command line. Based on a bug list discussion in 2018. + +2020-10-22 Arnold D. Robbins + + * texinfo.tex: Updated from GNULIB. + +2020-10-16 Arnold D. Robbins + + * gawktexi.in: After review, remove/update some FIXMEs, and + and fix a markup error. + +2020-10-15 Arnold D. Robbins + + * gawktexi.in: Add an index entry. + +2020-10-12 Arnold D. Robbins + + * gawktexi.in: Explain `ls -l' earlier in the book, and small wording + improvement in explanation of options. Thanks to Yehezkel Bernat. + for the comments. + +2020-10-11 Arnold D. Robbins + + * gawkworkflow.texi: Fix a spelling error. + * wordlist, wordlist2: Updated. + +2020-10-07 Arnold D. Robbins + + * gawktexi.in: Add an additional dark corner notation. + +2020-10-05 Arnold D. Robbins + + * gawktexi.in: Minor edit related to compatiblity mode and + unknown options. Thanks to Arkadiusz Drabczyk + for raising the issue. + + Unrelated: + + * gawktexi.in: A number of small fixes, mostly thanks to + Antonio Columbo. + +2020-10-04 Arnold D. Robbins + + * gawktexi.in: Minor edits. + + Unrelated: + + * gawktexi.in (Wc Program): Update to POSIX, support both bytes + and characters via the gawkextlib mbs extension. + + Unrelated: + + * gawktexi.in: Remove TODO at end of file related to recursion; + it's already handled. + +2020-10-01 Arnold D. Robbins + + * gawktexi.in (Split Program): Rewrite split to be POSIX + compliant. Update all the prose. + * wordlist: Update. + +2020-09-24 Arnold D. Robbins + + * gawktexi.in: Fix a spelling error. + * wordlist, wordlist2, wordlist3: Remove words that spell + now recognizes as real words. + * gawkinet.texi: Fix a spelling error. + * Makefile.am (spellinet): New target. + * wordlist4: New file. + +2020-09-18 Arnold D. Robbins + + * gawktexi.in: Minor fixes. Thanks to Antonio Columbo for + bringing them to my attention. + +2020-09-13 Arnold D. Robbins + + * gawktexi.in (Egrep Program): Improve to be POSIX compliant. + Update explanatory text as well. + +2020-09-11 Arnold D. Robbins + + * gawktexi.in (Id Program): Rewrite to be POSIX compliant. + Update explanatory text as well. + +2020-09-04 Arnold D. Robbins + + * gawktexi.in: Index BWK quotes separately. Finish using "BWK awk" + everywhere. Fix up text with exercise for uniq.awk in both + places. + +2020-09-01 Arnold D. Robbins + + * gawk.1: Minor edits. + * awkcard.in: Ditto. + +2020-08-31 Arnold D. Robbins + + * gawktexi.in (Uniq Program): Updated uniq.awk to follow 2020 POSIX. + +2020-08-26 Arnold D. Robbins + + * gawktexi.in: Fix some small mistakes / typos. + Adjust the prose some as well. + +2020-08-25 Arnold D. Robbins + + * gawktexi.in (BEGINFILE/ENDFILE): Document that as of 5.1.1, in + a BEGINFILE, the record and fields are cleared. Fixes an issue + reported by Pat Rankin in May, 2011. Remove the related FIXME, + as well as a FIXME later on that is no longer relevant. Clarify + the prose in the whole section. + +2020-08-24 Arnold D. Robbins + + * gawktexi.in (Arithmetic Ops): Update text to fix a FIXME. Document + that modulus is POSIX compliant. + +2020-08-18 Arnold D. Robbins + + * gawktexi.in (String Functions): Fix a typo in the description + of patsplit. Thanks to Nelson H.F. Beebe for the report. + +2020-08-12 Arnold D. Robbins + + * gawktexi.in (Profiling): Add explanation of function order. + +2020-07-28 Arnold D. Robbins + + * gawktexi.in: Change a FIXME into a real cross reference. Thanks + to Antonio Columbo for the report. + +2020-07-26 Arnold D. Robbins + + * gawktexi.in: Document that get_mpfr and get_mpz are obsolete + and revise doc on handling MPFR and GMP values from an + extension function. + +2020-07-15 Arnold D. Robbins + + * gawktexi.in: Document how to handle MPFR and GMP values + from an extension function. + + Unrelated: + + * texinfo.tex: Updated from GNULIB. + +2020-07-13 Arnold D. Robbins + + * gawktexi.in (General Data Types): Document that MPFR + data types are copied and have to be freed in the + extension. + +2020-07-02 Arnold D. Robbins + + * gawk.1, gawktexi.in: Document -I/--trace option. + * awkcard.in: Document -I/--trace option. + +2020-06-25 Arnold D. Robbins + + * gawk.1: Applied some more troff "lint" fixes. + Thanks to Bjarni Ingi Gislason . + +2020-06-15 Arnold D. Robbins + + * gawkinet.texi: Small fixes, and revise the indexing to use + new Texinfo features. + +2020-06-14 Arnold D. Robbins + + * gawkworkflow.texi: Revise indexing to use new Texinfo features. + +2020-06-12 Arnold D. Robbins + + * gawktexi.in (String Functions): Update doc on asort and asorti + w.r.t. SYMTAB and FUNCTAB. + +2020-06-10 Andrew J. Schorr + + * bc_notes: Add new field `unsigned long long ldl' to INSTRUCTION, + and update the definition of exec_count. + +2020-06-09 Arnold D. Robbins + + * gawktexi.in (Implementation Limits): Update the table to be more + accurate and up to date. Note units of limits, per request from + Ed Morton . + +2020-06-07 Arnold D. Robbins + + * texinfo.tex: Updated from GNULIB. + +2020-06-05 Arnold D. Robbins + + * gawktexi.in: Improvements in switch statement and typed + regex sections. + +2020-05-24 Arnold D. Robbins + + * gawk.1: Applied a number of troff "lint" fixes. + Thanks to Bjarni Ingi Gislason . + +2020-05-15 Arnold D. Robbins + + * gawkworkflow.texi: Minor updates. + * texinfo.tex: Updated from GNULIB. + +2020-05-08 Arnold D. Robbins + + * gawkinet.texi: Remove special casing for statist image for + Info. Makeinfo handles it just fine. + +2020-04-26 Arnold D. Robbins + + * gawkinet.texi: Include ASCII Art version of the statist + image. Thanks again to Manuel Collado. Also update copyright + year and update month. + Also thanks to Manuel, remove extra @insertcopying for Info. + * statist.txt: New file. + +2020-04-20 Arnold D. Robbins + + * gawkinet.texi: Include statist figure in HTML version. Thanks + to Manuel Collado for pointing this out. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/doc/gawk.1 gawk-5.1.1/doc/gawk.1 --- gawk-5.1.0/doc/gawk.1 2020-04-10 15:25:02.000000000 +0300 +++ gawk-5.1.1/doc/gawk.1 2021-10-25 19:18:13.000000000 +0300 @@ -13,7 +13,7 @@ . if \w'\(rq' .ds rq "\(rq . \} .\} -.TH GAWK 1 "Mar 23 2020" "Free Software Foundation" "Utility Commands" +.TH GAWK 1 "Jul 05 2021" "Free Software Foundation" "Utility Commands" .SH NAME gawk \- pattern scanning and processing language .SH SYNOPSIS @@ -90,7 +90,6 @@ options. The debugger is documented in \*(EP. .SH OPTION FORMAT -.PP .I Gawk options may be either traditional \*(PX-style one letter options, or \*(GN-style long options. \*(PX options start with a single \*(lq\-\*(rq, @@ -114,7 +113,6 @@ .B #! executable scripts. .SH OPTIONS -.PP .I Gawk accepts the following options. Standard options are listed first, followed by options for @@ -173,7 +171,7 @@ don't pay any attention to the locale information when attempting to process strings as multibyte characters. The -.B "\-\^\-posix" +.B \-\^\-posix option overrides this one. .bp .TP @@ -323,6 +321,17 @@ are treated as if they begin with an implicit \fB@namespace "awk"\fR statement. .TP .PD 0 +.BI \-I +.TP +.PD +.B \-\^\-trace +Print the internal byte code names as they are executed when running +the program. The trace is printed to standard error. Each ``op code'' +is preceded by a +.B + +sign in the output. +.TP +.PD 0 .BI "\-l " lib .TP .PD @@ -353,7 +362,8 @@ With an optional argument of .BR invalid , only warnings about things that are -actually invalid are issued. (This is not fully implemented yet.) +actually invalid are issued. +(This is not fully implemented yet.) With an optional argument of .BR no-ext , warnings about @@ -377,7 +387,7 @@ .B \-n .TP .PD -.B "\-\^\-non\-decimal\-data" +.B \-\^\-non\-decimal\-data Recognize octal and hexadecimal values in input data. .I "Use this option with great caution!" .TP @@ -491,7 +501,6 @@ and .BR ^= . .RE -.bp \" MANUAL EDIT .TP .PD 0 .B \-r @@ -587,7 +596,6 @@ .B \-W option may be used, followed by the name of a long option. .SH AWK PROGRAM EXECUTION -.PP An \*(AK program consists of a sequence of optional directives, pattern-action statements, @@ -742,7 +750,6 @@ .B END rule(s) (if any). .SS Command Line Directories -.PP According to POSIX, files named on the .I awk command line must be @@ -803,7 +810,6 @@ .B FS may have. .SS Fields -.PP As each input record is read, .I gawk splits the record into @@ -839,7 +845,7 @@ variable is set to a space-separated list of numbers, each field is expected to have fixed width, and .I gawk -splits up the record using the specified widths. +splits up the record using the specified widths. Each field width may optionally be preceded by a colon-separated value specifying the number of characters to skip before the field starts. The value of @@ -917,10 +923,8 @@ causes the record to be resplit, creating new values for the fields. .SS Built-in Variables -.PP .IR Gawk\^ "'s" built-in variables are: -.PP .TP "\w'\fBFIELDWIDTHS\fR'u+1n" .B ARGC The number of command line arguments (does not include options to @@ -1473,7 +1477,6 @@ The text domain of the \*(AK program; used to find the localized translations for the program's strings. .SS Arrays -.PP Arrays are subscripted with an expression between square brackets .RB ( [ " and " ] ). If the expression is an expression list @@ -1593,7 +1596,6 @@ namespaces. For more details, see \*(EP. .SS Variable Typing And Conversion -.PP Variables and fields may be (floating point) numbers, or strings, or both. They may also be regular expressions. How the @@ -1685,12 +1687,10 @@ .B 0x11 is equal to decimal 17. .SS String Constants -.PP String constants in \*(AK are sequences of characters enclosed between double quotes (like \fB"value"\fR). Within strings, certain .I "escape sequences" are recognized, as in C. These are: -.PP .TP "\w'\fB\e\^\fIddd\fR'u+1n" .B \e\e A literal backslash. @@ -1937,13 +1937,13 @@ .TP .BI [ abc.\|.\|. ] A character list: matches any of the characters -.IR abc.\|.\|. . +.IR abc.\|.\|.\& . You may include a range of characters by separating them with a dash. To include a literal dash in the list, put it first or last. .TP \fB[^\fIabc.\|.\|.\fB]\fR A negated character list: matches any character except -.IR abc.\|.\|. . +.IR abc.\|.\|.\& . .TP .IB r1 | r2 Alternation: matches either @@ -2213,9 +2213,7 @@ and input/output statements available are patterned after those in C. .SS Operators -.PP The operators in \*(AK, in order of decreasing precedence, are: -.PP .TP "\w'\fB*= /= %= ^=\fR'u+1n" .BR ( \&.\|.\|. ) Grouping @@ -2298,14 +2296,13 @@ .BI ( var " = " value ) and operator-assignment (the other forms) are supported. .SS Control Statements -.PP The control statements are as follows: .PP .RS .nf \fBif (\fIcondition\fB) \fIstatement\fR [ \fBelse\fI statement \fR] -\fBwhile (\fIcondition\fB) \fIstatement \fR +\fBwhile (\fIcondition\fB) \fIstatement\fR \fBdo \fIstatement \fBwhile (\fIcondition\fB)\fR \fBfor (\fIexpr1\fB; \fIexpr2\fB; \fIexpr3\fB) \fIstatement\fR \fBfor (\fIvar \fBin\fI array\fB) \fIstatement\fR @@ -2323,9 +2320,7 @@ .fi .RE .SS "I/O Statements" -.PP The input/output statements are as follows: -.PP .TP "\w'\fBprintf \fIfmt, expr-list\fR'u+1n" \fBclose(\fIfile \fR[\fB, \fIhow\fR]\fB)\fR Close file, pipe or coprocess. @@ -2408,7 +2403,7 @@ .B END rule(s). .TP -.B "nextfile" +.B nextfile Stop processing the current input file. The next input record read comes from the next input file. Update @@ -2475,14 +2470,14 @@ and .BR printf . .TP -.BI "print .\|.\|. >>" " file" +.BI "print .\|.\|.\& >>" " file" Append output to the .IR file . .TP -.BI "print .\|.\|. |" " command" +.BI "print .\|.\|.\& |" " command" Write on a pipe. .TP -.BI "print .\|.\|. |&" " command" +.BI "print .\|.\|.\& |&" " command" Send data to a coprocess or socket. (See also the subsection .BR "Special File Names" , @@ -2518,7 +2513,6 @@ \*(AK does not automatically close pipes, sockets, or coprocesses when they return EOF. .SS The \fIprintf\fP\^ Statement -.PP The \*(AK versions of the .B printf statement and @@ -2692,7 +2686,7 @@ .B 0 flag, it is padded with zeroes. .TP -.BI \&. prec +.BI \&.\& prec A number that specifies the precision to use when printing. For the .BR %e , @@ -2717,7 +2711,7 @@ .B %X formats, it specifies the minimum number of digits to print. For the -.B %s +.B %s format, it specifies the maximum number of characters from the string that should be printed. @@ -2748,7 +2742,6 @@ in the format string. For example, \fB"%3$*2$.*1$s"\fP. .SS Special File Names -.PP When doing I/O redirection from either .B print or @@ -2842,9 +2835,7 @@ .BI /inet6/udp/ lport / rhost / rport Similar, but use UDP/IP instead of TCP/IP. .SS Numeric Functions -.PP \*(AK has the following built-in arithmetic functions: -.PP .TP "\w'\fBsrand(\fR[\fIexpr\^\fR]\fB)\fR'u+1n" .BI atan2( y , " x" ) Return the arctangent of @@ -2874,7 +2865,7 @@ .I denom in \fIresult\fB["quotient"]\fR and the remainder in -in \fIresult\fB["remainder"]\fR. +\fIresult\fB["remainder"]\fR. This is a .I gawk extension, primarily of value when working with @@ -2908,10 +2899,8 @@ Return the previous seed for the random number generator. .SS String Functions -.PP .I Gawk has the following built-in string functions: -.PP .TP "\w'\fBsprintf(\^\fIfmt\fB\^, \fIexpr-list\^\fB)\fR'u+1n" \fBasort(\fIs \fR[\fB, \fId\fR [\fB, \fIhow\fR] ]\fB)\fR Return the number of elements in the source @@ -2951,6 +2940,9 @@ It can also be the name of a user-defined comparison function as described in \fBPROCINFO["sorted_in"]\fR. +.IR s " and " d +are allowed to be the same array; this only makes sense when +supplying the third argument as well. .TP "\w'\fBsprintf(\^\fIfmt\fB\^, \fIexpr-list\^\fB)\fR'u+1n" \fBasorti(\fIs \fR[\fB, \fId\fR [\fB, \fIhow\fR] ]\fB)\fR Return the number of elements in the source @@ -2970,6 +2962,10 @@ is the same as described previously for .BR asort() . +Here too, +.IR s " and " d +are allowed to be the same array; this only makes sense when +supplying the third argument as well. .TP \fBgensub(\fIr\fB, \fIs\fB, \fIh \fR[\fB, \fIt\fR]\fB)\fR Search the target string @@ -3268,7 +3264,6 @@ .I gawk provides the following functions for obtaining time stamps and formatting them. -.PP .TP "\w'\fBsystime()\fR'u+1n" \fBmktime(\fIdatespec\fR [\fB, \fIutc-flag\fR]\fB)\fR Turn @@ -3388,7 +3383,6 @@ \fBxor(\fIv1\fB, \fIv2 \fR[, ...]\fB)\fR Return the bitwise XOR of the values provided in the argument list. There must be at least two. -.PP .SS Type Functions The following functions provide type related information about their arguments. @@ -3518,7 +3512,7 @@ \&.\|.\|. } -/abc/ { .\|.\|. ; f(1, 2) ; .\|.\|. } +/abc/ { .\|.\|.\& ; f(1, 2) ; .\|.\|.\& } .fi .ft R .RE @@ -3603,7 +3597,6 @@ .I gawk to dump the profile and function call stack and then exit. .SH INTERNATIONALIZATION -.PP String constants are sequences of characters enclosed in double quotes. In non-English speaking environments, it is possible to mark strings in the \*(AK program as requiring translation to the local @@ -3750,7 +3743,8 @@ .B tolower() and .B toupper() -built-in functions (from the Bell Laboratories version); and the ISO C conversion specifications in +built-in functions (from the Bell Laboratories version); +and the ISO C conversion specifications in .B printf (done first in the Bell Laboratories version). .SH HISTORICAL FEATURES @@ -4222,7 +4216,7 @@ .IR usleep (3) .PP .IR "The AWK Programming Language" , -Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger, +Alfred V.\& Aho, Brian W.\& Kernighan, Peter J.\& Weinberger, Addison-Wesley, 1988. ISBN 0-201-07981-X. .PP \*(EP, @@ -4278,7 +4272,7 @@ .SH COPYING PERMISSIONS Copyright \(co 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2007, 2009, -2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of diff -urN gawk-5.1.0/doc/gawkinet.texi gawk-5.1.1/doc/gawkinet.texi --- gawk-5.1.0/doc/gawkinet.texi 2020-02-06 22:52:56.000000000 +0200 +++ gawk-5.1.1/doc/gawkinet.texi 2021-10-28 20:03:54.000000000 +0300 @@ -4,6 +4,9 @@ @settitle TCP/IP Internetworking With @command{gawk} @c %**end of header (This is for running Texinfo on a region.) @c FIXME: web vs. Web +@c Correct spelling of web is still under discussion. +@c https://english.stackexchange.com/questions/120869/should-i-capitalize-the-word-web-in-this-sentence +@c We leave the many occurrences of web in this file as they are. @dircategory Network applications @direntry @@ -61,8 +64,8 @@ @c pages, I think this is the right decision. ADR. @set TITLE TCP/IP Internetworking with @command{gawk} -@set EDITION 1.5 -@set UPDATE-MONTH July, 2019 +@set EDITION 1.6 +@set UPDATE-MONTH November, 2020 @c gawk versions: @set VERSION 5.1 @set PATCHLEVEL 0 @@ -72,7 +75,7 @@ for the @value{VERSION}.@value{PATCHLEVEL} (or later) version of the GNU implementation of AWK. @sp 2 -Copyright (C) 2000, 2001, 2002, 2004, 2009, 2010, 2016, 2019 +Copyright (C) 2000, 2001, 2002, 2004, 2009, 2010, 2016, 2019, 2020, 2021 Free Software Foundation, Inc. @sp 2 Permission is granted to copy, distribute and/or modify this document @@ -94,12 +97,6 @@ @end enumerate @end copying -@ifinfo -This file documents the networking features in GNU @command{awk}. - -@insertcopying -@end ifinfo - @setchapternewpage odd @titlepage @@ -237,6 +234,8 @@ Nof Ayalon, ISRAEL @* March, 2001 +@c system if test ! -d eg ; then mkdir eg ; fi +@c system if test ! -d eg/network ; then mkdir eg/network ; fi @node Introduction, Using Networking, Preface, Top @chapter Networking Concepts @@ -411,6 +410,7 @@ communications. Examples are SMTP (Simple Mail Transfer Protocol), FTP (File Transfer Protocol), and HTTP (HyperText Transfer Protocol). @cindex SMTP (Simple Mail Transfer Protocol) +@cindex Simple Mail Transfer Protocol (SMTP) @cindex FTP (File Transfer Protocol) @cindex HTTP (Hypertext Transfer Protocol) @@ -458,7 +458,7 @@ is @emph{connected to} in a transaction. For this to work though, the server must be expecting connections. Much as there has to be someone at the office building to answer -the phone@footnote{In the days before voice mail systems!}, the +the phone,@footnote{In the days before voice mail systems!} the server process (usually) has to be started first and be waiting for a connection. @@ -490,12 +490,12 @@ sending data. Data writes @dfn{block} until the data have been received on the other end. For both TCP and UDP, data reads block until there is incoming data waiting to be read. This is summarized in the following table, -where an ``X'' indicates that the given action blocks. +where an ``x'' indicates that the given action blocks. @ifnottex @multitable {Protocol} {Reads} {Writes} -@item TCP @tab X @tab X -@item UDP @tab X @tab +@item TCP @tab x @tab x +@item UDP @tab x @tab @end multitable @end ifnottex @tex @@ -518,10 +518,8 @@ @comment node-name, next, previous, up @chapter Networking With @command{gawk} -@c STARTOFRANGE netgawk -@cindex networks, @command{gawk} and -@c STARTOFRANGE gawknet -@cindex @command{gawk}, networking +@cindex networks @subentry @command{gawk} and +@cindex @command{gawk} @subentry networking The @command{awk} programming language was originally developed as a pattern-matching language for writing short programs to perform data manipulation tasks. @@ -552,14 +550,14 @@ or @cite{Web Client Programming with Perl}. -@cindex Perl, @command{gawk} networking and -@cindex Python, @command{gawk} networking and -@cindex Tcl/Tk, @command{gawk} and +@cindex Perl @subentry @command{gawk} networking and +@cindex Python @subentry @command{gawk} networking and +@cindex Tcl/Tk @subentry @command{gawk} and However, you can do the programming here without first having to learn object-oriented ideology; underlying languages such as Tcl/Tk, Perl, Python; or all of the libraries necessary to extend these languages before they are ready for the Internet. -@cindex Transmission Control Protocol, See TCP +@cindex Transmission Control Protocol @seeentry{TCP} @cindex TCP (Transmission Control Protocol) This @value{CHAPTER} demonstrates how to use the TCP protocol. The UDP protocol is much less important for most users. @@ -598,8 +596,8 @@ connection, and then two-way I/O proceeds as usual. @c last comma is part of see-also -@cindex input/output, two-way, See Also @command{gawk}@comma{} networking -@cindex TCP/IP, sockets and +@cindex input/output, two-way, @seealso{@command{gawk}, networking} +@cindex TCP/IP @subentry sockets and At the C, C++, and Perl level, networking is accomplished via @dfn{sockets}, an Application Programming Interface (API) originally developed at the University of California at Berkeley that is now used @@ -611,12 +609,9 @@ the programmer, making things much simpler and easier to use. @c Who sez we can't toot our own horn occasionally? -@c STARTOFRANGE filenet @cindex filenames, for network access -@c STARTOFRANGE gawnetf -@cindex @command{gawk}, networking, filenames -@c STARTOFRANGE netgawf -@cindex networks, @command{gawk} and, filenames +@cindex @command{gawk} @subentry networking @subentry filenames +@cindex networks @subentry @command{gawk} and @subentry filenames The special @value{FN} for network access is made up of several fields, all of which are mandatory: @@ -625,7 +620,7 @@ @end example @cindex @code{/inet/} files (@command{gawk}) -@cindex files, @code{/inet/} (@command{gawk}) +@cindex files @subentry @code{/inet/} (@command{gawk}) @cindex localport field @cindex remoteport field The @var{net-type} field lets you specify IPv4 versus IPv6, or lets @@ -638,15 +633,15 @@ @node Special File Fields, Comparing Protocols, Gawk Special Files, Gawk Special Files @subsection The Fields of the Special @value{FFN} -This @value{SECTION} explains the meaning of all the other fields, +This @value{SECTION} explains the meaning of all of the fields, as well as the range of values and the defaults. All of the fields are mandatory. To let the system pick a value, -or if the field doesn't apply to the protocol, specify it as @samp{0}: +or if the field doesn't apply to the protocol, specify it as @samp{0} (zero): @table @var @cindex network type field @c last comma is part of secondary -@cindex TCP/IP, network type, selecting +@cindex TCP/IP @subentry network type, selecting @item net-type This is one of @samp{inet4} for IPv4, @samp{inet6} for IPv6, or @samp{inet} to use the system default (which is likely to be IPv4). @@ -655,7 +650,7 @@ @cindex protocol field @c last comma is part of secondary -@cindex TCP/IP, protocols, selecting +@cindex TCP/IP @subentry protocols, selecting @item protocol Determines which member of the TCP/IP family of protocols is selected to transport the data across the @@ -664,27 +659,31 @@ explained later in this @value{SECTION}. @item localport -@cindex networks, ports, specifying +@cindex networks @subentry ports @subentry specifying Determines which port on the local machine is used to communicate across the network. Application-level clients usually use @samp{0} to indicate they do not care which local port is -used---instead they specify a remote port to connect to. It is vital for +used---instead they specify a remote port to connect to. + +It is vital for application-level servers to use a number different from @samp{0} here because their service has to be available at a specific publicly known port number. It is possible to use a name from @file{/etc/services} here. @item hostname @cindex hostname field -@cindex servers, as hosts +@cindex servers @subentry as hosts Determines which remote host is to -be at the other end of the connection. Application-level servers must fill +be at the other end of the connection. +Application-level clients must enter a name different from @samp{0}. +The name can be either symbolic +(e.g., @samp{jpl-devvax.jpl.nasa.gov}) or numeric (e.g., @samp{128.149.1.143}). + +Application-level servers must fill this field with a @samp{0} to indicate their being open for all other hosts to connect to them and enforce connection level server behavior this way. It is not possible for an application-level server to restrict its availability to one remote host by entering a host name here. -Application-level clients must enter a name different from @samp{0}. -The name can be either symbolic -(e.g., @samp{jpl-devvax.jpl.nasa.gov}) or numeric (e.g., @samp{128.149.1.143}). @item remoteport Determines which port on the remote @@ -692,13 +691,15 @@ For @file{/inet/tcp} and @file{/inet/udp}, application-level clients @emph{must} use a number other than @samp{0} to indicate to which port on the remote machine -they want to connect. Application-level servers must not fill this field with +they want to connect. + +Application-level servers must not fill this field with a @samp{0}. Instead they specify a local port to which clients connect. It is possible to use a name from @file{/etc/services} here. @end table -@cindex networks, @command{gawk} and, connections -@cindex @command{gawk}, networking, connections +@cindex networks @subentry @command{gawk} and @subentry connections +@cindex @command{gawk} @subentry networking @subentry connections Experts in network programming will notice that the usual client/server asymmetry found at the level of the socket API is not visible here. This is for the sake of simplicity of the high-level concept. If this @@ -773,11 +774,10 @@ @node File /inet/tcp, File /inet/udp, Comparing Protocols, Comparing Protocols @subsubsection @file{/inet/tcp} @cindex @code{/inet/tcp} special files (@command{gawk}) -@cindex files, @code{/inet/tcp} (@command{gawk}) +@cindex files @subentry @code{/inet/tcp} (@command{gawk}) @cindex TCP (Transmission Control Protocol) Once again, always use TCP. -(Use UDP when low overhead is a necessity, and use RAW for -network experimentation.) +(Use UDP when low overhead is a necessity.) The first example is the sender program: @@ -811,9 +811,9 @@ @node File /inet/udp, , File /inet/tcp, Comparing Protocols @subsubsection @file{/inet/udp} @cindex @code{/inet/udp} special files (@command{gawk}) -@cindex files, @code{/inet/udp} (@command{gawk}) +@cindex files @subentry @code{/inet/udp} (@command{gawk}) @cindex UDP (User Datagram Protocol) -@cindex User Datagram Protocol, See UDP +@cindex User Datagram Protocol @seeentry{UDP} The server and client programs that use UDP are almost identical to their TCP counterparts; only the @var{protocol} has changed. As before, it does matter which side starts first. The receiving side blocks and waits for the sender. @@ -855,7 +855,8 @@ UDP cannot guarantee that the datagrams at the receiving end will arrive in exactly the same order they were sent. Some datagrams could be -lost, some doubled, and some out of order. But no overhead is necessary to +lost, some doubled, and some could arrive out of order. +But no overhead is necessary to accomplish this. This unreliable behavior is good enough for tasks such as data acquisition, logging, and even stateless services like the original versions of NFS. @@ -863,35 +864,38 @@ @node TCP Connecting, Troubleshooting, Gawk Special Files, Using Networking @section Establishing a TCP Connection -@c STARTOFRANGE tcpcon -@cindex TCP (Transmission Control Protocol), connection, establishing -@c STARTOFRANGE netcon -@cindex networks, @command{gawk} and, connections -@c STARTOFRANGE gawcon -@cindex @command{gawk}, networking, connections +@cindex TCP (Transmission Control Protocol) @subentry connection, establishing +@cindex networks @subentry @command{gawk} and @subentry connections +@cindex @command{gawk} @subentry networking @subentry connections Let's observe a network connection at work. Type in the following program and watch the output. Within a second, it connects via TCP (@file{/inet/tcp}) -to the machine it is running on (@samp{localhost}) and asks the service +to a remote server and asks the service @samp{daytime} on the machine what time it is: @cindex @code{getline} command @example +@c file eg/network/daytimeclient.awk BEGIN @{ - "/inet/tcp/0/localhost/daytime" |& getline + daytime_server = "time-a-g.nist.gov" + daytime_connection = "/inet/tcp/0/" daytime_server "/daytime" + daytime_connection |& getline print $0 - close("/inet/tcp/0/localhost/daytime") + daytime_connection |& getline + print $0 + close(daytime_connection) @} +@c endfile @end example -Even experienced @command{awk} users will find the second line strange in two -respects: +Even experienced @command{awk} users will find the fourth and sixth line +strange in two respects: @itemize @bullet @item -A special file is used as a shell command that pipes its output +A string containing the name of a special file is used as a shell command that pipes its output into @code{getline}. One would rather expect to see the special file being read like any other file (@samp{getline < -"/inet/tcp/0/localhost/daytime")}. +"/inet/tcp/0/time-a-g.nist.gov/daytime"}). @item @cindex @code{|} (vertical bar), @code{|&} operator (I/O) @@ -923,34 +927,55 @@ @end itemize In the earlier example, the @samp{|&} operator tells @code{getline} -to read a line from the special file @file{/inet/tcp/0/localhost/daytime}. +to read a line from the special file @file{/inet/tcp/0/time-a-g.nist.gov/daytime}. We could also have printed a line into the special file. But instead we just -read a line with the time, printed it, and closed the connection. +consumed an empty leading line, printed it, then read a line with the time, +printed that, and closed the connection. (While we could just let @command{gawk} close the connection by finishing the program, in this @value{DOCUMENT} we are pedantic and always explicitly close the connections.) +Network services like @file{daytime} are not really useful because +there are so many better ways to print the current time. +In the early days of TCP networking, such a service may have looked +like a good idea for testing purposes. Later, simple TCP services +like these have been used to teach TCP/IP networking and therefore +you can still find much educational material of good quality on the +Internet about such outdated services. The +@uref{https://tf.nist.gov/tf-cgi/servers.cgi, list of servers} +that still support the legacy service +@uref{https://en.wikipedia.org/wiki/Daytime_Protocol, daytime} +can be found at Wikipedia. We hesitated to use this service in +this manual because it is hard to find servers that still support +services like @file{daytime} openly to the Internet. +Later on we will see that some of these nostalgic +protocols have turned into security risks. + @node Troubleshooting, Interacting, TCP Connecting, Using Networking @section Troubleshooting Connection Problems @cindex advanced features, network connections @c last comma is part of secondary -@cindex troubleshooting, networks, connections +@cindex troubleshooting @subentry networks @subentry connections It may well be that for some reason the program shown in the previous example does not run on your machine. When looking at possible reasons for this, you will learn much -about typical problems that arise in network programming. First of all, +about typical problems that arise in network programming. +@ignore +First of all, your implementation of @command{gawk} may not support network access because it is a pre-3.1 version or you do not have a network interface in your machine. Perhaps your machine uses some other protocol, such as -DECnet or Novell's IPX. For the rest of this @value{CHAPTER}, -we will assume -you work on a Unix machine that supports TCP/IP. If the previous example program does -not run on your machine, it may help to replace the name -@samp{localhost} with the name of your machine or its IP address. If it -does, you could replace @samp{localhost} with the name of another machine -in your vicinity---this way, the program connects to another machine. +DECnet or Novell's IPX. +@end ignore + +For the rest of this @value{CHAPTER}, we will assume you work on a POSIX-style +system that supports TCP/IP. If the previous example program does not +run on your machine, it may help to replace the value assigned to the variable +@samp{daytime_server} with the name (or the IP address) of another server +from the list mentioned above. Now you should see the date and time being printed by the program, -otherwise your machine may not support the @samp{daytime} service. +otherwise you may have run out of servers that support the @samp{daytime} service. + Try changing the service to @samp{chargen} or @samp{ftp}. This way, the program connects to other services that should give you some response. If you are curious, you should have a look at your @file{/etc/services} file. It could @@ -989,7 +1014,7 @@ @cindex Linux @cindex GNU/Linux -@cindex Microsoft Windows, networking +@cindex Microsoft Windows @subentry networking Here, you find a list of services that traditional Unix machines usually support. If your GNU/Linux machine does not do so, it may be that these services are switched off in some startup script. Systems running some @@ -1004,7 +1029,13 @@ a rather rudimentary and half-hearted implementation. Nevertheless, the equivalent of @file{/etc/services} resides under @file{C:\WINNT\system32\drivers\etc\services} on Microsoft Windows 2000 -and Microsoft Windows XP.} +and Microsoft Windows XP. +On Microsoft Windows 7, 8 and 10 there is a directory +@file{%WinDir%\System32\Drivers\Etc} +that holds the +@uref{https://support.microsoft.com/en-us/help/972034/how-to-reset-the-hosts-file-back-to-the-default, @file{hosts} file} +and probably also a +@uref{https://www.ibm.com/support/knowledgecenter/SSRNYG_7.2.1/com.ibm.rational.synergy.install.win.doc/topics/sg_r_igw_services_file.html, @file{services} file}.} The first column of the file gives the name of the service, and the second column gives a unique number and the protocol that one can use to connect to this service. @@ -1015,62 +1046,70 @@ @node Interacting, Setting Up, Troubleshooting, Using Networking @section Interacting with a Network Service -The next program makes use of the possibility to really interact with a +The next program begins really interacting with a network service by printing something into the special file. It asks the so-called @command{finger} service if a user of the machine is logged in. When -testing this program, try to change @samp{localhost} to -some other machine name in your local network: +testing this program, try to change the variable @samp{finger_server} +to some other machine name in your local network: +@c This really worked in 2020. +@c Thanks to some people at cmu.edu who keep this service alive. +@c https://www.techrepublic.com/article/everything-you-need-to-know-about-tcp-ips-finger-utility/ -@c system if test ! -d eg ; then mkdir eg ; fi -@c system if test ! -d eg/network ; then mkdir eg/network ; fi @example @c file eg/network/fingerclient.awk BEGIN @{ - NetService = "/inet/tcp/0/localhost/finger" - print "@var{name}" |& NetService - while ((NetService |& getline) > 0) + finger_server = "andrew.cmu.edu" + finger_connection = "/inet/tcp/0/" finger_server "/finger" + print "wnace" |& finger_connection + while ((finger_connection |& getline) > 0) print $0 - close(NetService) + close(finger_connection) @} @c endfile @end example After telling the service on the machine which user to look for, the program repeatedly reads lines that come as a reply. When no more -lines are coming (because the service has closed the connection), the -program also closes the connection. Try replacing @code{"@var{name}"} with your -login name (or the name of someone else logged in). For a list -of all users currently logged in, replace @var{name} with an empty string -(@code{""}). +lines are available (because the service has closed the connection), the +program also closes the connection. If you tried to replace @samp{finger_server} +with some other server name, the script probably reported being unable to +open the connection, because most servers today no longer support this +service. Try replacing the login name of Professor Nace (@code{wnace}) +with another login name (like @code{help}). You will receive a list of +login names similar to the one you asked for. In the 1980s you could get +a list of all users currently logged in by asking for an empty string (@code{""}). @cindex Linux @cindex GNU/Linux -The final @code{close()} command could be safely deleted from +The final @code{close()} call could be safely deleted from the above script, because the operating system closes any open connection -by default when a script reaches the end of execution. In order to avoid +by default when a script reaches the end of execution. But, in order to avoid portability problems, it is best to always close connections explicitly. +@c FIXME: This following statement isn't really true; gawk flushes +@c and closes all open files before exiting. With the Linux kernel, for example, proper closing results in flushing of buffers. Letting the close happen by default may result in discarding buffers. When looking at @file{/etc/services} you may have noticed that the @samp{daytime} service is also available with @samp{udp}. In the earlier -example, change @samp{tcp} to @samp{udp}, -and change @samp{finger} to @samp{daytime}. -After starting the modified program, you see the expected day and time message. -The program then hangs, because it waits for more lines coming from the -service. However, they never come. This behavior is a consequence of the +examples, change @samp{tcp} to @samp{udp} and try if the @samp{finger} and @samp{daytime} +clients still work as expected. They probably will not respond because +a wise administrator switched off these services. +But if they do, you may see the expected day and time message. +The program then hangs, because it waits for more lines to come from the +service. However, they never do. This behavior is a consequence of the differences between TCP and UDP. When using UDP, neither party is automatically informed about the other closing the connection. Continuing to experiment this way reveals many other subtle -differences between TCP and UDP. To avoid such trouble, one should always +differences between TCP and UDP. To avoid such trouble, you should always remember the advice Douglas E.@: Comer and David Stevens give in Volume III of their series @cite{Internetworking With TCP} (page 14): -@cindex TCP (Transmission Control Protocol), UDP and -@cindex UDP (User Datagram Protocol), TCP and -@cindex Internet, See networks +@cindex TCP (Transmission Control Protocol) @subentry UDP and +@cindex UDP (User Datagram Protocol) @subentry TCP and +@cindex Internet @seeentry{networks} @quotation When designing client-server applications, beginners are strongly advised to use TCP because it provides reliable, connection-oriented @@ -1079,12 +1118,30 @@ or the application cannot tolerate virtual circuit overhead. @end quotation +This advice is actually quite dated and we hesitated to repeat it here. +But we left it in because we are still observing beginners running +into this pitfall. While this advice has aged quite well, some other +ideas from the 1980s have not. The @samp{finger} service may still be +available in Microsoft +@uref{https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/finger, Windows Server 2019}, +but it turned out to be a never-ending cause of trouble. First of all, +it is now obvious that a server should never reveal personal data about +its users to anonymous client software that connects over the wild wild Internet. +So every server on the Internet should reject @samp{finger} requests +(by disabling the port and by disabling the software serving this port). +But things got even worse in 2020 when it turned out that even the client +software (the @samp{finger} command documented in the link above) is a +security problem. A tool called +@uref{https://seclists.org/fulldisclosure/2020/Sep/30, DarkFinger} +allows to leverage the Microsoft Windows @samp{finger.exe} as a file downloader +and help evade network security devices. + @node Setting Up, Email, Interacting, Using Networking @section Setting Up a Service @c last comma is part of tertiary -@cindex networks, @command{gawk} and, service@comma{} establishing +@cindex networks @subentry @command{gawk} and @subentry service@comma{} establishing @c last comma is part of tertiary -@cindex @command{gawk}, networking, service@comma{} establishing +@cindex @command{gawk} @subentry networking @subentry service@comma{} establishing The preceding programs behaved as clients that connect to a server somewhere on the Internet and request a particular service. Now we set up such a service to mimic the behavior of the @samp{daytime} service. @@ -1104,32 +1161,36 @@ @cindex @command{finger} utility @cindex servers @example +@c file eg/network/daytimeserver.awk BEGIN @{ print strftime() |& "/inet/tcp/8888/0/0" close("/inet/tcp/8888/0/0") @} +@c endfile @end example Now open another window on the same machine. Copy the client program given as the first example (@pxref{TCP Connecting, ,Establishing a TCP Connection}) -to a new file and edit it, changing the name @samp{daytime} to -@samp{8888}. Then start the modified client. You should get a reply -like this: +to a new file and edit it, changing the variable @samp{daytime_server} to +@samp{localhost} and the port name @samp{daytime} to @samp{8888}. +Then start the modified client. You should get a reply like this: @example -Sat Sep 27 19:08:16 CEST 1997 +$ @kbd{gawk -f awklib/eg/network/daytimeclient.awk} +@print{} Sun Dec 27 17:33:57 CET 2020 +@print{} Sun Dec 27 17:33:57 CET 2020 @end example @noindent Both programs explicitly close the connection. @c first comma is part of primary -@cindex Microsoft Windows, networking, ports -@cindex networks, ports, reserved +@cindex Microsoft Windows @subentry networking @subentry ports +@cindex networks @subentry ports @subentry reserved @cindex Unix, network ports and Now we will intentionally make a mistake to see what happens when the name -@samp{8888} (the so-called port) is already used by another service. +@samp{8888} (the port) is already used by another service. Start the server program in both windows. The first one works, but the second one complains that it could not open the connection. Each port on a single @@ -1144,6 +1205,12 @@ On machines running some flavor of Microsoft Windows, there is no restriction that reserves ports 1 to 1024 for a privileged user; hence, you can start an @samp{echo} server there. +Even in later version of Microsoft Windows, this restriction of +the Unix world seems to have never been adopted +@uref{https://social.technet.microsoft.com/Forums/windowsserver/en-US/334f0770-eda9-475a-a27f-46b80ab7e872/does-windows10server2016-have-privileged-ports-?forum=ws2016, +@cite{Does windows(10/server-2016) have privileged ports?}}. +In Microsoft Windows it is the level of the firewall that handles +port access restrictions, not the level of the operating system's kernel. Turning this short server program into something really useful is simple. Imagine a server that first reads a @value{FN} from the client through the @@ -1152,14 +1219,16 @@ could be: @example +@c file eg/network/catpipeserver.awk BEGIN @{ NetService = "/inet/tcp/8888/0/0" - NetService |& getline - CatPipe = ("cat " $1) # sets $0 and the fields + NetService |& getline # sets $0 and the fields + CatPipe = ("cat " $1) while ((CatPipe | getline) > 0) print $0 |& NetService close(NetService) @} +@c endfile @end example @noindent @@ -1172,20 +1241,53 @@ machine. If you allow clients to connect to your machine and execute arbitrary commands, anyone would be free to do @samp{rm -rf *}. +The client side connects to port number 8888 on the server side and +sends the name of the desired file to be sent across the same TCP +connection. The main loop reads all content coming in from the TCP +connection line-wise and prints it. + +@example +@c file eg/network/catpipeclient.awk +BEGIN @{ + NetService = "/inet/tcp/0/localhost/8888" + print "README" |& NetService + while ((NetService |& getline) > 0) + print $0 + close(NetService) +@} +@c endfile +@end example + @node Email, Web page, Setting Up, Using Networking @section Reading Email @cindex RFC 1939 @cindex RFC 821 -@cindex @command{gawk}, networking, See Also email -@cindex networks, @command{gawk} and, See Also email +@cindex @command{gawk} @subentry networking @subentry email +@cindex networks @subentry @command{gawk} and @subentry email @cindex POP (Post Office Protocol) @cindex SMTP (Simple Mail Transfer Protocol) @cindex Post Office Protocol (POP) @cindex Simple Mail Transfer Protocol (SMTP) The distribution of email is usually done by dedicated email servers that -communicate with your machine using special protocols. To receive email, we -will use the Post Office Protocol (POP). Sending can be done with the much -older Simple Mail Transfer Protocol (SMTP). +communicate with your machine using special protocols. +In this @value{SECTION} we show how simple the basic steps are.@footnote{No, +things are @emph{not} that simple any more. Things @emph{were} that simple +when email was young in the 20th century. These days, unencrypted plaintext +authentication is usually disallowed on non-secure connections. +Since encryption of network connections is not supported in @command{gawk}, +you should not use @command{gawk} to write such scripts. +We left this @value{SECTION} as it is because it demonstrates how +application level protocols work in principle (a command being issued +by the client followed by a reply coming back). Unfortunately, modern +application level protocols are much more flexible in the sequence of +actions. For example, modern POP3 servers may introduce themselves +with an unprompted initial line that arrives before the initial command. +Dealing with such variance is not worth the effort in @command{gawk}.} +@c FIXME: This would be the proper place to refer to Arnold's work on +@c writing SMTP client and server. + +To receive email, we use the Post Office Protocol (POP). Sending can +be done with the much older Simple Mail Transfer Protocol (SMTP). @cindex email When you type in the following program, replace the @var{emailhost} by the @@ -1197,10 +1299,11 @@ shows you the first email the server has in store: @example +@c file eg/network/mailpopclient.awk BEGIN @{ POPService = "/inet/tcp/0/@var{emailhost}/pop3" RS = ORS = "\r\n" - print "user @var{name}" |& POPService + print "user @var{name}" |& POPService POPService |& getline print "pass @var{password}" |& POPService POPService |& getline @@ -1213,14 +1316,15 @@ print $0 close(POPService) @} +@c endfile @end example @cindex RFC 1939 -@cindex record separators, POP and -@cindex @code{RS} variable, POP and -@cindex @code{ORS} variable, POP and +@cindex record separators @subentry POP and +@cindex @code{RS} variable @subentry POP and +@cindex @code{ORS} variable @subentry POP and @cindex POP (Post Office Protocol) -The record separators @code{RS} and @code{ORS} are redefined because the +We redefine the record separators @code{RS} and @code{ORS} because the protocol (POP) requires CR-LF to separate lines. After identifying yourself to the email service, the command @samp{retr 1} instructs the service to send the first of all your email messages in line. If the service @@ -1238,7 +1342,7 @@ @section Reading a Web Page @cindex web pages @cindex HTTP (Hypertext Transfer Protocol) -@cindex Hypertext Transfer Protocol, See HTTP +@cindex Hypertext Transfer Protocol @seeentry{HTTP} @cindex RFC 2068 @cindex RFC 2616 @@ -1268,10 +1372,10 @@ @end example @cindex RFC 1945 -@cindex record separators, HTTP and -@cindex @code{RS} variable, HTTP and -@cindex @code{ORS} variable, HTTP and -@cindex HTTP (Hypertext Transfer Protocol), record separators and +@cindex record separators @subentry HTTP and +@cindex @code{RS} variable @subentry HTTP and +@cindex @code{ORS} variable @subentry HTTP and +@cindex HTTP (Hypertext Transfer Protocol) @subentry record separators and @cindex HTML (Hypertext Markup Language) @cindex Hypertext Markup Language (HTML) Again, lines are separated by a redefined @code{RS} and @code{ORS}. @@ -1283,7 +1387,18 @@ @code{POST}. The current version of HTTP is 1.1,@footnote{Version 1.0 of HTTP was defined in RFC 1945. HTTP 1.1 was initially specified in RFC 2068. In June 1999, RFC 2068 was made obsolete by RFC 2616, an update -without any substantial changes.} and knows the additional request +without any substantial changes.}@footnote{@uref{https://en.wikipedia.org/wiki/HTTP/2, +Version 2.0 of HTTP} +was defined in +@uref{https://tools.ietf.org/html/rfc7540,RFC7540} +and was derived from Google's +@uref{https://en.wikipedia.org/wiki/SPDY,SPDY} +protocol. It is said to be widely supported. As of 2020 the most popular +web sites still identify themselves as supporting HTTP/1.1. +@uref{https://en.wikipedia.org/wiki/HTTP/3, Version 3.0 of HTTP} +is still a draft and was derived from Google's +@uref{https://en.wikipedia.org/wiki/QUIC,QUIC} protocol.} +and knows the additional request methods @code{OPTIONS}, @code{PUT}, @code{DELETE}, and @code{TRACE}. You can fill in any valid web address, and the program prints the HTML code of that page to your screen. @@ -1294,17 +1409,17 @@ have the same form as in POP. There is the name of a parameter, then a colon, and finally the value of that parameter. -@cindex CGI (Common Gateway Interface), dynamic web pages and -@cindex Common Gateway Interface, See CGI +@cindex CGI (Common Gateway Interface) @subentry dynamic web pages and +@cindex Common Gateway Interface @seeentry{CGI} @cindex GIF image format @cindex PNG image format -@cindex images, retrieving over networks +@cindex images @subentry retrieving over networks Images (@file{.png} or @file{.gif} files) can also be retrieved this way, but then you get binary data that should be redirected into a file. Another application is calling a CGI (Common Gateway Interface) script on some server. CGI scripts are used when the contents of a web page are not -constant, but generated instantly at the moment you send a request +constant, but generated on demand at the moment you send a request for the page. For example, to get a detailed report about the current quotes of Motorola stock shares, call a CGI script at Yahoo! with the following: @@ -1318,7 +1433,6 @@ @node Primitive Service, Interacting Service, Web page, Using Networking @section A Primitive Web Service -@c STARTOFRANGE webser @cindex web service Now we know enough about HTTP to set up a primitive web service that just says @code{"Hello, world"} when someone connects to it with a browser. @@ -1344,8 +1458,8 @@ body of the message. This was not necessary earlier because both parties knew that the document ended when the connection closed. Nowadays it is possible to stay connected after the transmission of one web page. -This is to avoid the network traffic necessary for repeatedly establishing -TCP connections for requesting several images. Thus, there is the need to tell +This avoids the network traffic necessary for repeatedly establishing +TCP connections for requesting several images. Thus, it is necessary to tell the receiving party how many bytes will be sent. The header is terminated as usual with an empty line. @@ -1386,11 +1500,11 @@ @node Interacting Service, Simple Server, Primitive Service, Using Networking @section A Web Service with Interaction -@cindex @command{gawk}, web and, See web service -@cindex web browsers, See web service +@cindex @command{gawk} @subentry web and @seeentry{web service} +@cindex web browsers, @seeentry{web service} @c comma is part of primary @cindex HTTP server, core logic -@cindex servers, HTTP +@cindex servers @subentry HTTP @ifinfo This node shows how to set up a simple web server. The subnode is a library file that we will use with all the examples in @@ -1409,8 +1523,7 @@ Each HTTP event that the user triggers by some action within the browser is received in this central procedure. Parameters and menu choices are extracted from this request, and an appropriate measure is taken according to -the user's choice. -For example: +the user's choice: @cindex HTTP server, core logic @example @@ -1470,7 +1583,7 @@ HTML content of the web pages to refer to the home system. Each server that is built around this core has to initialize some -application-dependent variables (such as the default home page) in a procedure +application-dependent variables (such as the default home page) in a function @code{SetUpServer()}, which is called immediately before entering the infinite loop of the server. For now, we will write an instance that initiates a trivial interaction. With this home page, the client user @@ -1499,8 +1612,10 @@ @cindex RFC 2068 It does so by printing the HTTP header into the network connection (@samp{print @dots{} |& HttpService}). This command blocks execution of -the server script until a client connects. If this server -script is compared with the primitive one we wrote before, you will notice +the server script until a client connects. + +If you compare this server +script with the primitive one we wrote before, you will notice two additional lines in the header. The first instructs the browser to close the connection after each request. The second tells the browser that it should never try to @emph{remember} earlier requests @@ -1593,8 +1708,8 @@ Then let your browser point to @uref{http://localhost:8080}. @cindex XBM image format -@cindex images, in web pages -@cindex web pages, images in +@cindex images @subentry in web pages +@cindex web pages @subentry images in @cindex GNUPlot utility It is also possible to include images into the HTML pages. Most browsers support the not very well-known @@ -1610,12 +1725,10 @@ @quotation @i{HTTP is like being married: you have to be able to handle whatever you're given, while being very careful what you send back.}@* -Phil Smith III,@* -@uref{http://www.netfunny.com/rhf/jokes/99/Mar/http.html} +@author Phil Smith III,@* @uref{http://www.netfunny.com/rhf/jokes/99/Mar/http.html} @end quotation -@c STARTOFRANGE cgilib -@cindex CGI (Common Gateway Interface), library +@cindex CGI (Common Gateway Interface) @subentry library In @ref{Interacting Service, ,A Web Service with Interaction}, we saw the function @code{CGI_setup()} as part of the web server ``core logic'' framework. The code presented there handles almost @@ -1626,7 +1739,7 @@ decoded. Following is a simple library to perform these tasks. This code is used for all web server examples -used throughout the rest of this @value{DOCUMENT}. +throughout the rest of this @value{DOCUMENT}. If you want to use it for your own web server, store the source code into a file named @file{inetlib.awk}. Then you can include these functions into your code by placing the following statement @@ -1637,6 +1750,7 @@ @@include inetlib.awk @end example +@c FIXME: Needs revising, now that gawk has @include @noindent But beware, this mechanism is only possible if you invoke your web server script with @command{igawk} @@ -1711,7 +1825,7 @@ @} @} -function CGI_setup( method, uri, version, i) +function CGI_setup(method, uri, version, i) @{ delete GETARG delete MENU @@ -1804,6 +1918,7 @@ @c endfile @end example +@c FIXME: Rerun to make sure still correct And this is the result when we run it: @c artificial line wrap in last output line @@ -1829,10 +1944,8 @@ @node Simple Server, Caveats, Interacting Service, Using Networking @section A Simple Web Server -@c STARTOFRANGE webserx @cindex web servers -@c STARTOFRANGE serweb -@cindex servers, web +@cindex servers @subentry web In the preceding @value{SECTION}, we built the core logic for event-driven GUIs. In this @value{SECTION}, we finally extend the core to a real application. No one would actually write a commercial web server in @command{gawk}, but @@ -1878,6 +1991,7 @@ The only changes needed to do so are hidden in the functions @code{SetUpServer()} and @code{HandleGET()}. Perhaps it might be necessary to implement other HTTP methods. +@c FIXME: @include? The @command{igawk} program that comes with @command{gawk} may be useful for this process. @@ -1889,7 +2003,7 @@ The function @code{HandleGET()} is a nested case selection that decides which page the user wants to see next. Each nesting level refers to a menu -level of the GUI. Each case implements a certain action of the menu. On the +level of the GUI. Each case implements a certain action of the menu. At the deepest level of case selection, the handler essentially knows what the user wants and stores the answer into the variable that holds the HTML page contents: @@ -1929,7 +2043,7 @@ Now we are down to the heart of ELIZA, so you can see how it works. Initially the user does not say anything; then ELIZA resets its money -counter and asks the user to tell what comes to mind open heartedly. +counter and asks the user to tell what comes to mind open-heartedly. The subsequent answers are converted to uppercase characters and stored for later comparison. ELIZA presents the bill when being confronted with a sentence that contains the phrase ``shut up.'' Otherwise, it looks for @@ -2197,17 +2311,20 @@ @cindex Humphrys, Mark @cindex ELIZA program Some interesting remarks and details (including the original source code -of ELIZA) are found on Mark Humphrys' home page. Yahoo! also has a -page with a collection of ELIZA-like programs. Many of them are written -in Java, some of them disclosing the Java source code, and a few even -explain how to modify the Java source code. +of ELIZA) are found on Mark Humphrys's home page +@uref{https://computing.dcu.ie/~humphrys/eliza.html, +@cite{How my program passed the Turing Test}}. +Wikipedia provides much background information about +@uref{https://en.wikipedia.org/wiki/ELIZA, ELIZA}, +including the original design of the software and +its early implementations. @node Caveats, Challenges, Simple Server, Using Networking @section Network Programming Caveats -@cindex networks, @command{gawk} and, troubleshooting -@cindex @command{gawk}, networking, troubleshooting -@cindex troubleshooting, @command{gawk}, networks +@cindex networks @subentry @command{gawk} and @subentry troubleshooting +@cindex @command{gawk} @subentry networking @subentry troubleshooting +@cindex troubleshooting @subentry @command{gawk}, networks By now it should be clear that debugging a networked application is more complicated than debugging a single-process single-hosted application. @@ -2226,7 +2343,7 @@ The state of the party at the other end @end itemize -@cindex troubleshooting, networks, timeouts +@cindex troubleshooting @subentry networks @subentry timeouts The most difficult problems for a beginner arise from the hidden states of the underlying network. After closing a TCP connection, it's often necessary to wait a short while before reopening the connection. Even more difficult is the @@ -2234,7 +2351,7 @@ Those connections have to ``time out'' for a minute or so before they can reopen. Check this with the command @samp{netstat -a}, which -provides a list of still ``active'' connections. +provides a list of still-active connections. @node Challenges, , Caveats, Using Networking @section Where To Go From Here @@ -2393,7 +2510,7 @@ @chapter Some Applications and Techniques In this @value{CHAPTER}, we look at a number of self-contained scripts, with an emphasis on concise networking. Along the way, we -work towards creating building blocks that encapsulate often needed +work towards creating building blocks that encapsulate often-needed functions of the networking world, show new techniques that broaden the scope of problems that can be solved with @command{gawk}, and explore leading edge technology that may shape the future of networking. @@ -2411,12 +2528,13 @@ accepted standard for GUIs: the web browser. Now, @command{gawk} can rival even Tcl/Tk. -@cindex Tcl/Tk, @command{gawk} and -Tcl and @command{gawk} have much in common. Both are simple scripting languages -that allow us to quickly solve problems with short programs. But Tcl has Tk -on top of it, and @command{gawk} had nothing comparable up to now. While Tcl -needs a large and ever-changing library (Tk, which was bound to the X Window -System until recently), @command{gawk} needs just the networking interface +@cindex Tcl/Tk @subentry @command{gawk} and +Tcl and @command{gawk} have much in common. Both are simple scripting +languages that allow us to quickly solve problems with short programs. But +Tcl has Tk on top of it, and @command{gawk} had nothing comparable up +to now. While Tcl needs a large and ever-changing library (Tk, which was +originally bound to the X Window System), @command{gawk} needs just the +networking interface and some kind of browser on the client's side. Besides better portability, the most important advantage of this approach (embracing well-established standards such HTTP and HTML) is that @emph{we do not need to change the @@ -2439,7 +2557,7 @@ @node PANIC, GETURL, Some Applications and Techniques, Some Applications and Techniques @section PANIC: An Emergency Web Server @cindex PANIC program -@cindex networks, See Also web pages +@cindex networks @seealso{web pages} @cindex web service At first glance, the @code{"Hello, world"} example in @ref{Primitive Service, ,A Primitive Web Service}, @@ -2450,11 +2568,11 @@ if customers get a strange ``network unreachable'' message, or a short message telling them that the server has a problem. In such an emergency, the hard disk and everything on it (including the regular web service) may -be unavailable. Rebooting the web server off a diskette makes sense in this +be unavailable. Rebooting the web server off a USB drive makes sense in this setting. To use the PANIC program as an emergency web server, all you need are the -@command{gawk} executable and the program below on a diskette. By default, +@command{gawk} executable and the program below on a USB drive. By default, it connects to port 8080. A different value may be supplied on the command line: @@ -2484,7 +2602,7 @@ @node GETURL, REMCONF, PANIC, Some Applications and Techniques @section GETURL: Retrieving Web Pages @cindex GETURL program -@cindex web pages, retrieving +@cindex web pages @subentry retrieving GETURL is a versatile building block for shell scripts that need to retrieve files from the Internet. It takes a web address as a command-line parameter and tries to retrieve the contents of this address. The contents are printed @@ -2494,7 +2612,7 @@ browser could be written around GETURL. But more interestingly, web robots are straightforward to write on top of GETURL. On the Internet, you can find several programs of the same name that do the same job. They are usually -much more complex internally and at least 10 times longer. +much more complex internally and at least 10 times as big. At first, GETURL checks if it was called with exactly one web address. Then, it checks if the user chose to use a special proxy server whose name @@ -2750,11 +2868,11 @@ Another thing that may look strange is the way GETURL is called. Before calling GETURL, we have to check if the proxy variables need to be passed on. If so, we prepare strings that will become part -of the command line later. In @code{GetHeader()}, we store these strings +of the command line later. In @code{GetHeader}, we store these strings together with the longest part of the command line. Later, in the loop -over the URLs, @code{GetHeader()} is appended with the URL and a redirection +over the URLs, @code{GetHeader} is appended with the URL and a redirection operator to form the command that reads the URL's header over the Internet. -GETURL always produces the headers over @file{/dev/stderr}. That is +GETURL always sends the headers to @file{/dev/stderr}. That is the reason why we need the redirection operator to have the header piped in. @@ -2794,8 +2912,8 @@ However, it is straightforward to add them, if doing so is necessary for other tasks. This program reads an HTML file and prints all the HTTP links that it finds. -It relies on @command{gawk}'s ability to use regular expressions as record -separators. With @code{RS} set to a regular expression that matches links, +It relies on @command{gawk}'s ability to use regular expressions as the record +separator. With @code{RS} set to a regular expression that matches links, the second action is executed each time a non-empty link is found. We can find the matching link itself in @code{RT}. @@ -2805,7 +2923,7 @@ for execution. This way it is possible to first extract the links, wrap shell commands around them, and pipe all the shell commands into a file. After editing the file, execution of the file retrieves -exactly those files that we really need. In case we do not want to edit, +only those files that we really need. In case we do not want to edit, we can retrieve all the pages like this: @smallexample @@ -2884,9 +3002,8 @@ @cindex PNG image format @cindex PS image format @cindex Boutell, Thomas -@iftex @image{statist,3in} -@end iftex + In the HTTP server examples we've shown thus far, we never present an image to the browser and its user. Presenting images is one task. Generating images that reflect some user input and presenting these dynamically @@ -2896,12 +3013,13 @@ installation of GNUPlot disables the generation of @file{.gif} files. If your installed version does not accept @samp{set term gif}, just download and install the most recent version of GNUPlot and the -@uref{http://www.boutell.com/gd/, GD library} +@uref{https://libgd.github.io/, GD library} by Thomas Boutell. Otherwise you still have the chance to generate some ASCII-art style images with GNUPlot by using @samp{set term dumb}. (We tried it and it worked.)} +@cindex Numerical Recipes The program we develop takes the statistical parameters of two samples and computes the t-test statistics. As a result, we get the probabilities that the means and the variances of both samples are the same. In order to @@ -2915,7 +3033,6 @@ sophisticated calculator. The comparison of means is done as in @code{tutest}, paragraph 14.2, page 613, and the comparison of variances is done as in @code{ftest}, page 611 in @cite{Numerical Recipes}. -@cindex Numerical Recipes As usual, we take the site-independent code for servers and append our own functions @code{SetUpServer()} and @code{HandleGET()}: @@ -3064,7 +3181,7 @@ Most of the work is done in the second menu choice. It starts with a strange JavaScript code snippet. When first implementing this server, -we used a short @code{@w{""} here. But then +we used a short @samp{@w{""} here. But then browsers got smarter and tried to improve on speed by requesting the image and the HTML code at the same time. When doing this, the browser tries to build up a connection for the image request while the request for @@ -3129,7 +3246,7 @@ It is probably better not to mix up so many different languages. The result is not very readable. Furthermore, the statistical part of the server does not take care of invalid input. -Among others, using negative variances will cause invalid results. +Among others, using negative variances causes invalid results. @node MAZE, MOBAGWHO, STATIST, Some Applications and Techniques @section MAZE: Walking Through a Maze In Virtual Reality @@ -3139,11 +3256,11 @@ @quotation @cindex Perlis, Alan @i{In the long run, every program becomes rococo, and then rubble.}@* -Alan Perlis +@author Alan Perlis @end quotation By now, we know how to present arbitrary @samp{Content-type}s to a browser. -In this @value{SECTION}, our server will present a 3D world to our browser. +In this @value{SECTION}, our server presents a 3D world to our browser. The 3D world is described in a scene description language (VRML, Virtual Reality Modeling Language) that allows us to travel through a perspective view of a 2D maze with our browser. Browsers with a @@ -3154,7 +3271,7 @@ any VRML code, have a look at the VRML FAQ. Presenting a static VRML scene is a bit trivial; in order to expose -@command{gawk}'s new capabilities, we will present a dynamically generated +@command{gawk}'s capabilities, we will present a dynamically generated VRML scene. The function @code{SetUpServer()} is very simple because it only sets the default HTML page and initializes the random number generator. As usual, the surrounding server lets you browse the maze. @@ -3289,8 +3406,8 @@ @i{There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious -deficiencies.} @* -C. A. R. Hoare +deficiencies.} +@author C.A.R.@: Hoare @end quotation A @dfn{mobile agent} is a program that can be dispatched from a computer and @@ -3304,7 +3421,7 @@ of our work. Mobile agents could become the mediators between users and the networking world. For an unbiased view at this technology, see the remarkable paper @cite{Mobile Agents: Are they a good -idea?}.@footnote{@uref{http://www.research.ibm.com/massive/mobag.ps}} +idea?}.@footnote{@uref{https://link.springer.com/chapter/10.1007/3-540-62852-5_4}} When trying to migrate a process from one system to another, a server process is needed on the receiving side. Depending on the kind @@ -3343,9 +3460,7 @@ Our agent example abuses a common web server as a migration tool. So, it needs a universal CGI script on the receiving side (the web server). The receiving script is activated with a @code{POST} request when placed into a location like -@file{/httpd/cgi-bin/PostAgent.sh}. Make sure that the server system uses a -version of @command{gawk} that supports network access (Version 3.1 or later; -verify with @samp{gawk --version}). +@file{/httpd/cgi-bin/PostAgent.sh}. @example @c file eg/network/PostAgent.sh @@ -3495,7 +3610,7 @@ a framework for mobile agents is that it does not suffice to migrate the code. It is also necessary to migrate the state of execution of the agent. In contrast to @cite{Agent Tcl}, this program does not try to migrate the complete set -of variables. The following conventions are used: +of variables. The following conventions apply: @itemize @bullet @item @@ -3514,7 +3629,7 @@ Now it's clear what happens to the @code{Label} parameter of the function @code{migrate()}. It is copied into @code{MOBVAR["Label"]} and -travels alongside the other data. Since travelling takes place via HTTP, +travels alongside the other data. Since traveling takes place via HTTP, records must be separated with @code{"\r\n"} in @code{RS} and @code{ORS} as usual. The code assembly for migration takes place in three steps: @@ -3535,7 +3650,7 @@ @end itemize The application-independent framework is now almost complete. What follows -is the @code{END} pattern that is executed when the mobile agent has +is the @code{END} pattern which executes when the mobile agent has finished reading its own code. First, it checks whether it is already running on a remote host or not. In case initialization has not yet taken place, it starts @code{MyInit()}. Otherwise (later, on a remote host), it @@ -3607,9 +3722,10 @@ result string, and reading line by line who is logged in on this host. A very annoying circumstance is the fact that the elements of @code{MOBVAR} cannot hold the newline character (@code{"\n"}). If they -did, migration of this string did not work because the string didn't +did, migration of this string would not work because the string wouldn't obey the syntax rule for a string in @command{gawk}. @code{SUBSEP} is used as a temporary replacement. + If the list of hosts to visit holds at least one more entry, the agent migrates to that place to go on working there. Otherwise, we replace the @code{SUBSEP}s @@ -3635,7 +3751,7 @@ largely concerned with the movements of small green pieces of paper, which is odd because it wasn't the small green pieces of paper that were unhappy.} @* -Douglas Adams, @cite{The Hitch Hiker's Guide to the Galaxy} +@author Douglas Adams, @cite{The Hitch Hiker's Guide to the Galaxy} @end quotation @cindex @command{cron} utility @@ -3646,7 +3762,7 @@ week, twice a day, or just once. The list is entered into a file named @file{crontab}. For example, to distribute a newsletter on a daily basis this way, use @command{cron} for calling a script each day early -in the morning. +in the morning: @example # run at 8 am on weekdays, distribute the newsletter @@ -3899,7 +4015,7 @@ At this point the hard work has been done: the array @code{predict} contains the predictions for all the ticker symbols. It is up to the -function @code{Report()} to find some nice words to introduce the +function @code{Report()} to find some nice words to present the desired information. @smallexample @@ -3941,7 +4057,7 @@ @end smallexample The function @code{SendMail()} goes through the list of customers and opens -a pipe to the @code{mail} command for each of them. Each one receives an +a pipe to the @command{mail} command for each of them. Each one receives an email message with a proper subject heading and is addressed with his full name. @smallexample @@ -3981,8 +4097,11 @@ @cindex BLAST, Basic Local Alignment Search Tool @cindex Hoare, C.A.R. @quotation -@i{Hoare's Law of Large Problems: Inside every large problem is a small - problem struggling to get out.} +@i{Inside every large problem is a small +problem struggling to get out.}@footnote{What C.A.R.@: Hoare +actually said was ``Inside every large program is a +small program struggling to get out.''} +@author With apologies to C.A.R.@: Hoare @end quotation Yahoo's database of stock market data is just one among the many large @@ -4001,7 +4120,9 @@ appearance (the sequence) of nucleotides which contains the information about the substance to be produced. Scientists in biotechnology often find a specific fragment, determine the nucleotide sequence, and need -to know where the sequence at hand comes from. This is where the large +to know where the sequence at hand comes from. + +This is where the large databases enter the game. At NCBI, databases store the knowledge about which sequences have ever been found and where they have been found. When the scientist sends his sequence to the BLAST service, the server @@ -4012,6 +4133,7 @@ their database service through popular Internet protocols. There are four basic ways to use the so-called BLAST services: +@c FIXME: Is all of this still true? @itemize @bullet @item The easiest way to use BLAST is through the web. Users may simply point @@ -4077,7 +4199,7 @@ @end example Now you know the alphabet of nucleotide sequences. The last two lines -of the following example query show you such a sequence, which is obviously +of the following example query show such a sequence, which is obviously made up only of elements of the alphabet just described. Store this example query into a file named @file{protbase.request}. You are now ready to send it to the server with the demonstration client. @@ -4261,7 +4383,7 @@ on the Internet. @item -While Waterman's book can explain to you the algorithms employed internally +While Waterman's book explains the algorithms employed internally in the database search engines, most practitioners prefer to approach the subject differently. The applied side of Computational Biology is called Bioinformatics, and emphasizes the tools available for day-to-day @@ -4273,20 +4395,20 @@ The sequences @emph{gawk} and @emph{gnuawk} are in widespread use in the genetic material of virtually every earthly living being. Let us take this as a clear indication that the divine creator has intended -@command{gawk} to prevail over other scripting languages such as @command{perl}, -@command{tcl}, or @command{python} which are not even proper sequences. (:-) +@command{gawk} to prevail over other scripting languages such as @samp{perl}, +@samp{tcl}, or @samp{python} which are not even proper sequences. (:-) @end enumerate @node Links, GNU Free Documentation License, Some Applications and Techniques, Top @chapter Related Links -This section lists the URLs for various items discussed in this @value{CHAPTER}. +This section lists the URLs for various items discussed in this @value{DOCUMENT}. They are presented in the order in which they appear. @table @asis @item @cite{Internet Programming with Python} -@uref{http://www.fsbassociates.com/books/python.htm} +@uref{http://cewing.github.io/training.python_web/html/index.html} @item @cite{Advanced Perl Programming} @uref{http://www.oreilly.com/catalog/advperl} @@ -4295,73 +4417,59 @@ @uref{http://www.oreilly.com/catalog/webclient} @item Richard Stevens's home page and book -@uref{http://www.kohala.com/~rstevens} - -@item The SPAK home page -@uref{http://www.userfriendly.net/linux/RPM/contrib/libc6/i386/spak-0.6b-1.i386.html} +@uref{http://www.kohala.com/start} @item Volume III of @cite{Internetworking with TCP/IP}, by Comer and Stevens @uref{http://www.cs.purdue.edu/homes/dec/tcpip3s.cont.html} @item XBM Graphics File Format -@uref{http://www.wotsit.org/download.asp?f=xbm} +@uref{https://en.wikipedia.org/wiki/X_BitMap} @item GNUPlot -@uref{http://www.cs.dartmouth.edu/gnuplot_info.html} +@uref{http://www.gnuplot.info} @item Mark Humphrys' Eliza page -@uref{http://www.compapp.dcu.ie/~humphrys/eliza.html} - -@item Yahoo! Eliza Information -@uref{http://dir.yahoo.com/Recreation/Games/Computer_Games/Internet_Games/Web_Games/Artificial_Intelligence} +@uref{https://computing.dcu.ie/~humphrys/eliza.html} -@item Java versions of Eliza -@uref{http://www.tjhsst.edu/Psych/ch1/eliza.html} +@item Eliza on Wikipedia +@uref{https://en.wikipedia.org/wiki/ELIZA} @item Java versions of Eliza with source code -@uref{http://home.adelphia.net/~lifeisgood/eliza/eliza.htm} - -@item Eliza Programs with Explanations -@uref{http://chayden.net/chayden/eliza/Eliza.shtml} +@uref{https://github.com/codeanticode/eliza} @item Loebner Contest -@uref{http://acm.org/~loebner/loebner-prize.htmlx} +@uref{https://www.ocf.berkeley.edu/~arihuang/academic/research/loebner.html} @item Tck/Tk Information -@uref{http://www.scriptics.com/} +@uref{https://en.wikipedia.org/wiki/Tcl} @item Intel 80x86 Processors -@uref{http://developer.intel.com/design/platform/embedpc/what_is.htm} +@item Embedded PCs +@uref{https://en.wikipedia.org/wiki/Embedded_system} @item AMD Elan Processors -@uref{http://www.amd.com/products/epd/processors/4.32bitcont/32bitcont/index.html} +@uref{https://en.wikipedia.org/wiki/Am5x86} @item XINU -@uref{http://willow.canberra.edu.au/~chrisc/xinu.html } +@uref{https://xinu.cs.purdue.edu} @item GNU/Linux -@uref{http://uclinux.lineo.com/} - -@item Embedded PCs -@uref{http://dir.yahoo.com/Business_and_Economy/Business_to_Business/Computers/Hardware/Embedded_Control/} +@uref{https://en.wikipedia.org/wiki/GNU/Linux_naming_controversy} @item MiniSQL -@uref{http://www.hughes.com.au/library/} +@uref{https://hughestech.com.au/products/msql} @item Market Share Surveys @uref{http://www.netcraft.com/survey} @item @cite{Numerical Recipes in C: The Art of Scientific Computing} -@uref{http://www.nr.com} +@uref{http://numerical.recipes/} @item VRML -@uref{http://www.vrml.org} - -@item The VRML FAQ -@uref{http://www.vrml.org/technicalinfo/specifications/specifications.htm#FAQ} +@uref{https://en.wikipedia.org/wiki/VRML} @item The UMBC Agent Web -@uref{http://www.cs.umbc.edu/agents } +@uref{https://agents.umbc.edu} @item Apache Web Server @uref{http://www.apache.org} @@ -4370,34 +4478,31 @@ @uref{http://www.ncbi.nlm.nih.gov} @item Basic Local Alignment Search Tool (BLAST) -@uref{http://www.ncbi.nlm.nih.gov/BLAST/blast_overview.html} - -@item NCBI Home Page -@uref{http://www.ncbi.nlm.nih.gov} +@uref{https://www.nature.com/scitable/topicpage/basic-local-alignment-search-tool-blast-29096} @item BLAST Pages @uref{http://www.ncbi.nlm.nih.gov/BLAST} @item BLAST Demonstration Client -@uref{ftp://ncbi.nlm.nih.gov/blast/blasturl/} +@uref{http://www.genebee.msu.su/blast/blast_overview.html#Network} @item BLAST anonymous FTP location -@uref{ftp://ncbi.nlm.nih.gov/blast/network/netblast/} +@uref{https://www.ncbi.nlm.nih.gov/books/NBK62345/} @item BLAST 2.0 Executables -@uref{ftp://ncbi.nlm.nih.gov/blast/executables/} +@uref{ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST} @item IUB/IUPAC Amino Acid and Nucleic Acid Codes -@uref{http://www.uthscsa.edu/geninfo/blastmail.html#item6} +@uref{https://en.wikipedia.org/wiki/Nucleic_acid_notation} @item FASTA/Pearson Format -@uref{http://www.ncbi.nlm.nih.gov/BLAST/fasta.html} +@uref{https://de.wikipedia.org/wiki/FASTA-Format} @item Fasta/Pearson Sequence in Java @uref{http://www.kazusa.or.jp/java/codon_table_java/} @item Book Review of @cite{Introduction to Computational Biology} -@uref{http://www.acm.org/crossroads/xrds5-1/introcb.html} +@uref{https://dl.acm.org/doi/abs/10.1145/332925.332927} @item @cite{Developing Bioinformatics Computer Skills} @uref{http://www.oreilly.com/catalog/bioskills/} @@ -4930,4 +5035,4 @@ 3. HTTP method names are in @code. 4. Protocols such as echo, ftp, etc are in @samp. 5. URLs are in @url. -6. All RFCs in the index. Put a space between `RFC' and the number. +6. All RFCs are in the index. Put a space between `RFC' and the number. diff -urN gawk-5.1.0/doc/gawk.texi gawk-5.1.1/doc/gawk.texi --- gawk-5.1.0/doc/gawk.texi 2020-04-14 14:44:19.000000000 +0300 +++ gawk-5.1.1/doc/gawk.texi 2021-10-28 19:48:29.000000000 +0300 @@ -59,11 +59,12 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH March, 2020 +@set UPDATE-MONTH October, 2021 @set VERSION 5.1 -@set PATCHLEVEL 0 +@set PATCHLEVEL 1 @set GAWKINETTITLE TCP/IP Internetworking with @command{gawk} +@set GAWKWORKFLOWTITLE Participating in @command{gawk} Development @ifset FOR_PRINT @set TITLE Effective awk Programming @end ifset @@ -285,13 +286,13 @@ Email: gnu@@gnu.org URL: https://www.gnu.org/ -Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2020 +Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2021 Free Software Foundation, Inc. All Rights Reserved. @end docbook @ifnotdocbook -Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2020 @* +Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2021 @* Free Software Foundation, Inc. @end ifnotdocbook @sp 2 @@ -578,6 +579,7 @@ * Fields with fixed data:: Field values with fixed-width data. * Splitting By Content:: Defining Fields By Content * More CSV:: More on CSV files. +* FS versus FPAT:: A subtle difference. * Testing field creation:: Checking how @command{gawk} is splitting records. * Multiple Line:: Reading multiline records. @@ -808,6 +810,8 @@ once. * Shell Quoting:: A function to quote strings for the shell. +* Isnumeric Function:: A function to test whether a value is + numeric. * Data File Management:: Functions for managing command-line data files. * Filetrans Function:: A function for handling data file @@ -835,6 +839,9 @@ * Tee Program:: The @command{tee} utility. * Uniq Program:: The @command{uniq} utility. * Wc Program:: The @command{wc} utility. +* Bytes vs. Characters:: Modern character sets. +* Using extensions:: A brief intro to extensions. +* @command{wc} program:: Code for @file{wc.awk}. * Miscellaneous Programs:: Some interesting @command{awk} programs. * Dupword Program:: Finding duplicated words in a @@ -868,6 +875,8 @@ * TCP/IP Networking:: Using @command{gawk} for network programming. * Profiling:: Profiling your @command{awk} programs. +* Extension Philosophy:: What should be built-in and what + should not. * Advanced Features Summary:: Summary of advanced features. * I18N and L10N:: Internationalization and Localization. * Explaining gettext:: How GNU @command{gettext} works. @@ -936,6 +945,7 @@ * General Data Types:: The data types. * Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. +* API Ownership of MPFR and GMP Values:: Managing MPFR and GMP Values. * Registration Functions:: Functions to register things with @command{gawk}. * Extension Functions:: Registering extension functions. @@ -1021,9 +1031,12 @@ * Unix Installation:: Installing @command{gawk} under various versions of Unix. * Quick Installation:: Compiling @command{gawk} under Unix. +* Compiling with MPFR:: Building with MPFR. * Shell Startup Files:: Shell convenience functions. * Additional Configuration Options:: Other compile-time options. * Configuration Philosophy:: How it's all supposed to work. +* Compiling from Git:: Compiling from Git. +* Building the Documentation:: Building the Documentation. * Non-Unix Installation:: Installation on Other Operating Systems. * PC Installation:: Installing and Compiling @@ -1045,11 +1058,13 @@ VMS. * VMS Running:: How to run @command{gawk} under VMS. * VMS GNV:: The VMS GNV Project. -* VMS Old Gawk:: An old version comes with some VMS - systems. * Bugs:: Reporting Problems and Bugs. +* Bug definition:: Defining what is and is not a bug. * Bug address:: Where to send reports to. * Usenet:: Where not to send reports to. +* Performance bugs:: What to do if you think there is a + performance issue. +* Asking for help:: Dealing with non-bug questions. * Maintainers:: Maintainers of non-*nix ports. * Other Versions:: Other freely available @command{awk} implementations. @@ -1928,7 +1943,7 @@ @c fakenode --- for prepinfo @unnumberedsubsec Dark Corners -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @quotation @i{Dark corners are basically fractal---no matter how much you illuminate, there's always a smaller but darker one.} @@ -3251,6 +3266,32 @@ Most of the examples use a @value{DF} named @file{data}. This is just a placeholder; if you use these programs yourself, substitute your own @value{FN}s for @file{data}. + +@cindex @command{ls} utility +Some of the following examples use the output of @w{@samp{ls -l}} as input. +@command{ls} is a system command that gives you a listing of the files in a +directory. With the @option{-l} option, this listing includes each file's +size and the date the file was last modified. Its output looks like this: + +@example +-rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile +-rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h +-rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h +-rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y +-rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c +-rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c +-rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c +-rw-r--r-- 1 arnold user 7989 Nov 7 13:03 awk4.c +@end example + +@noindent +The first field contains read-write permissions, the second field contains +the number of links to the file, and the third field identifies the +file's owner. The fourth field identifies the file's group. The fifth +field contains the file's size in bytes. The sixth, seventh, and eighth +fields contain the month, day, and time, respectively, that the file +was last modified. Finally, the ninth field contains the @value{FN}. + For future reference, note that there is often more than one way to do things in @command{awk}. At some point, you may want to look back at these examples and see if @@ -3431,28 +3472,14 @@ @cindex @command{ls} utility This command prints the total number of bytes in all the files in the current directory that were last modified in November (of any year). -The @w{@samp{ls -l}} part of this example is a system command that gives -you a listing of the files in a directory, including each file's size and the date -the file was last modified. Its output looks like this: - -@example --rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile --rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h --rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h --rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y --rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c --rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c --rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c --rw-r--r-- 1 arnold user 7989 Nov 7 13:03 awk4.c -@end example -@noindent -@cindex line continuations @subentry with C shell -The first field contains read-write permissions, the second field contains -the number of links to the file, and the third field identifies the file's owner. -The fourth field identifies the file's group. -The fifth field contains the file's size in bytes. The -sixth, seventh, and eighth fields contain the month, day, and time, +As a reminder, the output of @w{@samp{ls -l}} gives you a listing of the +files in a directory, including each file's size and the date the file +was last modified. The first field contains read-write permissions, +the second field contains the number of links to the file, and the +third field identifies the file's owner. The fourth field identifies +the file's group. The fifth field contains the file's size in bytes. +The sixth, seventh, and eighth fields contain the month, day, and time, respectively, that the file was last modified. Finally, the ninth field contains the @value{FN}. @@ -3545,6 +3572,7 @@ @c solaris 2.7 nawk does not. Solaris /usr/xpg4/bin/awk does though! sigh. @cindex @command{csh} utility +@cindex line continuations @subentry with C shell @cindex backslash (@code{\}) @subentry continuing lines and @subentry in @command{csh} @cindex @code{\} (backslash) @subentry continuing lines and @subentry in @command{csh} @quotation CAUTION @@ -3672,6 +3700,7 @@ can avoid the (usually lengthy) compilation part of the typical edit-compile-test-debug cycle of software development. +@cindex BWK @command{awk} @seeentry{Brian Kernighan's @command{awk}} @cindex Brian Kernighan's @command{awk} Complex programs have been written in @command{awk}, including a complete retargetable assembler for @@ -3698,7 +3727,6 @@ @node Intro Summary @section Summary -@c FIXME: Review this chapter for summary of builtin functions called. @itemize @value{BULLET} @item Programs in @command{awk} consist of @var{pattern}--@var{action} pairs. @@ -3818,8 +3846,8 @@ keyword is immediately followed by an equals sign (@samp{=}) and the argument's value, or the keyword and the argument's value are separated by whitespace (spaces or TABs). -If a particular option with a value is given more than once, it is the -last value that counts. +If a particular option with a value is given more than once, it is (usually) +the last value that counts. @cindex POSIX @command{awk} @subentry GNU long options and Each long option for @command{gawk} has a corresponding @@ -3833,7 +3861,7 @@ @itemx --field-separator @var{fs} @cindex @option{-F} option @cindex @option{--field-separator} option -@cindex @code{FS} variable @subentry @code{--field-separator} option and +@cindex @code{FS} variable @subentry @option{--field-separator} option and Set the @code{FS} variable to @var{fs} (@pxref{Field Separators}). @@ -4094,6 +4122,18 @@ Files named with @option{-i} are treated as if they had @samp{@@namespace "awk"} at their beginning. @xref{Changing The Namespace}, for more information. +@item @option{-I} +@itemx @option{--trace} +@cindex @option{-I} option +@cindex @option{--trace} option +@cindex trace, internal instructions +@cindex instructions, trace of internal +@cindex op-codes, trace of internal +Print the internal byte code names as they are executed when running +the program. The trace is printed to standard error. Each ``op code'' +is preceded by a @code{+} +sign in the output. + @item @option{-l} @var{ext} @itemx @option{--load} @var{ext} @cindex @option{-l} option @@ -4156,7 +4196,7 @@ @cindex @option{--non-decimal-data} option @cindex hexadecimal values, enabling interpretation of @cindex octal values, enabling interpretation of -@cindex troubleshooting @subentry @code{--non-decimal-data} option +@cindex troubleshooting @subentry @option{--non-decimal-data} option Enable automatic interpretation of octal and hexadecimal values in input data (@pxref{Nondecimal Data}). @@ -4261,8 +4301,8 @@ @c @cindex automatic warnings @c @cindex warnings, automatic -@cindex @option{--traditional} option @subentry @code{--posix} option and -@cindex @option{--posix} option @subentry @code{--traditional} option and +@cindex @option{--traditional} option @subentry @option{--posix} option and +@cindex @option{--posix} option @subentry @option{--traditional} option and If you supply both @option{--traditional} and @option{--posix} on the command line, @option{--posix} takes precedence. @command{gawk} issues a warning if both options are supplied. @@ -4296,7 +4336,7 @@ input redirections with @code{getline}, output redirections with @code{print} and @code{printf}, and dynamic extensions. -Also, disallow adding filenames to @code{ARGV} that were +Also, disallow adding @value{FN}s to @code{ARGV} that were not there when @command{gawk} started running. This is particularly useful when you want to run @command{awk} scripts from questionable sources and need to make sure the scripts @@ -4330,7 +4370,8 @@ even if they start with a minus sign. @end table -As long as program text has been supplied, +In compatibility mode, +as long as program text has been supplied, any other options are flagged as invalid with a warning message but are otherwise ignored. @@ -4425,7 +4466,7 @@ argument that has the form @code{@var{var}=@var{value}}, assigns the value @var{value} to the variable @var{var}---it does not specify a file at all. (See @ref{Assignment Options}.) In the following example, -@var{count=1} is a variable assignment, not a @value{FN}: +@samp{count=1} is a variable assignment, not a @value{FN}: @example awk -f program.awk file1 count=1 file2 @@ -4455,7 +4496,6 @@ including program text and options, available in @code{PROCINFO["argv"]}; @pxref{Auto-set}.) -@c FIXME: One day, move the ARGC and ARGV node closer to here. Changing @code{ARGC} and @code{ARGV} in your @command{awk} program lets you control how @command{awk} processes the input files; this is described in more detail in @ref{ARGC and ARGV}. @@ -4506,6 +4546,80 @@ the value of @code{FS} is not strictly necessary. It remains for historical compatibility. +@cindex sidebar @subentry Quoting Shell Variables On The @command{awk} Command Line +@ifdocbook +@docbook +Quoting Shell Variables On The @command{awk} Command Line +@end docbook + +@cindex quoting @subentry in @command{gawk} command lines +@cindex shell quoting, rules for +@cindex null strings @subentry in @command{gawk} arguments, quoting and + +Small @command{awk} programs are often embedded in larger shell scripts, +so it's worthwhile to understand some shell basics. Consider the following: + +@example +f="" +awk '@{ print("hi") @}' $f +@end example + +In this case, @command{awk} reads from standard input instead of trying +to open any command line files. To the unwary, this looks like @command{awk} +is hanging. + +However @command{awk} doesn't see an explicit empty string. When a +variable expansion is the null string, @emph{and} it's not quoted, +the shell simply removes it from the command line. To demonstrate: + +@example +$ @kbd{f=""} +$ @kbd{awk 'BEGIN @{ print ARGC @}' $f} +@print{} 1 +$ @kbd{awk 'BEGIN @{ print ARGC @}' "$f"} +@print{} 2 +@end example + +@docbook + +@end docbook +@end ifdocbook + +@ifnotdocbook +@cartouche +@center @b{Quoting Shell Variables On The @command{awk} Command Line} + + +@cindex quoting @subentry in @command{gawk} command lines +@cindex shell quoting, rules for +@cindex null strings @subentry in @command{gawk} arguments, quoting and + +Small @command{awk} programs are often embedded in larger shell scripts, +so it's worthwhile to understand some shell basics. Consider the following: + +@example +f="" +awk '@{ print("hi") @}' $f +@end example + +In this case, @command{awk} reads from standard input instead of trying +to open any command line files. To the unwary, this looks like @command{awk} +is hanging. + +However @command{awk} doesn't see an explicit empty string. When a +variable expansion is the null string, @emph{and} it's not quoted, +the shell simply removes it from the command line. To demonstrate: + +@example +$ @kbd{f=""} +$ @kbd{awk 'BEGIN @{ print ARGC @}' $f} +@print{} 1 +$ @kbd{awk 'BEGIN @{ print ARGC @}' "$f"} +@print{} 2 +@end example +@end cartouche +@end ifnotdocbook + @node Naming Standard Input @section Naming Standard Input @@ -5864,6 +5978,100 @@ plus sign. However, many other versions of @command{awk} treat such a usage as a syntax error. +@cindex sidebar @subentry What About The Empty Regexp? +@ifdocbook +@docbook +What About The Empty Regexp? +@end docbook + +@cindex empty regexps +@cindex regexps, empty +We describe here an advanced regexp usage. Feel free to skip it +upon first reading. + +You can supply an empty regexp constant (@samp{//}) in all places +where a regexp is expected. Is this useful? What does it match? + +It is useful. It matches the (invisible) empty string at the start +and end of a string of characters, as well as the empty string +between characters. This is best illustrated with the @code{gsub()} +function, which makes global substitutions in a string +(@pxref{String Functions}). Normal usage of @code{gsub()} is like +so: + +@example +$ @kbd{awk '} +> @kbd{BEGIN @{} +> @kbd{ x = "ABC_CBA"} +> @kbd{ gsub(/B/, "bb", x)} +> @kbd{ print x} +> @kbd{@}'} +@print{} AbbC_CbbA +@end example + +We can use @code{gsub()} to see where the empty strings +are that match the empty regexp: + +@example +$ @kbd{awk '} +> @kbd{BEGIN @{} +> @kbd{ x = "ABC"} +> @kbd{ gsub(//, "x", x)} +> @kbd{ print x} +> @kbd{@}'} +@print{} xAxBxCx +@end example + +@docbook + +@end docbook +@end ifdocbook + +@ifnotdocbook +@cartouche +@center @b{What About The Empty Regexp?} + + +@cindex empty regexps +@cindex regexps, empty +We describe here an advanced regexp usage. Feel free to skip it +upon first reading. + +You can supply an empty regexp constant (@samp{//}) in all places +where a regexp is expected. Is this useful? What does it match? + +It is useful. It matches the (invisible) empty string at the start +and end of a string of characters, as well as the empty string +between characters. This is best illustrated with the @code{gsub()} +function, which makes global substitutions in a string +(@pxref{String Functions}). Normal usage of @code{gsub()} is like +so: + +@example +$ @kbd{awk '} +> @kbd{BEGIN @{} +> @kbd{ x = "ABC_CBA"} +> @kbd{ gsub(/B/, "bb", x)} +> @kbd{ print x} +> @kbd{@}'} +@print{} AbbC_CbbA +@end example + +We can use @code{gsub()} to see where the empty strings +are that match the empty regexp: + +@example +$ @kbd{awk '} +> @kbd{BEGIN @{} +> @kbd{ x = "ABC"} +> @kbd{ gsub(//, "x", x)} +> @kbd{ print x} +> @kbd{@}'} +@print{} xAxBxCx +@end example +@end cartouche +@end ifnotdocbook + @node Interval Expressions @subsection Some Notes On Interval Expressions @@ -5890,17 +6098,37 @@ any version of @command{awk}.@footnote{Use two backslashes if you're using a string constant with a regexp operator or function.} -Finally, when @samp{@{} and @samp{@}} appear in regexp constants +When @samp{@{} and @samp{@}} appear in regexp constants in a way that cannot be interpreted as an interval expression (such as @code{/q@{a@}/}), then they stand for themselves. As mentioned, interval expressions were not traditionally available in @command{awk}. In March of 2019, BWK @command{awk} (finally) acquired them. - Nonetheless, because they were not available for so many decades, @command{gawk} continues to not supply them when in compatibility mode (@pxref{Options}). +POSIX says that interval expressions containing repetition counts greater +than 255 produce unspecified results. + +@cindex Eggert, Paul +In the manual for GNU @command{grep}, Paul Eggert notes the following: + +@quotation +Interval expressions may be implemented internally via repetition. +For example, @samp{^(a|bc)@{2,4@}$} might be implemented as +@samp{^(a|bc)(a|bc)((a|bc)(a|bc)?)?$}. A large repetition count may +exhaust memory or greatly slow matching. Even small counts can cause +problems if cascaded; for example, @samp{grep -E +".*@{10,@}@{10,@}@{10,@}@{10,@}@{10,@}"} is likely to overflow a +stack. Fortunately, regular expressions like these are typically +artificial, and cascaded repetitions do not conform to POSIX so cannot +be used in portable programs anyway. +@end quotation + +@noindent +This same caveat applies to @command{gawk}. + @node Bracket Expressions @section Using Bracket Expressions @cindex bracket expressions @@ -6434,13 +6662,13 @@ @end ifnotdocbook @end ifnottex -@item @code{--posix} +@item @option{--posix} Match only POSIX regexps; the GNU operators are not special (e.g., @samp{\w} matches a literal @samp{w}). Interval expressions are allowed. @cindex Brian Kernighan's @command{awk} -@item @code{--traditional} +@item @option{--traditional} Match traditional Unix @command{awk} regexps. The GNU operators are not special, and interval expressions are not available. Because BWK @command{awk} supports them, @@ -6448,7 +6676,7 @@ Characters described by octal and hexadecimal escape sequences are treated literally, even if they represent regexp metacharacters. -@item @code{--re-interval} +@item @option{--re-interval} Allow interval expressions in regexps, if @option{--traditional} has been provided. Otherwise, interval expressions are available by default. @@ -6802,22 +7030,6 @@ treated literally. This is required for backwards compatibility with both Unix @command{awk} and with POSIX. -When using regular characters as the record separator, -there is one unusual case that occurs when @command{gawk} is -being fully POSIX-compliant (@pxref{Options}). -Then, the following (extreme) pipeline prints a surprising @samp{1}: - -@example -$ @kbd{echo | gawk --posix 'BEGIN @{ RS = "a" @} ; @{ print NF @}'} -@print{} 1 -@end example - -There is one field, consisting of a newline. The value of the built-in -variable @code{NF} is the number of fields in the current record. -(In the normal case, @command{gawk} treats the newline as whitespace, -printing @samp{0} as the result. Most other versions of @command{awk} -also act this way.) - @cindex dark corner @subentry input files Reaching the end of an input file terminates the current input record, even if the last character in the file is not the character in @code{RS}. @@ -6908,7 +7120,12 @@ @command{gawk} attempts to avoid this problem, but currently, there's no guarantee that this will never happen. -@quotation NOTE +@cindex sidebar @subentry Caveats When Using Regular Expressions for @code{RS} +@ifdocbook +@docbook +Caveats When Using Regular Expressions for @code{RS} +@end docbook + Remember that in @command{awk}, the @samp{^} and @samp{$} anchor metacharacters match the beginning and end of a @emph{string}, and not the beginning and end of a @emph{line}. As a result, something like @@ -6916,7 +7133,38 @@ This is because @command{gawk} views the input file as one long string that happens to contain newline characters. It is thus best to avoid anchor metacharacters in the value of @code{RS}. -@end quotation + +Record splitting with regular expressions works differently than +regexp matching with the @code{sub()}, @code{gsub()}, and @code{gensub()} +(@pxref{String Functions}). Those functions allow a regexp to match the empty string; +record splitting does not. Thus, for example @samp{RS = "()"} does @emph{not} +split records between characters. + +@docbook + +@end docbook +@end ifdocbook + +@ifnotdocbook +@cartouche +@center @b{Caveats When Using Regular Expressions for @code{RS}} + + +Remember that in @command{awk}, the @samp{^} and @samp{$} anchor +metacharacters match the beginning and end of a @emph{string}, and not +the beginning and end of a @emph{line}. As a result, something like +@samp{RS = "^[[:upper:]]"} can only match at the beginning of a file. +This is because @command{gawk} views the input file as one long string +that happens to contain newline characters. +It is thus best to avoid anchor metacharacters in the value of @code{RS}. + +Record splitting with regular expressions works differently than +regexp matching with the @code{sub()}, @code{gsub()}, and @code{gensub()} +(@pxref{String Functions}). Those functions allow a regexp to match the empty string; +record splitting does not. Thus, for example @samp{RS = "()"} does @emph{not} +split records between characters. +@end cartouche +@end ifnotdocbook @cindex @command{gawk} @subentry @code{RT} variable in @cindex @code{RT} variable @@ -7625,6 +7873,12 @@ @print{} -->C<-- @end example +Finally, field splitting with regular expressions works differently than +regexp matching with the @code{sub()}, @code{gsub()}, and @code{gensub()} +(@pxref{String Functions}). Those functions allow a regexp to match the +empty string; field splitting does not. Thus, for example @samp{FS = +"()"} does @emph{not} split fields between characters. + @node Single Character Fields @subsection Making Each Character a Separate Field @@ -8191,6 +8445,7 @@ @menu * More CSV:: More on CSV files. +* FS versus FPAT:: A subtle difference. @end menu @c O'Reilly doesn't like it as a note the first thing in the section. @@ -8206,6 +8461,8 @@ However, there are times when you really want to define the fields by what they are, and not by what they are not. +@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT} +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} The most notorious such case is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet programs, for example, can export their data into text files, where each record is @@ -8307,10 +8564,14 @@ FPAT = "([^,]*)|(\"[^\"]+\")" @end example -@c FIXME: 4/2015 +@c 4/2015: @c Consider use of FPAT = "([^,]*)|(\"[^\"]*\")" @c (star in latter part of value) to allow quoted strings to be empty. @c Per email from Ed Morton +@c +@c WONTFIX: 10/2020 +@c This is too much work. FPAT and CSV files are very flaky and +@c fragile. Doing something like this is merely inviting trouble. As with @code{FS}, the @code{IGNORECASE} variable (@pxref{User-modified}) affects field splitting with @code{FPAT}. @@ -8385,6 +8646,37 @@ @print{} NF = 3

<> @end example +@cindex Collado, Manuel +@cindex @code{CSVMODE} library for @command{gawk} +@cindex CSV (comma separated values) data @subentry parsing with @code{CSVMODE} library +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} library +In general, using @code{FPAT} to do your own CSV parsing is like having +a bed with a blanket that's not quite big enough. There's always a corner +that isn't covered. We recommend, instead, that you use Manuel Collado's +@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for @command{gawk}}. + +@node FS versus FPAT +@subsection @code{FS} Versus @code{FPAT}: A Subtle Difference + +As we discussed earlier, @code{FS} describes the data between fields (``what fields are not'') +and @code{FPAT} describes the fields themselves (``what fields are''). +This leads to a subtle difference in how fields are found when using regexps as the value +for @code{FS} or @code{FPAT}. + +In order to distinguish one field from another, there must be a non-empty separator between +each field. This makes intuitive sense---otherwise one could not distinguish fields from +separators. + +Thus, regular expression matching as done when splitting fields with @code{FS} is not +allowed to match the null string; it must always match at least one character, in order +to be able to proceed through the entire record. + +On the other hand, regular expression matching with @code{FPAT} can match the null +string, and the non-matching intervening characters function as the separators. + +This same difference is reflected in how matching is done with the @code{split()} +and @code{patsplit()} functions (@pxref{String Functions}). + @node Testing field creation @section Checking How @command{gawk} Is Splitting Records @@ -8908,7 +9200,7 @@ @subsection Using @code{getline} from a Pipe @c From private email, dated October 2, 1988. Used by permission, March 2013. -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @quotation @i{Omniscience has much to recommend it. Failing that, attention to details would be useful.} @@ -11375,7 +11667,7 @@ In POSIX mode (@pxref{Options}), @command{gawk} does not allow escaped newlines. Otherwise, it behaves as just described. -Brian Kernighan's @command{awk} and BusyBox @command{awk} +BWK @command{awk} and BusyBox @command{awk} remove the backslash but leave the newline intact, as part of the string: @@ -11721,12 +12013,26 @@ (@pxref{User-defined}). @item +As the return value of a user-defined function. + +@item On the righthand side of an assignment to a variable: @samp{some_var = @@/foo/}. In this case, the type of @code{some_var} is regexp. Additionally, @code{some_var} can be used with @samp{~} and @samp{!~}, passed to one of the built-in functions listed above, or passed as a parameter to a user-defined function. @end itemize +You may use the @option{-v} option (@pxref{Options}) to assign a +strongly-typed regexp constant to a variable on the command line, like so: + +@example +gawk -v pattern='@@/something(interesting)+/' @dots{} +@end example + +@noindent +You may also make such assignments as regular command-line arguments +(@pxref{Other Arguments}). + You may use the @code{typeof()} built-in function (@pxref{Type Functions}) to determine if a variable or function parameter is @@ -11743,6 +12049,21 @@ to zero. When used in string conversions, they convert to the string value of the original regexp text. +There is an additional, interesting corner case. When used as the third +argument to @code{sub()} or @code{gsub()}, they retain their type. Thus, +if you have something like this: + +@example +re = @/don't panic/ +sub(/don't/, "do", re) +print typeof(re), re +@end example + +@noindent +then @code{re} retains its type, but now attempts to match the string +@samp{do panic}. This provides a (very indirect) way to create regexp-typed +variables at runtime. + @node Variables @subsection Variables @@ -12203,9 +12524,14 @@ -17 % 8 = -1 @end example +@noindent +This definition is compliant with the POSIX standard, which says that the @code{%} +operator produces results equivalent to using the standard C +@code{fmod()} function, and that function in turn works as just +described. + In other @command{awk} implementations, the signedness of the remainder may be machine-dependent. -@c FIXME !!! what does posix say? @cindex portability @subentry @code{**} operator and @cindex @code{*} (asterisk) @subentry @code{**} operator @@ -12218,7 +12544,7 @@ @node Concatenation @subsection String Concatenation -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @quotation @i{It seemed like a good idea at the time.} @author Brian Kernighan @@ -12588,17 +12914,17 @@ @end docbook @cindex dark corner @subentry regexp constants @subentry @code{/=} operator and -@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant -@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant +@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant +@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant @cindex regexp constants @subentry @code{/=@dots{}/} @subentry @code{/=} operator and @c derived from email from "Nelson H. F. Beebe" @c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT) -@cindex dark corner @subentry @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex syntactic ambiguity: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex @code{/=} operator vs. @code{/=@dots{}/} regexp constant +@cindex dark corner @subentry @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex ambiguity, syntactic: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex syntactic ambiguity: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant There is a syntactic ambiguity between the @code{/=} assignment operator and regexp constants whose first character is an @samp{=}. @value{DARKCORNER} @@ -12634,17 +12960,17 @@ @cindex dark corner @subentry regexp constants @subentry @code{/=} operator and -@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant -@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant +@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant +@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant @cindex regexp constants @subentry @code{/=@dots{}/} @subentry @code{/=} operator and @c derived from email from "Nelson H. F. Beebe" @c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT) -@cindex dark corner @subentry @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex syntactic ambiguity: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex @code{/=} operator vs. @code{/=@dots{}/} regexp constant +@cindex dark corner @subentry @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex ambiguity, syntactic: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex syntactic ambiguity: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant There is a syntactic ambiguity between the @code{/=} assignment operator and regexp constants whose first character is an @samp{=}. @value{DARKCORNER} @@ -14422,6 +14748,7 @@ An @command{awk} program may have multiple @code{BEGIN} and/or @code{END} rules. They are executed in the order in which they appear: all the @code{BEGIN} rules at startup and all the @code{END} rules at termination. + @code{BEGIN} and @code{END} rules may be intermixed with other rules. This feature was added in the 1987 version of @command{awk} and is included in the POSIX standard. @@ -14450,7 +14777,7 @@ reading and ignoring input until the end of the file was seen.} However, if an @code{END} rule exists, then the input is read, even if there are no other rules in the program. This is necessary in case the @code{END} -rule checks the @code{FNR} and @code{NR} variables. +rule checks the @code{FNR} and @code{NR} variables, or the fields. @node I/O And BEGIN/END @subsubsection Input/Output from @code{BEGIN} and @code{END} Rules @@ -14478,6 +14805,7 @@ @code{NF} were @emph{undefined} inside an @code{END} rule. The POSIX standard specifies that @code{NF} is available in an @code{END} rule. It contains the number of fields from the last input record. +@c FIXME: Update this if POSIX is ever fixed. Most probably due to an oversight, the standard does not say that @code{$0} is also preserved, although logically one would think that it should be. In fact, all of BWK @command{awk}, @command{mawk}, and @command{gawk} @@ -14489,7 +14817,7 @@ inside a @code{BEGIN} or @code{END} rule is the same as always: @samp{print $0}. If @code{$0} is the null string, then this prints an empty record. Many longtime @command{awk} programmers use an unadorned -@samp{print} in @code{BEGIN} and @code{END} rules, to mean @samp{@w{print ""}}, +@samp{print} in @code{BEGIN} and @code{END} rules to mean @samp{@w{print ""}}, relying on @code{$0} being null. Although one might generally get away with this in @code{BEGIN} rules, it is a very bad idea in @code{END} rules, at least in @command{gawk}. It is also poor style, because if an empty @@ -14533,13 +14861,20 @@ @ifdocbook (see the previous @value{SECTION}), @end ifdocbook -all @code{BEGINFILE} rules in a program are merged, in the order they are -read by @command{gawk}, and all @code{ENDFILE} rules are merged as well. +@code{BEGINFILE} rules in a program execute in the order they are +read by @command{gawk}. Similarly, all @code{ENDFILE} rules also execute in +the order they are read. -The body of the @code{BEGINFILE} rules is executed just before +The bodies of the @code{BEGINFILE} rules execute just before @command{gawk} reads the first record from a file. @code{FILENAME} is set to the name of the current file, and @code{FNR} is set to zero. +Prior to @value{PVERSION} 5.1.1 of @command{gawk}, as an accident of the +implementation, @code{$0} and the fields retained any previous values +they had in @code{BEGINFILE} rules. Starting with @value{PVERSION} +5.1.1, @code{$0} and the fields are cleared, since no record has been +read yet from the file that is about to be processed. + The @code{BEGINFILE} rule provides you the opportunity to accomplish two tasks that would otherwise be difficult or impossible to perform: @@ -14574,7 +14909,7 @@ The @code{ENDFILE} rule is executed even for empty input files. Normally, when an error occurs when reading input in the normal -input-processing loop, the error is fatal. However, if an @code{ENDFILE} +input-processing loop, the error is fatal. However, if a @code{BEGINFILE} rule is present, the error becomes non-fatal, and instead @code{ERRNO} is set. This makes it possible to catch and process I/O errors at the level of the @command{awk} program. @@ -14594,28 +14929,6 @@ In most other @command{awk} implementations, or if @command{gawk} is in compatibility mode (@pxref{Options}), they are not special. -@c FIXME: For 4.2 maybe deal with this? -@ignore -Date: Tue, 17 May 2011 02:06:10 PDT -From: rankin@pactechdata.com (Pat Rankin) -Message-Id: <110517015127.20240f4a@pactechdata.com> -Subject: BEGINFILE -To: arnold@skeeve.com - - The documentation for BEGINFILE states that FNR is 0, which seems -pretty obvious. It doesn't mention what the value of $0 is, and that's -not obvious. I think setting it to null before starting the BEGINFILE -action would be preferable to leaving whatever was there in the last -record of the previous file. - - ENDFILE can retain the last record in $0. I guess it has to if -the END rule's actions see that value too. But the beginning of a new -file doesn't just mean that the old one has been closed; the old file -is being superseded, so leaving the old data around feels wrong to me. -[If the user wants to keep it on hand, he or she can use an ENDFILE -rule to grab it before moving on to the next file.] -@end ignore - @node Empty @subsection The Empty Pattern @@ -15020,20 +15333,25 @@ This prints the first three fields of each input record, with one input field per output line. -It isn't possible to -set more than one variable in the -@var{initialization} part without using a multiple assignment statement -such as @samp{x = y = 0}. This makes sense only if all the initial values -are equal. (But it is possible to initialize additional variables by writing -their assignments as separate statements preceding the @code{for} loop.) - @c @cindex comma operator, not supported -The same is true of the @var{increment} part. Incrementing additional -variables requires separate statements at the end of the loop. -The C compound expression, using C's comma operator, is useful in -this context, but it is not supported in @command{awk}. +C and C++ programmers might expect to be able to use the comma +operator to set more than one variable in the @var{initialization} +part of the @code{for} loop, or to increment multiple variables in the +@var{increment} part of the loop, like so: -Most often, @var{increment} is an increment expression, as in the previous +@example +for (i = 0, j = length(a); i < j; i++, j--) @dots{} @ii{C/C++, not awk!} +@end example + +@noindent +You cannot do this; the comma operator is not supported in @command{awk}. +There are workarounds, but they are nonobvious and can lead to +code that is difficult to read and understand. It is best, therefore, +to simply write additional initializations as separate statements +preceding the @code{for} loop and to place additional increment statements +at the end of the loop's body. + +Most often, @var{increment} is an increment expression, as in the earlier example. But this is not required; it can be any expression whatsoever. For example, the following statement prints all the powers of two between 1 and 100: @@ -15102,13 +15420,14 @@ are checked for a match in the order they are defined. If no suitable @code{case} is found, the @code{default} section is executed, if supplied. -Each @code{case} contains a single constant, be it numeric, string, or -regexp. The @code{switch} expression is evaluated, and then each -@code{case}'s constant is compared against the result in turn. The type of constant -determines the comparison: numeric or string do the usual comparisons. -A regexp constant does a regular expression match against the string -value of the original expression. The general form of the @code{switch} -statement looks like this: +Each @code{case} contains a single constant, be it numeric, string, +or regexp. The @code{switch} expression is evaluated, and then each +@code{case}'s constant is compared against the result in turn. The +type of constant determines the comparison: numeric or string do the +usual comparisons. A regexp constant (either regular, @code{/foo/}, or +strongly typed, @code{@@/foo/}) does a regular expression match against +the string value of the original expression. The general form of the +@code{switch} statement looks like this: @example switch (@var{expression}) @{ @@ -15407,13 +15726,14 @@ In @command{gawk}, execution of @code{nextfile} causes additional things to happen: any @code{ENDFILE} rules are executed if @command{gawk} is -not currently in an @code{END} or @code{BEGINFILE} rule, @code{ARGIND} is +not currently in an @code{END} rule, @code{ARGIND} is incremented, and any @code{BEGINFILE} rules are executed. (@code{ARGIND} hasn't been introduced yet. @xref{Built-in Variables}.) -With @command{gawk}, @code{nextfile} is useful inside a @code{BEGINFILE} +There is an additional, special, use case +with @command{gawk}. @code{nextfile} is useful inside a @code{BEGINFILE} rule to skip over a file that would otherwise cause @command{gawk} -to exit with a fatal error. In this case, @code{ENDFILE} rules are not +to exit with a fatal error. In this special case, @code{ENDFILE} rules are not executed. @xref{BEGINFILE/ENDFILE}. Although it might seem that @samp{close(FILENAME)} would accomplish @@ -18419,12 +18739,15 @@ @end example @quotation NOTE -Due to implementation limitations, you may not use either @code{SYMTAB} -or @code{FUNCTAB} as arguments to these functions, even if providing a -second array to use for the actual sorting. Attempting to do so produces -a fatal error. This restriction may be lifted in the future. +You may not use either @code{SYMTAB} or @code{FUNCTAB} as the second +argument to these functions. Attempting to do so produces a fatal error. +You may use them as the first argument, but only if providing a second +array to use for the actual sorting. @end quotation +You are allowed to use the same array for both the @var{source} and @var{dest} +arguments, but doing so only makes sense if you're also supplying the third argument. + @item @code{gensub(@var{regexp}, @var{replacement}, @var{how}} [@code{, @var{target}}]@code{) #} @cindexgawkfunc{gensub} @cindex search and replace in strings @@ -18438,6 +18761,9 @@ is supplied, use @code{$0}. Return the modified string as the result of the function. The original target string is @emph{not} changed. +The returned value is @emph{always} a string, even if the original +@var{target} was a number or a regexp value. + @code{gensub()} is a general substitution function. Its purpose is to provide more features than the standard @code{sub()} and @code{gsub()} functions. @@ -18486,7 +18812,8 @@ a warning message. If @var{regexp} does not match @var{target}, @code{gensub()}'s return value -is the original unchanged value of @var{target}. +is the original unchanged value of @var{target}. Note that, as mentioned +above, the returned value is a string, even if @var{target} was not. @item @code{gsub(@var{regexp}, @var{replacement}} [@code{, @var{target}}]@code{)} @cindexawkfunc{gsub} @@ -18745,7 +19072,7 @@ after @code{@var{array}[@var{i}]}. The possibly null leading separator will be in @code{@var{seps}[0]}. So a non-null @var{string} with @var{n} fields will have @var{n+1} separators. -A null @var{string} will not have neither fields nor separators. +A null @var{string} has no fields or separators. The @code{patsplit()} function splits strings into pieces in a manner similar to the way input lines are split into fields using @code{FPAT} @@ -19061,6 +19388,16 @@ @code{toupper("MiXeD cAsE 123")} returns @code{"MIXED CASE 123"}. @end table +At first glance, the @code{split()} and @code{patsplit()} functions appear to be +mirror images of each other. But there are differences: + +@itemize @bullet +@item @code{split()} treats its third argument like @code{FS}, with all the +special rules involved for @code{FS}. + +@item Matching of null strings differs. This is discussed in @ref{FS versus FPAT}. +@end itemize + @cindex sidebar @subentry Matching the Null String @ifdocbook @docbook @@ -19485,8 +19822,8 @@ Prior to @value{PVERSION} 4.0.2, @command{gawk} would flush only the standard output if there was no argument, and flush all output files and pipes if the argument was the null -string. This was changed in order to be compatible with Brian -Kernighan's @command{awk}, in the hope that standardizing this +string. This was changed in order to be compatible with BWK +@command{awk}, in the hope that standardizing this feature in POSIX would then be easier (which indeed proved to be the case). With @command{gawk}, @@ -20402,7 +20739,7 @@ @cindex @code{bits2str()} user-defined function @cindex user-defined @subentry function @subentry @code{bits2str()} -@cindex @code{testbits.awk} program +@cindex @file{testbits.awk} program @example @group @c file eg/lib/bits2str.awk @@ -20723,6 +21060,29 @@ However, @code{isarray()} and @code{typeof()} are different; they do not change their arguments from untyped to unassigned. +@cindex dark corner @subentry array elements created by reference +By ``variable'' we mean one denoted by a simple identifier. Array elements +that come into existence simply by referencing them +are different, they are automatically forced to be scalars. Consider: + +@example +$ @kbd{gawk 'BEGIN @{ print typeof(x) @}'} +@print{} untyped +$ @kbd{gawk 'BEGIN @{ print typeof(x["foo"]) @}'} +@print{} unassigned +@end example + +@noindent +@code{x["foo"]} comes into existence before it is passed to @code{typeof()}; +@code{typeof()} cannot tell that it didn't exist prior to being called. +@value{DARKCORNER} + +@c FIXME: For 5.2, if this will change, update this bit of doc. +@c This may change in a future release, whereby @command{gawk} +@c would allow such an unassigned array element to be used for +@c a multidimensional array, and not remain a scalar forever +@c (or until deleted). + @node I18N Functions @subsection String-Translation Functions @cindex @command{gawk} @subentry string-translation functions @@ -20846,8 +21206,9 @@ (@pxref{Built-in Variables}), nor may a function parameter have the same name as another function. +@cindex dark corner @subentry parameter name restrictions Not all versions of @command{awk} enforce -these restrictions. +these restrictions. @value{DARKCORNER} @command{gawk} always enforces the first restriction. With @option{--posix} (@pxref{Options}), it also enforces the second restriction. @@ -22008,7 +22369,7 @@ place. It simplifies programming, making program development more manageable and making programs more readable. -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @cindex Plauger, P.J.@: In their seminal 1976 book, @cite{Software Tools},@footnote{Sadly, over 35 years later, many of the lessons taught by this book have yet to be @@ -22222,6 +22583,7 @@ * Getlocaltime Function:: A function to get formatted times. * Readfile Function:: A function to read an entire file at once. * Shell Quoting:: A function to quote strings for the shell. +* Isnumeric Function:: A function to test whether a value is numeric. @end menu @node Strtonum Function @@ -23012,6 +23374,47 @@ @c endfile @end example +@node Isnumeric Function +@subsection Checking Whether A Value Is Numeric + +A frequent programming question is how to ascertain whether a value is numeric. +This can be solved by using this example function @code{isnumeric()}, which +employs the trick of converting a string value to user input by using the +@code{split()} function: + +@cindex @code{isnumeric()} user-defined function +@cindex user-defined @subentry function @subentry @code{isnumeric()} +@example +@c file eg/lib/isnumeric.awk +# isnumeric --- check whether a value is numeric + +function isnumeric(x, f) +@{ + switch (typeof(x)) @{ + case "strnum": + case "number": + return 1 + case "string": + return (split(x, f, " ") == 1) && (typeof(f[1]) == "strnum") + default: + return 0 + @} +@} +@c endfile +@end example + +Please note that leading or trailing white space is disregarded in deciding +whether a value is numeric or not, so if it matters to you, you may want +to add an additional check for that. + +Traditionally, it has been recommended to check for numeric values using the +test @samp{x+0 == x}. This function is superior in two ways: it will not +report that unassigned variables contain numeric values; and it recognizes +string values with numeric contents where @code{CONVFMT} does not yield +the original string. +On the other hand, it uses the @code{typeof()} function +(@pxref{Type Functions}), which is specific to @command{gawk}. + @node Data File Management @section @value{DDF} Management @@ -23283,7 +23686,7 @@ code here provides a portable solution.} You can do this by prepending the following program to your @command{awk} program: -@cindex @code{readable.awk} program +@cindex @file{readable.awk} program @example @c file eg/lib/readable.awk # readable.awk --- library file to skip over unreadable files @@ -23341,7 +23744,7 @@ @code{zerofile()} that the user must provide. The arguments passed are the @value{FN} and the position in @code{ARGV} where it was found: -@cindex @code{zerofile.awk} program +@cindex @file{zerofile.awk} program @example @c file eg/lib/zerofile.awk # zerofile.awk --- library file to process empty input files @@ -23401,7 +23804,7 @@ to disable command-line assignments. However, some simple programming with a library file does the trick: -@cindex @code{noassign.awk} program +@cindex @file{noassign.awk} program @example @c file eg/lib/noassign.awk # noassign.awk --- library file to avoid the need for a @@ -23768,7 +24171,7 @@ First, we search this option for a possible embedded equal sign, as the specification of long options allows an argument to an option -@samp{--someopt:} to be specified as @samp{--someopt=answer} as well as +@samp{--someopt} to be specified as @samp{--someopt=answer} as well as @samp{@w{--someopt answer}}. @example @@ -23883,8 +24286,8 @@ @print{} c = , Optarg = <> @print{} c = , Optarg = <> @print{} non-option arguments: -@print{} ARGV[8] = -@print{} ARGV[9] = +@print{} ARGV[8] = +@print{} ARGV[9] = @end example In all the runs, the first @option{--} terminates the arguments to @@ -25014,13 +25417,13 @@ dashes. The list @samp{1-8,15,22-35} specifies characters 1 through 8, 15, and 22 through 35. -@item -f @var{list} -Use @var{list} as the list of fields to cut out. - @item -d @var{delim} Use @var{delim} as the field-separator character instead of the TAB character. +@item -f @var{list} +Use @var{list} as the list of fields to cut out. + @item -s Suppress printing of lines that do not contain the field delimiter. @end table @@ -25030,12 +25433,16 @@ and the @code{join()} library function (@pxref{Join Function}). +The current POSIX version of @command{cut} has options to cut fields based on +both bytes and characters. This version does not attempt to implement those options, +as @command{awk} works exclusively in terms of characters. + The program begins with a comment describing the options, the library functions needed, and a @code{usage()} function that prints out a usage message and exits. @code{usage()} is called if invalid arguments are supplied: -@cindex @code{cut.awk} program +@cindex @file{cut.awk} program @example @c file eg/prog/cut.awk # cut.awk --- implement cut in awk @@ -25050,9 +25457,9 @@ @c file eg/prog/cut.awk # Options: +# -c list Cut characters # -f list Cut fields # -d c Field delimiter character -# -c list Cut characters # # -s Suppress lines without the delimiter # @@ -25062,7 +25469,7 @@ function usage() @{ print("usage: cut [-f list] [-d c] [-s] [files...]") > "/dev/stderr" - print("usage: cut [-c list] [files...]") > "/dev/stderr" + print(" cut [-c list] [files...]") > "/dev/stderr" exit 1 @} @end group @@ -25124,7 +25531,7 @@ TABs, and/or newlines, and we want them to be separated with individual spaces. To this end, we save the original space character in the variable -@code{fs} for later use; after setting @code{FS} to @code{"[ ]"} we can't +@code{fs} for later use; after setting @code{FS} to @code{@w{"[ ]"}} we can't use it directly to see if the field delimiter character is in the string. Also remember that after @code{getopt()} is through @@ -25312,9 +25719,25 @@ @cindex searching @subentry files for regular expressions @cindex files @subentry searching for regular expressions @cindex @command{egrep} utility -The @command{egrep} utility searches files for patterns. It uses regular -expressions that are almost identical to those available in @command{awk} -(@pxref{Regexp}). +The @command{grep} family of programs searches files for patterns. +These programs have an unusual history. +Initially there was @command{grep} (Global Regular Expression Print), +which used what are now called Basic Regular Expressions (BREs). +Later there was @command{egrep} (Extended @command{grep}) which used +what are now called Extended Regular Expressions (EREs). (These are almost +identical to those available in @command{awk}; @pxref{Regexp}). +There was also @command{fgrep} (Fast @command{grep}), which searched +for matches of one more fixed strings. + +POSIX chose to combine these three programs into one, simply named +@command{grep}. On a POSIX system, @command{grep}'s default behavior +is to search using BREs. You use @command{-E} to specify the use +of EREs, and @option{-F} to specify searching for fixed strings. + +In practice, systems continue to come with separate @command{egrep} +and @command{fgrep} utilities, for backwards compatibility. This +@value{SECTION} provides an @command{awk} implementation of @command{egrep}, +which supports all of the POSIX-mandated options. You invoke it as follows: @display @@ -25332,17 +25755,12 @@ @table @code @item -c -Print out a count of the lines that matched the pattern, instead of the +Print a count of the lines that matched the pattern, instead of the lines themselves. -@item -s -Be silent. No output is produced and the exit value indicates whether -the pattern was matched. - -@item -v -Invert the sense of the test. @command{egrep} prints the lines that do -@emph{not} match the pattern and exits successfully if the pattern is not -matched. +@item -e @var{pattern} +Use @var{pattern} as the regexp to match. The purpose of the @option{-e} +option is to allow patterns that start with a @samp{-}. @item -i Ignore case distinctions in both the pattern and the input data. @@ -25350,23 +25768,36 @@ @item -l Only print (list) the names of the files that matched, not the lines that matched. -@item -e @var{pattern} -Use @var{pattern} as the regexp to match. The purpose of the @option{-e} -option is to allow patterns that start with a @samp{-}. +@item -q +Be quiet. No output is produced and the exit value indicates whether +the pattern was matched. + +@item -s +Be silent. Do not print error messages for files that could +not be opened. + +@item -v +Invert the sense of the test. @command{egrep} prints the lines that do +@emph{not} match the pattern and exits successfully if the pattern is not +matched. + +@item -x +Match the entire input line in order to consider the match as having +succeeded. @end table This version uses the @code{getopt()} library function -(@pxref{Getopt Function}) -and the file transition library program -(@pxref{Filetrans Function}). +(@pxref{Getopt Function}) and @command{gawk}'s +@code{BEGINFILE} and @code{ENDFILE} special patterns +(@pxref{BEGINFILE/ENDFILE}). -The program begins with a descriptive comment and then a @code{BEGIN} rule +The program begins with descriptive comments and then a @code{BEGIN} rule that processes the command-line arguments with @code{getopt()}. The @option{-i} (ignore case) option is particularly easy with @command{gawk}; we just use the @code{IGNORECASE} predefined variable (@pxref{Built-in Variables}): -@cindex @code{egrep.awk} program +@cindex @file{egrep.awk} program @example @c file eg/prog/egrep.awk # egrep.awk --- simulate egrep in awk @@ -25376,43 +25807,63 @@ @c file eg/prog/egrep.awk # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Revised September 2020 @c endfile @end ignore @c file eg/prog/egrep.awk # Options: # -c count of lines -# -s silent - use exit value -# -v invert test, success if no match +# -e argument is pattern # -i ignore case # -l print filenames only -# -e argument is pattern +# -n add line number to output +# -q quiet - use exit value +# -s silent - don't print errors +# -v invert test, success if no match +# -x the entire line must match # -# Requires getopt and file transition library functions +# Requires getopt library function +# Uses IGNORECASE, BEGINFILE and ENDFILE +# Invoke using gawk -f egrep.awk -- options ... BEGIN @{ - while ((c = getopt(ARGC, ARGV, "ce:svil")) != -1) @{ + while ((c = getopt(ARGC, ARGV, "ce:ilnqsvx")) != -1) @{ if (c == "c") count_only++ - else if (c == "s") - no_print++ - else if (c == "v") - invert++ + else if (c == "e") + pattern = Optarg else if (c == "i") IGNORECASE = 1 else if (c == "l") filenames_only++ - else if (c == "e") - pattern = Optarg + else if (c == "n") + line_numbers++ + else if (c == "q") + no_print++ + else if (c == "s") + no_errors++ + else if (c == "v") + invert++ + else if (c == "x") + full_line++ else usage() @} @c endfile @end example -Next comes the code that handles the @command{egrep}-specific behavior. If no -pattern is supplied with @option{-e}, the first nonoption on the -command line is used. The @command{awk} command-line arguments up to @code{ARGV[Optind]} +@noindent +Note the comment about invocation: Because several of the options overlap +with @command{gawk}'s, a @option{--} is needed to tell @command{gawk} +to stop looking for options. + +Next comes the code that handles the @command{egrep}-specific behavior. +@command{egrep} uses the first nonoption on the command line +if no pattern is supplied with @option{-e}. +If the pattern is empty, that means no pattern was supplied, so it's +necessary to print an error message and exit. +The @command{awk} command-line arguments up to @code{ARGV[Optind]} are cleared, so that @command{awk} won't try to process them as files. If no files are specified, the standard input is used, and if multiple files are specified, we make sure to note this so that the @value{FN}s can precede the @@ -25423,58 +25874,42 @@ if (pattern == "") pattern = ARGV[Optind++] + if (pattern == "") + usage() + for (i = 1; i < Optind; i++) ARGV[i] = "" + if (Optind >= ARGC) @{ ARGV[1] = "-" ARGC = 2 @} else if (ARGC - Optind > 1) do_filenames++ - -# if (IGNORECASE) -# pattern = tolower(pattern) @} @c endfile @end example -The last two lines are commented out, as they are not needed in -@command{gawk}. They should be uncommented if you have to use another version -of @command{awk}. - -The next set of lines should be uncommented if you are not using -@command{gawk}. This rule translates all the characters in the input line -into lowercase if the @option{-i} option is specified.@footnote{It -also introduces a subtle bug; -if a match happens, we output the translated line, not the original.} -The rule is -commented out as it is not necessary with @command{gawk}: - -@example -@c file eg/prog/egrep.awk -#@{ -# if (IGNORECASE) -# $0 = tolower($0) -#@} -@c endfile -@end example - -The @code{beginfile()} function is called by the rule in @file{ftrans.awk} -when each new file is processed. In this case, it is very simple; all it -does is initialize a variable @code{fcount} to zero. @code{fcount} tracks +The @code{BEGINFILE} rule executes +when each new file is processed. In this case, it is fairly simple; it +initializes a variable @code{fcount} to zero. @code{fcount} tracks how many lines in the current file matched the pattern. -Naming the parameter @code{junk} shows we know that @code{beginfile()} -is called with a parameter, but that we're not interested in its value: + +Here also is where we implement the @option{-s} option. We check +if @code{ERRNO} has been set, and if @option{-s} was supplied. +In that case, it's necessary to move on to the next file. Otherwise +@command{gawk} would exit with an error: @example @c file eg/prog/egrep.awk -function beginfile(junk) -@{ +BEGINFILE @{ fcount = 0 + if (ERRNO && no_errors) + nextfile @} @c endfile @end example -The @code{endfile()} function is called after each file has been processed. +The @code{ENDFILE} rule executes after each file has been processed. It affects the output only when the user wants a count of the number of lines that matched. @code{no_print} is true only if the exit status is desired. @code{count_only} is true if line counts are desired. @command{egrep} @@ -25485,8 +25920,7 @@ @example @c file eg/prog/egrep.awk -function endfile(file) -@{ +ENDFILE @{ if (! no_print && count_only) @{ if (do_filenames) print file ":" fcount @@ -25501,26 +25935,28 @@ @c endfile @end example -The @code{BEGINFILE} and @code{ENDFILE} special patterns -(@pxref{BEGINFILE/ENDFILE}) could be used, but then the program would be -@command{gawk}-specific. Additionally, this example was written before -@command{gawk} acquired @code{BEGINFILE} and @code{ENDFILE}. - The following rule does most of the work of matching lines. The variable -@code{matches} is true if the line matched the pattern. If the user -wants lines that did not match, the sense of @code{matches} is inverted -using the @samp{!} operator. @code{fcount} is incremented with the value of +@code{matches} is true (non-zero) if the line matched the pattern. +If the user specified that the entire line must match (with @option{-x}), +the code checks this condition by looking at the values of +@code{RSTART} and @code{RLENGTH}. If those indicate that the match +is not over the full line, @code{matches} is set to zero (false). + +If the user +wants lines that did not match, we invert the sense of @code{matches} +using the @samp{!} operator. We then increment @code{fcount} with the value of @code{matches}, which is either one or zero, depending upon a successful or unsuccessful match. If the line does not match, the -@code{next} statement just moves on to the next record. +@code{next} statement just moves on to the next input line. -A number of additional tests are made, but they are only done if we +We make a number of additional tests, but only if we are not counting lines. First, if the user only wants the exit status (@code{no_print} is true), then it is enough to know that @emph{one} line in this file matched, and we can skip on to the next file with @code{nextfile}. Similarly, if we are only printing @value{FN}s, we can print the @value{FN}, and then skip to the next file with @code{nextfile}. -Finally, each line is printed, with a leading @value{FN} and colon +Finally, each line is printed, with a leading @value{FN}, +optional colon and line number, and the final colon if necessary: @cindex @code{!} (exclamation point) @subentry @code{!} operator @@ -25528,7 +25964,10 @@ @example @c file eg/prog/egrep.awk @{ - matches = ($0 ~ pattern) + matches = match($0, pattern) + if (matches && full_line && (RSTART != 1 || RLENGTH != length())) + matches = 0 + if (invert) matches = ! matches @@ -25547,7 +25986,10 @@ @} if (do_filenames) - print FILENAME ":" $0 + if (line_numbers) + print FILENAME ":" FNR ":" $0 + else + print FILENAME ":" $0 else print @} @@ -25573,14 +26015,13 @@ @c file eg/prog/egrep.awk function usage() @{ - print("Usage: egrep [-csvil] [-e pat] [files ...]") > "/dev/stderr" - print("\n\tegrep [-csvil] pat [files ...]") > "/dev/stderr" + print("Usage:\tegrep [-cilnqsvx] [-e pat] [files ...]") > "/dev/stderr" + print("\tegrep [-cilnqsvx] pat [files ...]") > "/dev/stderr" exit 1 @} @c endfile @end example - @node Id Program @subsection Printing Out User Information @@ -25604,27 +26045,31 @@ However, the @command{id} utility provides a more palatable output than just individual numbers. -Here is a simple version of @command{id} written in @command{awk}. -It uses the user database library functions -(@pxref{Passwd Functions}) +The POSIX version of @command{id} takes several options that give you +control over the output's format, such as printing only real ids, or printing +only numbers or only names. Additionally, you can print the information +for a specific user, instead of that of the current user. + +Here is a version of POSIX @command{id} written in @command{awk}. +It uses the @code{getopt()} library function +(@pxref{Getopt Function}), +the user database library functions +(@pxref{Passwd Functions}), and the group database library functions (@pxref{Group Functions}) from @ref{Library Functions}. -The program is fairly straightforward. All the work is done in the -@code{BEGIN} rule. The user and group ID numbers are obtained from -@code{PROCINFO}. -The code is repetitive. The entry in the user database for the real user ID -number is split into parts at the @samp{:}. The name is the first field. -Similar code is used for the effective user ID number and the group -numbers: +The program is moderately straightforward. All the work is done in the +@code{BEGIN} rule. +It starts with explanatory comments, a list of options, +and then a @code{usage()} function: -@cindex @code{id.awk} program +@cindex @file{id.awk} program @example @c file eg/prog/id.awk # id.awk --- implement id in awk # -# Requires user and group library functions +# Requires user and group library functions and getopt @c endfile @ignore @c file eg/prog/id.awk @@ -25634,6 +26079,7 @@ # Revised February 1996 # Revised May 2014 # Revised September 2014 +# Revised September 2020 @c endfile @end ignore @@ -25642,126 +26088,389 @@ # uid=12(foo) euid=34(bar) gid=3(baz) \ # egid=5(blat) groups=9(nine),2(two),1(one) +# Options: +# -G Output all group ids as space separated numbers (ruid, euid, groups) +# -g Output only the euid as a number +# -n Output name instead of the numeric value (with -g/-G/-u) +# -r Output ruid/rguid instead of effective id +# -u Output only effective user id, as a number + @group -BEGIN @{ - uid = PROCINFO["uid"] - euid = PROCINFO["euid"] - gid = PROCINFO["gid"] - egid = PROCINFO["egid"] +function usage() +@{ + printf("Usage:\n" \ + "\tid [user]\n" \ + "\tid -G [-n] [user]\n" \ + "\tid -g [-nr] [user]\n" \ + "\tid -u [-nr] [user]\n") > "/dev/stderr" + + exit 1 +@} @end group +@c endfile +@end example + +The first step is to parse the options using @code{getopt()}, +and to set various flag variables according to the options given: + +@example +@c file eg/prog/id.awk +BEGIN @{ + # parse args + while ((c = getopt(ARGC, ARGV, "Ggnru")) != -1) @{ + if (c == "G") + groupset_only++ + else if (c == "g") + egid_only++ + else if (c == "n") + names_not_groups++ + else if (c == "r") + real_ids_only++ + else if (c == "u") + euid_only++ + else + usage() + @} +@c endfile +@end example + +The next step is to check that no conflicting options were +provided. @option{-G} and @option{-r} are mutually exclusive. +It is also not allowed to provide more than one user name +on the command line: + +@example +@c file eg/prog/id.awk + if (groupset_only && real_ids_only) + usage() + else if (ARGC - Optind > 1) + usage() +@c endfile +@end example +The user and group ID numbers are obtained from +@code{PROCINFO} for the current user, or from the +user and password databases for a user supplied on +the command line. In the latter case, @code{real_ids_only} +is set, since it's not possible to print information about +the effective user and group IDs: + +@example +@c file eg/prog/id.awk + if (ARGC - Optind == 0) @{ + # gather info for current user + uid = PROCINFO["uid"] + euid = PROCINFO["euid"] + gid = PROCINFO["gid"] + egid = PROCINFO["egid"] + for (i = 1; ("group" i) in PROCINFO; i++) + groupset[i] = PROCINFO["group" i] + @} else @{ + fill_info_for_user(ARGV[ARGC-1]) + real_ids_only++ + @} +@c endfile +@end example + +The test in the @code{for} loop is worth noting. +Any supplementary groups in the @code{PROCINFO} array have the +indices @code{"group1"} through @code{"group@var{N}"} for some +@var{N} (i.e., the total number of supplementary groups). +However, we don't know in advance how many of these groups +there are. + +This loop works by starting at one, concatenating the value with +@code{"group"}, and then using @code{in} to see if that value is +in the array (@pxref{Reference to Elements}). Eventually, @code{i} increments past +the last group in the array and the loop exits. + +The loop is also correct if there are @emph{no} supplementary +groups; then the condition is false the first time it's +tested, and the loop body never executes. + + +Now, based on the options, we decide what information to print. +For @option{-G} (print just the group set), we then select +whether to print names or numbers. In either case, when done +we exit: + +@example +@c file eg/prog/id.awk + if (groupset_only) @{ + if (names_not_groups) @{ + for (i = 1; i in groupset; i++) @{ + entry = getgrgid(groupset[i]) + name = get_first_field(entry) + printf("%s", name) + if ((i + 1) in groupset) + printf(" ") + @} + @} else @{ + for (i = 1; i in groupset; i++) @{ + printf("%u", groupset[i]) + if ((i + 1) in groupset) + printf(" ") + @} + @} + + print "" # final newline + exit 0 + @} +@c endfile +@end example + +Otherwise, for @option{-g} (effective group ID only), we +check if @option{-r} was also provided, in which case we +use the real group ID. Then based on @option{-n}, we decide +whether to print names or numbers. Here too, when done, +we exit: + +@example +@c file eg/prog/id.awk + else if (egid_only) @{ + id = real_ids_only ? gid : egid + if (names_not_groups) @{ + entry = getgrgid(id) + name = get_first_field(entry) + printf("%s\n", name) + @} else @{ + printf("%u\n", id) + @} + + exit 0 + @} +@c endfile +@end example + +The @code{get_first_field()} function extracts the group name from +the group database entry for the given group ID. + +Similar processing logic applies to @option{-u} (effective user ID only), +combined with @option{-r} and @option{-n}: + +@example +@c file eg/prog/id.awk + else if (euid_only) @{ + id = real_ids_only ? uid : euid + if (names_not_groups) @{ + entry = getpwuid(id) + name = get_first_field(entry) + printf("%s\n", name) + @} else @{ + printf("%u\n", id) + @} + + exit 0 + @} +@c endfile +@end example + +At this point, we haven't exited yet, so we print +the regular, default output, based either on the current +user's information, or that of the user whose name was +provided on the command line. We start with the real user ID: + +@example +@c file eg/prog/id.awk printf("uid=%d", uid) pw = getpwuid(uid) - pr_first_field(pw) + print_first_field(pw) +@c endfile +@end example -@group - if (euid != uid) @{ +The @code{print_first_field()} function prints the user's +login name from the password file entry, surrounded by +parentheses. It is shown soon. +Printing the effective user ID is next: + +@example +@c file eg/prog/id.awk + if (euid != uid && ! real_ids_only) @{ printf(" euid=%d", euid) pw = getpwuid(euid) -@end group -@group - pr_first_field(pw) + print_first_field(pw) @} -@end group +@c endfile +@end example +Similar logic applies to the real and effective group IDs: + +@example +@c file eg/prog/id.awk printf(" gid=%d", gid) pw = getgrgid(gid) - pr_first_field(pw) + print_first_field(pw) - if (egid != gid) @{ + if (egid != gid && ! real_ids_only) @{ printf(" egid=%d", egid) pw = getgrgid(egid) - pr_first_field(pw) + print_first_field(pw) @} +@c endfile +@end example - for (i = 1; ("group" i) in PROCINFO; i++) @{ +Finally, we print the group set and the terminating newline: + +@example +@c file eg/prog/id.awk + for (i = 1; i in groupset; i++) @{ if (i == 1) printf(" groups=") - group = PROCINFO["group" i] + group = groupset[i] printf("%d", group) pw = getgrgid(group) - pr_first_field(pw) - if (("group" (i+1)) in PROCINFO) + print_first_field(pw) + if ((i + 1) in groupset) printf(",") @} print "" @} +@c endfile +@end example + +The @code{get_first_field()} function extracts the first field +from a password or group file entry for use as a user or group +name. Fields are separated by @samp{:} characters: -function pr_first_field(str, a) +@example +@c file eg/prog/id.awk +function get_first_field(str, a) @{ if (str != "") @{ split(str, a, ":") - printf("(%s)", a[1]) + return a[1] @} @} @c endfile @end example -The test in the @code{for} loop is worth noting. -Any supplementary groups in the @code{PROCINFO} array have the -indices @code{"group1"} through @code{"group@var{N}"} for some -@var{N} (i.e., the total number of supplementary groups). -However, we don't know in advance how many of these groups -there are. +This function is then used by @code{print_first_field()} to +output the given name surrounded by parentheses: -This loop works by starting at one, concatenating the value with -@code{"group"}, and then using @code{in} to see if that value is -in the array (@pxref{Reference to Elements}). Eventually, @code{i} is incremented past -the last group in the array and the loop exits. +@example +@c file eg/prog/id.awk +function print_first_field(str) +@{ + first = get_first_field(str) + printf("(%s)", first) +@} +@c endfile +@end example -The loop is also correct if there are @emph{no} supplementary -groups; then the condition is false the first time it's -tested, and the loop body never executes. +These two functions simply isolate out some code that is used repeatedly, +making the whole program shorter and cleaner. In particular, moving the +check for the empty string into @code{get_first_field()} saves several +lines of code. -The @code{pr_first_field()} function simply isolates out some -code that is used repeatedly, making the whole program -shorter and cleaner. In particular, moving the check for -the empty string into this function saves several lines of code. +Finally, @code{fill_info_for_user()} fetches user, group, and group +set information for the user named on the command. The code is fairly +straightforward, merely requiring that we exit if the given user doesn't +exist: +@example +@c file eg/prog/id.awk +function fill_info_for_user(user, + pwent, fields, groupnames, grent, groups, i) +@{ + pwent = getpwnam(user) + if (pwent == "") @{ + printf("id: '%s': no such user\n", user) > "/dev/stderr" + exit 1 + @} + + split(pwent, fields, ":") + uid = fields[3] + 0 + gid = fields[4] + 0 +@c endfile +@end example + +Getting the group set is a little awkward. The library routine +@code{getgruser()} returns a list of group @emph{names}. These +have to be gone through and turned back into group numbers, +so that the rest of the code will work as expected: + +@example +@ignore +@c file eg/prog/id.awk + +@c endfile +@end ignore +@c file eg/prog/id.awk + groupnames = getgruser(user) + split(groupnames, groups, " ") + for (i = 1; i in groups; i++) @{ + grent = getgrnam(groups[i]) + split(grent, fields, ":") + groupset[i] = fields[3] + 0 + @} +@} +@c endfile +@end example @node Split Program @subsection Splitting a Large File into Pieces -@c FIXME: One day, update to current POSIX version of split - @cindex files @subentry splitting @cindex @code{split} utility -The @command{split} program splits large text files into smaller pieces. -Usage is as follows:@footnote{This is the traditional usage. The -POSIX usage is different, but not relevant for what the program -aims to demonstrate.} +The @command{split} utility splits large text files into smaller pieces. +The usage follows the POSIX standard for @command{split} and is as follows: @display -@command{split} [@code{-@var{count}}] [@var{file}] [@var{prefix}] +@command{split} [@option{-l} @var{count}] [@option{-a} @var{suffix-len}] [@var{file} [@var{outname}]] +@command{split} @option{-b} @var{N}[@code{k}|@code{m}]] [@option{-a} @var{suffix-len}] [@var{file} [@var{outname}]] @end display -By default, -the output files are named @file{xaa}, @file{xab}, and so on. Each file has -1,000 lines in it, with the likely exception of the last file. To change the -number of lines in each file, supply a number on the command line -preceded with a minus sign (e.g., @samp{-500} for files with 500 lines in them -instead of 1,000). To change the names of the output files to something like -@file{myfileaa}, @file{myfileab}, and so on, supply an additional -argument that specifies the @value{FN} prefix. - -Here is a version of @command{split} in @command{awk}. It uses the -@code{ord()} and @code{chr()} functions presented in -@ref{Ordinal Functions}. - -The program first sets its defaults, and then tests to make sure there are -not too many arguments. It then looks at each argument in turn. The -first argument could be a minus sign followed by a number. If it is, this happens -to look like a negative number, so it is made positive, and that is the -count of lines. The @value{DF} name is skipped over and the final argument -is used as the prefix for the output @value{FN}s: +By default, the output files are named @file{xaa}, @file{xab}, and so +on. Each file has 1,000 lines in it, with the likely exception of the +last file. + +The @command{split} program has evolved over time, and the current POSIX +version is more complicated than the original Unix version. The options +and what they do are as follows: -@cindex @code{split.awk} program +@table @asis +@item @option{-a} @var{suffix-len} +Use @var{suffix-len} characters for the suffix. For example, if @var{suffix-len} +is four, the output files would range from @file{xaaaa} to @file{xzzzz}. + +@item @option{-b} @var{N}[@code{k}|@code{m}]] +Instead of each file containing a specified number of lines, each file +should have (at most) @var{N} bytes. Supplying a trailing @samp{k} +multiplies @var{N} by 1,024, yielding kilobytes. Supplying a trailing +@samp{m} multiplies @var{N} by 1,048,576 (@math{1,024 @value{TIMES} 1,024}) +yielding megabytes. (This option is mutually exclusive with @option{-l}). + +@item @option{-l} @var{count} +Each file should have at most @var{count} lines, instead of the default +1,000. (This option is mutually exclusive with @option{-b}). +@end table + +If supplied, @var{file} is the input file to read. Otherwise standard +input is processed. If supplied, @var{outname} is the leading prefix +to use for @value{FN}s, instead of @samp{x}. + +In order to use the @option{-b} option, @command{gawk} should be invoked +with its @option{-b} option (@pxref{Options}), or with the environment +variable @env{LC_ALL} set to @samp{C}, so that each input byte is treated +as a separate character.@footnote{Using @option{-b} twice requires +separating @command{gawk}'s options from those of the program. For example: +@samp{gawk -f getopt.awk -f split.awk -b -- -b 42m large-file.txt split-}.} + +Here is an implementation of @command{split} in @command{awk}. It uses the +@code{getopt()} function presented in @ref{Getopt Function}. + +The program begins with a standard descriptive comment and then +a @code{usage()} function describing the options. The variable +@code{common} keeps the function's lines short so that they +look nice on the page: + +@cindex @file{split.awk} program @example @c file eg/prog/split.awk # split.awk --- do split in awk # -# Requires ord() and chr() library functions +# Requires getopt() library function. @c endfile @ignore @c file eg/prog/split.awk @@ -25769,100 +26478,279 @@ # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 # Revised slightly, May 2014 +# Rewritten September 2020 @c endfile @end ignore @c file eg/prog/split.awk -# usage: split [-count] [file] [outname] +function usage( common) +@{ + common = "[-a suffix-len] [file [outname]]" + printf("usage: split [-l count] %s\n", common) > "/dev/stderr" + printf(" split [-b N[k|m]] %s\n", common) > "/dev/stderr" + exit 1 +@} +@c endfile +@end example + +Next, in a @code{BEGIN} rule we set the default values and parse the arguments. +After that we initialize the data structures used to cycle the suffix +from @samp{aa@dots{}} to @samp{zz@dots{}}. Finally we set the name of +the first output file: + +@example +@c file eg/prog/split.awk BEGIN @{ - outfile = "x" # default - count = 1000 - if (ARGC > 4) - usage() + # Set defaults: + Suffix_length = 2 + Line_count = 1000 + Byte_count = 0 + Outfile = "x" - i = 1 - if (i in ARGV && ARGV[i] ~ /^-[[:digit:]]+$/) @{ - count = -ARGV[i] - ARGV[i] = "" - i++ + parse_arguments() + + init_suffix_data() + + Output = (Outfile compute_suffix()) +@} +@c endfile +@end example + +Parsing the arguments is straightforward. The program follows our +convention (@pxref{Library Names}) of having important global variables +start with an uppercase letter: + +@example +@c file eg/prog/split.awk +function parse_arguments( i, c, l, modifier) +@{ + while ((c = getopt(ARGC, ARGV, "a:b:l:")) != -1) @{ + if (c == "a") + Suffix_length = Optarg + 0 + else if (c == "b") @{ + Byte_count = Optarg + 0 + Line_count = 0 + + l = length(Optarg) + modifier = substr(Optarg, l, 1) + if (modifier == "k") + Byte_count *= 1024 + else if (modifier == "m") + Byte_count *= 1024 * 1024 + @} else if (c == "l") @{ + Line_count = Optarg + 0 + Byte_count = 0 + @} else + usage() @} - # test argv in case reading from stdin instead of file - if (i in ARGV) - i++ # skip datafile name -@group - if (i in ARGV) @{ - outfile = ARGV[i] + + # Clear out options + for (i = 1; i < Optind; i++) ARGV[i] = "" + + # Check for filename + if (ARGV[Optind]) @{ + Optind++ + + # Check for different prefix + if (ARGV[Optind]) @{ + Outfile = ARGV[Optind] + ARGV[Optind] = "" + + if (++Optind < ARGC) + usage() + @} @} -@end group -@group - s1 = s2 = "a" - out = (outfile s1 s2) @} -@end group @c endfile @end example -The next rule does most of the work. @code{tcount} (temporary count) tracks -how many lines have been printed to the output file so far. If it is greater -than @code{count}, it is time to close the current file and start a new one. -@code{s1} and @code{s2} track the current suffixes for the @value{FN}. If -they are both @samp{z}, the file is just too big. Otherwise, @code{s1} -moves to the next letter in the alphabet and @code{s2} starts over again at -@samp{a}: +Managing the @value{FN} suffix is interesting. +Given a suffix of length three, say, the values go from +@samp{aaa}, @samp{aab}, @samp{aac} and so on, all the way to +@samp{zzx}, @samp{zzy}, and finally @samp{zzz}. +There are two important aspects to this: + +@itemize @bullet +@item +We have to be +able to easily generate these suffixes, and in particular +easily handle ``rolling over''; for example, going from +@samp{abz} to @samp{aca}. + +@item +We have to tell when we've finished with the last file, +so that if we still have more input data we can print an +error message and exit. The trick is to handle this @emph{after} +using the last suffix, and not when the final suffix is created. +@end itemize + +The computation is handled by @code{compute_suffix()}. +This function is called every time a new file is opened. + +The flow here is messy, because we want to generate @samp{zzzz} (say), +and use it, and only produce an error after all the @value{FN} +suffixes have been used up. The logical steps are as follows: + +@enumerate 1 +@item +Generate the suffix, saving the value in @code{result} to return. +To do this, the supplementary array @code{Suffix_ind} contains one +element for each letter in the suffix. Each element ranges from 1 to +26, acting as the index into a string containing all the lowercase +letters of the English alphabet. +It is initialized by @code{init_suffix_data()}. +@code{result} is built up one letter at a time, using each @code{substr()}. + +@item +Prepare the data structures for the next time @code{compute_suffix()} +is called. To do this, we loop over @code{Suffix_ind}, @emph{backwards}. +If the current element is less than 26, it's incremented and the loop +breaks (@samp{abq} goes to @samp{abr}). Otherwise, the element is +reset to one and we move down the list (@samp{abz} to @samp{aca}). +Thus, the @code{Suffix_ind} array is always ``one step ahead'' of the actual +@value{FN} suffix to be returned. + +@item +Check if we've gone past the limit of possible @value{FN}s. +If @code{Reached_last} is true, print a message and exit. Otherwise, +check if @code{Suffix_ind} describes a suffix where all the letters are +@samp{z}. If that's the case we're about to return the final suffix. If +so, we set @code{Reached_last} to true so that the @emph{next} call to +@code{compute_suffix()} will cause a failure. +@end enumerate + +Physically, the steps in the function occur in the order 3, 1, 2: -@c else on separate line here for page breaking @example @c file eg/prog/split.awk +function compute_suffix( i, result, letters) @{ - if (++tcount > count) @{ - close(out) - if (s2 == "z") @{ - if (s1 == "z") @{ - printf("split: %s is too large to split\n", - FILENAME) > "/dev/stderr" - exit 1 - @} - s1 = chr(ord(s1) + 1) - s2 = "a" - @} -@group - else - s2 = chr(ord(s2) + 1) -@end group - out = (outfile s1 s2) - tcount = 1 + # Logical step 3 + if (Reached_last) @{ + printf("split: too many files!\n") > "/dev/stderr" + exit 1 + @} else if (on_last_file()) + Reached_last = 1 # fail when wrapping after 'zzz' + + # Logical step 1 + result = "" + letters = "abcdefghijklmnopqrstuvwxyz" + for (i = 1; i <= Suffix_length; i++) + result = result substr(letters, Suffix_ind[i], 1) + + # Logical step 2 + for (i = Suffix_length; i >= 1; i--) @{ + if (++Suffix_ind[i] > 26) @{ + Suffix_ind[i] = 1 + @} else + break @} - print > out + + return result @} @c endfile @end example -@noindent -The @code{usage()} function simply prints an error message and exits: +The @code{Suffix_ind} array and @code{Reached_last} are initialized +by @code{init_suffix_data()}: @example @c file eg/prog/split.awk -function usage() +function init_suffix_data( i) @{ - print("usage: split [-num] [file] [outname]") > "/dev/stderr" - exit 1 + for (i = 1; i <= Suffix_length; i++) + Suffix_ind[i] = 1 + + Reached_last = 0 @} @c endfile @end example -This program is a bit sloppy; it relies on @command{awk} to automatically close the last file -instead of doing it in an @code{END} rule. -It also assumes that letters are contiguous in the character set, -which isn't true for EBCDIC systems. +The function @code{on_last_file()} returns true if @code{Suffix_ind} describes +a suffix where all the letters are @samp{z} by checking that all the elements +in the array are equal to 26: -@ifset FOR_PRINT -You might want to consider how to eliminate the use of -@code{ord()} and @code{chr()}; this can be done in such a -way as to solve the EBCDIC issue as well. -@end ifset +@example +@c file eg/prog/split.awk +function on_last_file( i, on_last) +@{ + on_last = 1 + for (i = 1; i <= Suffix_length; i++) @{ + on_last = on_last && (Suffix_ind[i] == 26) + @} + + return on_last +@} +@c endfile +@end example + +The actual work of splitting the input file is done by the next two rules. +Since splitting by line count and splitting by byte count are mutually +exclusive, we simply use two separate rules, one for when @code{Line_count} +is greater than zero, and another for when @code{Byte_count} is greater than zero. +The variable @code{tcount} counts how many lines have been processed so far. +When it exceeds @code{Line_count}, it's time to close the previous file and +switch to a new one: + +@example +@c file eg/prog/split.awk +Line_count > 0 @{ + if (++tcount > Line_count) @{ + close(Output) + Output = (Outfile compute_suffix()) + tcount = 1 + @} + print > Output +@} +@c endfile +@end example + +The rule for handling bytes is more complicated. Since lines most likely +vary in length, the @code{Byte_count} boundary may be hit in the middle of +an input record. In that case, @command{split} has to write enough of the +first bytes of the input record to finish up @code{Byte_count} bytes, close +the file, open a new file, and write the rest of the record to the new file. +The logic here does all that: + +@example +@c file eg/prog/split.awk +Byte_count > 0 @{ + # `+ 1' is for the final newline + if (tcount + length($0) + 1 > Byte_count) @{ # would overflow + # compute leading bytes + leading_bytes = Byte_count - tcount + + # write leading bytes + printf("%s", substr($0, 1, leading_bytes)) > Output + + # close old file, open new file + close(Output) + Output = (Outfile compute_suffix()) + + # set up first bytes for new file + $0 = substr($0, leading_bytes + 1) # trailing bytes + tcount = 0 + @} + + # write full record or trailing bytes + tcount += length($0) + 1 + print > Output +@} +@c endfile +@end example + +Finally, the @code{END} rule cleans up by closing the last output file: + +@example +@c file eg/prog/split.awk +END @{ + close(Output) +@} +@c endfile +@end example @node Tee Program @subsection Duplicating Output into Multiple Files @@ -25895,7 +26783,7 @@ Finally, @command{awk} is forced to read the standard input by setting @code{ARGV[1]} to @code{"-"} and @code{ARGC} to two: -@cindex @code{tee.awk} program +@cindex @file{tee.awk} program @example @c file eg/prog/tee.awk # tee.awk --- tee in awk @@ -25989,8 +26877,6 @@ @node Uniq Program @subsection Printing Nonduplicated Lines of Text -@c FIXME: One day, update to current POSIX version of uniq - @cindex printing @subentry unduplicated lines of text @cindex text, printing @subentry unduplicated lines of @cindex @command{uniq} utility @@ -26000,7 +26886,7 @@ options. The usage is as follows: @display -@command{uniq} [@option{-udc} [@code{-@var{n}}]] [@code{+@var{n}}] [@var{inputfile} [@var{outputfile}]] +@command{uniq} [@option{-udc} [@code{-f @var{n}}] [@code{-s @var{n}}]] [@var{inputfile} [@var{outputfile}]] @end display The options for @command{uniq} are: @@ -26016,14 +26902,14 @@ Count lines. This option overrides @option{-d} and @option{-u}. Both repeated and nonrepeated lines are counted. -@item -@var{n} +@item -f @var{n} Skip @var{n} fields before comparing lines. The definition of fields is similar to @command{awk}'s default: nonwhitespace characters separated by runs of spaces and/or TABs. -@item +@var{n} +@item -s @var{n} Skip @var{n} characters before comparing lines. Any fields specified with -@samp{-@var{n}} are skipped first. +@option{-f} are skipped first. @item @var{inputfile} Data is read from the input file named on the command line, instead of from @@ -26044,24 +26930,9 @@ (@pxref{Join Function}). The program begins with a @code{usage()} function and then a brief outline of -the options and their meanings in comments. -The @code{BEGIN} rule deals with the command-line arguments and options. It -uses a trick to get @code{getopt()} to handle options of the form @samp{-25}, -treating such an option as the option letter @samp{2} with an argument of -@samp{5}. If indeed two or more digits are supplied (@code{Optarg} looks -like a number), @code{Optarg} is -concatenated with the option digit and then the result is added to zero to make -it into a number. If there is only one digit in the option, then -@code{Optarg} is not needed. In this case, @code{Optind} must be decremented so that -@code{getopt()} processes it next time. This code is admittedly a bit -tricky. - -If no options are supplied, then the default is taken, to print both -repeated and nonrepeated lines. The output file, if provided, is assigned -to @code{outputfile}. Early on, @code{outputfile} is initialized to the -standard output, @file{/dev/stdout}: +the options and their meanings in comments: -@cindex @code{uniq.awk} program +@cindex @file{uniq.awk} program @example @c file eg/prog/uniq.awk @group @@ -26075,26 +26946,63 @@ # # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Updated August 2020 to current POSIX @c endfile @end ignore @c file eg/prog/uniq.awk function usage() @{ - print("Usage: uniq [-udc [-n]] [+n] [ in [ out ]]") > "/dev/stderr" + print("Usage: uniq [-udc [-f fields] [-s chars]] " \ + "[ in [ out ]]") > "/dev/stderr" exit 1 @} # -c count lines. overrides -d and -u # -d only repeated lines # -u only nonrepeated lines -# -n skip n fields -# +n skip n characters, skip fields first +# -f n skip n fields +# -s n skip n characters, skip fields first +@c endfile +@end example + +The POSIX standard for @command{uniq} allows options to start with +@samp{+} as well as with @samp{-}. An initial @code{BEGIN} rule +traverses the arguments changing any leading @samp{+} to @samp{-} +so that the @code{getopt()} function can parse the options: + +@example +@c file eg/prog/uniq.awk +# As of 2020, '+' can be used as the option character in addition to '-' +# Previously allowed use of -N to skip fields and +N to skip +# characters is no longer allowed, and not supported by this version. BEGIN @{ + # Convert + to - so getopt can handle things + for (i = 1; i < ARGC; i++) @{ + first = substr(ARGV[i], 1, 1) + if (ARGV[i] == "--" || (first != "-" && first != "+")) + break + else if (first == "+") + # Replace "+" with "-" + ARGV[i] = "-" substr(ARGV[i], 2) + @} +@} +@c endfile +@end example + +The next @code{BEGIN} rule deals with the command-line arguments and options. +If no options are supplied, then the default is taken, to print both +repeated and nonrepeated lines. The output file, if provided, is assigned +to @code{outputfile}. Early on, @code{outputfile} is initialized to the +standard output, @file{/dev/stdout}: + +@example +@c file eg/prog/uniq.awk +BEGIN @{ count = 1 outputfile = "/dev/stdout" - opts = "udc0:1:2:3:4:5:6:7:8:9:" + opts = "udcf:s:" while ((c = getopt(ARGC, ARGV, opts)) != -1) @{ if (c == "u") non_repeated_only++ @@ -26102,26 +27010,14 @@ repeated_only++ else if (c == "c") do_count++ - else if (index("0123456789", c) != 0) @{ - # getopt() requires args to options - # this messes us up for things like -5 - if (Optarg ~ /^[[:digit:]]+$/) - fcount = (c Optarg) + 0 - else @{ - fcount = c + 0 - Optind-- - @} - @} else + else if (c == "f") + fcount = Optarg + 0 + else if (c == "s") + charcount = Optarg + 0 + else usage() @} -@group - if (ARGV[Optind] ~ /^\+[[:digit:]]+$/) @{ - charcount = substr(ARGV[Optind], 2) + 0 - Optind++ - @} -@end group - for (i = 1; i < Optind; i++) ARGV[i] = "" @@ -26252,37 +27148,92 @@ make the program a little easier to follow. @ifset FOR_PRINT +@cindex Kernighan, Brian @subentry quotes The logic for choosing which lines to print represents a @dfn{state -machine}, which is ``a device that can be in one of a set number of stable -conditions depending on its previous condition and on the present values -of its inputs.''@footnote{This is the definition returned from entering -@code{define: state machine} into Google.} -Brian Kernighan suggests that -``an alternative approach to state machines is to just read -the input into an array, then use indexing. It's almost always -easier code, and for most inputs where you would use this, just -as fast.'' Consider how to rewrite the logic to follow this -suggestion. +machine}, which is ``a device which can be in one of a set number +of stable conditions depending on its previous condition and on the +present values of its inputs.''@footnote{This definition is from +@uref{https://www.lexico.com/en/definition/state_machine}.} Brian +Kernighan suggests that ``an alternative approach to state machines is +to just read the input into an array, then use indexing. It's almost +always easier code, and for most inputs where you would use this, just +as fast.'' Consider how to rewrite the logic to follow this suggestion. @end ifset - @node Wc Program @subsection Counting Things -@c FIXME: One day, update to current POSIX version of wc - -@cindex counting words, lines, and characters +@cindex counting words, lines, characters, and bytes @cindex input files @subentry counting elements in @cindex words @subentry counting @cindex characters @subentry counting @cindex lines @subentry counting +@cindex bytes @subentry counting @cindex @command{wc} utility -The @command{wc} (word count) utility counts lines, words, and characters in -one or more input files. Its usage is as follows: +The @command{wc} (word count) utility counts lines, words, characters +and bytes in one or more input files. + +@menu +* Bytes vs. Characters:: Modern character sets. +* Using extensions:: A brief intro to extensions. +* @command{wc} program:: Code for @file{wc.awk}. +@end menu + +@node Bytes vs. Characters +@subsubsection Modern Character Sets + +In the early days of computing, single bytes were used for storing +characters. The most common character sets were ASCII and EBCDIC, +which each provided all the English upper- and lowercase letters, the 10 +Hindu-Arabic numerals from 0 through 9, and a number of other standard +punctuation and control characters. + +Today, the most popular character set in use is Unicode (of which ASCII +is a pure subset). Unicode provides tens of thousands of unique characters +(called @dfn{code points}) to cover most existing human languages (living +and dead) and a number of nonhuman ones as well (such as Klingon and +J.R.R.@: Tolkien's elvish languages). + +To save space in files, Unicode code points are @dfn{encoded}, where each +character takes from one to four bytes in the file. UTF-8 is possibly +the most popular of such @dfn{multibyte encodings}. + +The POSIX standard requires that @command{awk} function in terms +of characters, not bytes. Thus in @command{gawk}, @code{length()}, +@code{substr()}, @code{split()}, @code{match()} and the other string +functions (@pxref{String Functions}) all work in terms of characters in +the local character set, and not in terms of bytes. (Not all @command{awk} +implementations do so, though). + +There is no standard, built-in way to distinguish characters from bytes +in an @command{awk} program. For an @command{awk} implementation of +@command{wc}, which needs to make such a distinction, we will have to +use an external extension. + +@node Using extensions +@subsubsection A Brief Introduction To Extensions + +Loadable extensions are presented in full detail in @ref{Dynamic Extensions}. +They provide a way to add functions to @command{gawk} which can call +out to other facilities written in C or C++. + +For the purposes of +@file{wc.awk}, it's enough to know that the extension is loaded +with the @code{@@load} directive, and the additional function we +will use is called @code{mbs_length()}. This function returns the +number of bytes in a string, not the number of characters. + +The @code{"mbs"} extension comes from the @code{gawkextlib} +project. @xref{gawkextlib} for more information. + +@node @command{wc} program +@subsubsection Code for @file{wc.awk} + +The usage for @command{wc} is as follows: @display -@command{wc} [@option{-lwc}] [@var{files} @dots{}] +@command{wc} [@option{-lwcm}] [@var{files} @dots{}] @end display If no files are specified on the command line, @command{wc} reads its standard @@ -26290,49 +27241,56 @@ the files. The options and their meanings are as follows: @table @code +@item -c +Count only bytes. +Once upon a time, the @samp{c} in this option stood for ``characters.'' +But, as explained earlier, bytes and character are no longer synonymous +with each other. + @item -l Count only lines. +@item -m +Count only characters. + @item -w Count only words. A ``word'' is a contiguous sequence of nonwhitespace characters, separated by spaces and/or TABs. Luckily, this is the normal way @command{awk} separates fields in its input data. - -@item -c -Count only characters. @end table Implementing @command{wc} in @command{awk} is particularly elegant, because @command{awk} does a lot of the work for us; it splits lines into words (i.e., fields) and counts them, it counts lines (i.e., records), -and it can easily tell us how long a line is. +and it can easily tell us how long a line is in characters. This program uses the @code{getopt()} library function (@pxref{Getopt Function}) and the file-transition functions (@pxref{Filetrans Function}). -This version has one notable difference from traditional versions of +This version has one notable difference from older versions of @command{wc}: it always prints the counts in the order lines, words, -and characters. Traditional versions note the order of the @option{-l}, +characters and bytes. Older versions note the order of the @option{-l}, @option{-w}, and @option{-c} options on the command line, and print the -counts in that order. +counts in that order. POSIX does not mandate this behavior, though. The @code{BEGIN} rule does the argument processing. The variable @code{print_total} is true if more than one file is named on the command line: -@cindex @code{wc.awk} program +@cindex @file{wc.awk} program @example @c file eg/prog/wc.awk -# wc.awk --- count lines, words, characters +# wc.awk --- count lines, words, characters, bytes @c endfile @ignore @c file eg/prog/wc.awk # # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Revised September 2020 @c endfile @end ignore @c file eg/prog/wc.awk @@ -26340,29 +27298,35 @@ # Options: # -l only count lines # -w only count words -# -c only count characters +# -c only count bytes +# -m only count characters # -# Default is to count lines, words, characters +# Default is to count lines, words, bytes # # Requires getopt() and file transition library functions +# Requires mbs extension from gawkextlib + +@@load "mbs" BEGIN @{ # let getopt() print a message about # invalid options. we ignore them - while ((c = getopt(ARGC, ARGV, "lwc")) != -1) @{ + while ((c = getopt(ARGC, ARGV, "lwcm")) != -1) @{ if (c == "l") do_lines = 1 else if (c == "w") do_words = 1 else if (c == "c") + do_bytes = 1 + else if (c == "m") do_chars = 1 @} for (i = 1; i < Optind; i++) ARGV[i] = "" - # if no options, do all - if (! do_lines && ! do_words && ! do_chars) - do_lines = do_words = do_chars = 1 + # if no options, do lines, words, bytes + if (! do_lines && ! do_words && ! do_chars && ! do_bytes) + do_lines = do_words = do_bytes = 1 print_total = (ARGC - i > 1) @} @@ -26370,14 +27334,14 @@ @end example The @code{beginfile()} function is simple; it just resets the counts of lines, -words, and characters to zero, and saves the current @value{FN} in +words, characters and bytes to zero, and saves the current @value{FN} in @code{fname}: @example @c file eg/prog/wc.awk function beginfile(file) @{ - lines = words = chars = 0 + lines = words = chars = bytes = 0 fname = FILENAME @} @c endfile @@ -26395,6 +27359,7 @@ tlines += lines twords += words tchars += chars + tbytes += bytes if (do_lines) printf "\t%d", lines @group @@ -26403,26 +27368,28 @@ @end group if (do_chars) printf "\t%d", chars + if (do_bytes) + printf "\t%d", bytes printf "\t%s\n", fname @} @c endfile @end example There is one rule that is executed for each line. It adds the length of -the record, plus one, to @code{chars}.@footnote{Because @command{gawk} -understands multibyte locales, this code counts characters, not bytes.} -Adding one plus the record length +the record, plus one, to @code{chars}. Adding one plus the record length is needed because the newline character separating records (the value of @code{RS}) is not part of the record itself, and thus not included -in its length. Next, @code{lines} is incremented for each line read, -and @code{words} is incremented by the value of @code{NF}, which is the -number of ``words'' on this line: +in its length. Similarly, it adds the length of the record in bytes, +plus one, to @code{bytes}. Next, @code{lines} is incremented for each +line read, and @code{words} is incremented by the value of @code{NF}, +which is the number of ``words'' on this line: @example @c file eg/prog/wc.awk # do per line @{ chars += length($0) + 1 # get newline + bytes += mbs_length($0) + 1 lines++ words += NF @} @@ -26441,6 +27408,8 @@ printf "\t%d", twords if (do_chars) printf "\t%d", tchars + if (do_bytes) + printf "\t%d", tbytes print "\ttotal" @} @} @@ -26508,7 +27477,7 @@ current record is skipped. Otherwise, the program loops through each word, comparing it to the previous one: -@cindex @code{dupword.awk} program +@cindex @file{dupword.awk} program @example @c file eg/prog/dupword.awk # dupword.awk --- find duplicate words in text @@ -26600,7 +27569,7 @@ @code{if}-@code{else} statements instead. Here is the program: -@cindex @code{alarm.awk} program +@cindex @file{alarm.awk} program @example @c file eg/prog/alarm.awk # alarm.awk --- set an alarm @@ -26796,7 +27765,7 @@ Finally, the processing rule simply calls @code{translate()} for each record: -@cindex @code{translate.awk} program +@cindex @file{translate.awk} program @example @c file eg/prog/translate.awk # translate.awk --- do tr-like stuff @@ -26949,7 +27918,7 @@ The @code{END} rule arranges to flush the final page of labels; there may not have been an even multiple of 20 labels in the data: -@cindex @code{labels.awk} program +@cindex @file{labels.awk} program @example @c file eg/prog/labels.awk # labels.awk --- print mailing labels @@ -27080,7 +28049,7 @@ by using the system @command{sort} utility to process the output of the @command{awk} script. Here is the new version of the program: -@cindex @code{wordfreq.awk} program +@cindex @file{wordfreq.awk} program @example @c file eg/prog/wordfreq.awk # wordfreq.awk --- print list of word frequencies @@ -27172,7 +28141,7 @@ The @code{END} rule simply prints out the lines, in order: @cindex Rakitzis, Byron -@cindex @code{histsort.awk} program +@cindex @file{histsort.awk} program @example @c file eg/prog/histsort.awk # histsort.awk --- compact a shell history file @@ -27342,7 +28311,7 @@ given (@code{NF} is at least three) and also checking that the command exits with a zero exit status, signifying OK: -@cindex @code{extract.awk} program +@cindex @file{extract.awk} program @example @c file eg/prog/extract.awk # extract.awk --- extract files and run programs from Texinfo files @@ -28084,7 +29053,7 @@ words with the same signature and array sorting to print the words in sorted order: -@cindex @code{anagram.awk} program +@cindex @file{anagram.awk} program @example @c file eg/prog/anagram.awk # anagram.awk --- An implementation of the anagram-finding algorithm @@ -28368,7 +29337,7 @@ same way. @item -The @code{split.awk} program (@pxref{Split Program}) assumes +The @file{split.awk} program (@pxref{Split Program}) assumes that letters are contiguous in the character set, which isn't true for EBCDIC systems. Fix this problem. @@ -28376,12 +29345,13 @@ without relying on @code{ord()} and @code{chr()}.) @item +@cindex Kernighan, Brian @subentry quotes In @file{uniq.awk} (@pxref{Uniq Program}, the logic for choosing which lines to print represents a @dfn{state -machine}, which is ``a device that can be in one of a set number of stable +machine}, which is ``a device which can be in one of a set number of stable conditions depending on its previous condition and on the present values -of its inputs.''@footnote{This is the definition returned from entering -@code{define: state machine} into Google.} +of its inputs.''@footnote{This definition is from +@uref{https://www.lexico.com/en/definition/state_machine}.} Brian Kernighan suggests that ``an alternative approach to state machines is to just read the input into an array, then use indexing. It's almost always @@ -28580,6 +29550,7 @@ * Two-way I/O:: Two-way communications with another process. * TCP/IP Networking:: Using @command{gawk} for network programming. * Profiling:: Profiling your @command{awk} programs. +* Extension Philosophy:: What should be built-in and what should not. * Advanced Features Summary:: Summary of advanced features. @end menu @@ -28626,9 +29597,9 @@ using this facility could lead to surprising results, the default is to leave it disabled. If you want it, you must explicitly request it. -@cindex programming conventions @subentry @code{--non-decimal-data} option +@cindex programming conventions @subentry @option{--non-decimal-data} option @cindex @option{--non-decimal-data} option @subentry @code{strtonum()} function and -@cindex @code{strtonum()} function (@command{gawk}) @subentry @code{--non-decimal-data} option and +@cindex @code{strtonum()} function (@command{gawk}) @subentry @option{--non-decimal-data} option and @quotation CAUTION @emph{Use of this option is not recommended.} It can break old programs very badly. @@ -29036,6 +30007,12 @@ both arrays use the values. @end quotation +You may use the same array for both the first and second arguments to +@code{asort()} and @code{asorti()}. Doing so only makes sense if you +are also supplying the third argument, since @command{awk} doesn't +provide a way to pass that third argument without also passing the first +and second ones. + @c Document It And Call It A Feature. Sigh. @cindex @command{gawk} @subentry @code{IGNORECASE} variable in @cindex arrays @subentry sorting @subentry @code{IGNORECASE} variable and @@ -29346,7 +30323,7 @@ printf("%d\n", x + y); return 0; @} -$ @kbd{cc -O add.c -o add} @ii{Compile the program} +$ @kbd{cc -O add.c -o add} @ii{Compile the program} @end example You could then write an exceedingly simple @command{gawk} program @@ -29711,6 +30688,12 @@ the @code{BEGINFILE} and @code{ENDFILE} rules, the pattern--action rules, and the functions. +@item +Functions are listed alphabetically. All functions in the @code{awk} +namespace are listed first, in alphabetical order. Then come the +functions in namespaces. The namespaces are listed in alphabetical order, +and the functions within each namespace are listed alphabetically. + @end itemize The profiled version of your program may not look exactly like what you @@ -29848,6 +30831,51 @@ constants; if you used an octal or hexadecimal value in your source code, it will appear that way in the output. +@node Extension Philosophy +@section Builtin Features versus Extensions + +As this and subsequent @value{CHAPTER}s show, @command{gawk} has a +large number of extensions over standard @command{awk} built-in to +the program. These have developed over time. More recently, the +focus has moved to using the extension mechanism (@pxref{Dynamic Extensions}) +for adding features. This @value{SECTION} discusses the ``guiding philosophy'' +behind what should be added to the interpreter as a built-in +feature versus what should be done in extensions. + +There are several goals: + +@enumerate 1 +@item +Keep the language @command{awk}; it should not become unrecognizable, even +if programs in it will only run on @command{gawk}. + +@item +Keep the core from getting any larger unless absolutely necessary. + +@item +Add new functionality either in @command{awk} scripts (@option{-f}, +@code{@@include}) or in loadable extensions written in C or C++ +(@option{-l}, @code{@@load}). + +@item +Extend the core interpreter only if some feature is: + +@c sublist +@enumerate A +@item +Truly desirable. +@item +Cannot be done via library files or loadable extensions. +@item +Can be implemented without too much pain in the core. +@end enumerate +@end enumerate +Combining modules with @command{awk} files is a powerful technique. +Some of the sample extensions demonstrate this. + +Loading extensions and library files should not be done automatically, +because then there's overhead that most users don't want or need. + @node Advanced Features Summary @section Summary @@ -29890,12 +30918,28 @@ @item You can also just ``pretty-print'' the program. +@item +New features should be developed using the extension mechanism if possible; +they should be added to the core interpreter only as a last resort. @end itemize @node Internationalization @chapter Internationalization with @command{gawk} +@cindex Robbins @subentry Malka +@cindex Moon, Sailor +@cindex Sailor Moon @seeentry{Moon, Sailor} +@quotation +@i{Moon@dots{} Gorgeous@dots{} MEDITATION!} +@author Pretty Guardian Sailor Moon Eternal, The Movie +@end quotation + +@quotation +@i{It probably sounded better in Japanese.} +@author Malka Robbins +@end quotation + Once upon a time, computer makers wrote software that worked only in English. Eventually, hardware and software vendors noticed that if their @@ -30383,7 +31427,7 @@ gawk --gen-pot -f guide.awk > guide.pot @end example -@cindex @code{xgettext} utility +@cindex @command{xgettext} utility When run with @option{--gen-pot}, @command{gawk} does not execute your program. Instead, it parses it as usual and prints all marked strings to standard output in the format of a GNU @command{gettext} Portable Object @@ -31946,7 +32990,6 @@ partial dump of Davide Brini's obfuscated code (@pxref{Signature Program}) demonstrates: -@c FIXME: This will need updating if num-handler branch is ever merged in. @smallexample @group gawk> @kbd{dump} @@ -34229,6 +35272,7 @@ * General Data Types:: The data types. * Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. +* API Ownership of MPFR and GMP Values:: Managing MPFR and GMP Values. * Registration Functions:: Functions to register things with @command{gawk}. * Printing Messages:: Functions for printing messages. @@ -34372,11 +35416,20 @@ @item All pointers filled in by @command{gawk} point to memory managed by @command{gawk} and should be treated by the extension as -read-only. Memory for @emph{all} strings passed into @command{gawk} +read-only. + +Memory for @emph{all} strings passed into @command{gawk} from the extension @emph{must} come from calling one of @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}, and is managed by @command{gawk} from then on. +Memory for MPFR/GMP values that come from @command{gawk} +should also be treated as read-only. However, unlike strings, +memory for MPFR/GMP values allocated by an extension and passed +into @command{gawk} is @emph{copied} by @command{gawk}; the extension +should then free the values itself to avoid memory leaks. This is +discussed further in @strong{API Ownership of MPFR and GMP Values}. + @item The API defines several simple @code{struct}s that map values as seen from @command{awk}. A value can be a @code{double}, a string, or an @@ -34544,6 +35597,13 @@ member is either a GMP integer (type @code{mpz_ptr}), or an MPFR floating-point value (type @code{mpfr_ptr_t}), and cast it appropriately. +@quotation CAUTION +Any MPFR or MPZ values that you create and pass to @command{gawk} +to save are @emph{copied}. This means you are responsible to release +the storage once you're done with it. See the sample @code{intdiv} +extension for some example code. +@end quotation + @item typedef void *awk_scalar_t; Scalars can be represented as an opaque type. These values are obtained from @command{gawk} and then passed back into it. This is discussed @@ -34730,7 +35790,16 @@ Two additional functions allocate MPFR and GMP objects for use by extension functions that need to create and then return such -values: +values. + +@quotation NOTE +These functions are obsolete. Extension functions that need local MPFR +and GMP values should simply allocate them on the stack and clear them, +as any other code would. +@end quotation + +@noindent +The functions are: @table @code @item void *get_mpfr_ptr(); @@ -34753,6 +35822,9 @@ the return values appropriately before assigning the results to variables of the correct types. +The memory allocated by these functions should be freed with +@code{gawk_free()}. + @node Constructor Functions @subsection Constructor Functions @@ -34793,14 +35865,11 @@ This function creates a GMP number value in @code{result}. The @code{mpz} must be from a call to @code{get_mpz_ptr()} (and thus be of real underlying type @code{mpz_ptr}). -@command{gawk} takes ownership of this memory. @item static inline awk_value_t * @itemx make_number_mpfr(void *mpfr, awk_value_t *result); This function creates an MPFR number value in @code{result}. The @code{mpfr} must be from a call to @code{get_mpfr_ptr()}. -(and thus be of real underlying type @code{mpfr_ptr}) -@command{gawk} takes ownership of this memory. @item static inline awk_value_t * @itemx make_const_user_input(const char *string, size_t length, awk_value_t *result); @@ -34828,6 +35897,44 @@ @end table +@node API Ownership of MPFR and GMP Values +@subsection Managing MPFR and GMP Values +@cindex MPFR values, API ownership of +@cindex GMP values, API ownership of +@cindex API, ownership of MPFR and GMP values + +MPFR and GMP values are different from string values, where you can +``take ownership'' of the value simply by assigning pointers. For example: + +@example +char *p = gawk_malloc(42); p @ii{``owns'' the memory} +char *q = p; +p = NULL; @ii{now} q @ii{``owns'' it} +@end example + +MPFR and GMP objects are indeed allocated on the stack or dynamically, +but the MPFR and GMP libraries treat these objects as values, the same way that +you would pass an @code{int} or a @code{double} by value. There is no +way to ``transfer ownership'' of MPFR and GMP objects. Thus, code in +an extension should look like this: + +@example +mpz_t part1, part2, answer; @ii{declare local values} + +mpz_set_si(part1, 21); @ii{do some computations} +mpz_set_si(part2, 21); +mpz_add(answer, part1, part2); +@dots{} +/* assume that result is a parameter of type (awk_value_t *). */ +make_number_mpz(answer, & result); @ii{set it with final GMP value} + +mpz_clear(part1); @ii{release intermediate values} +mpz_clear(part2); +mpz_clear(answer); + +return result; +@end example + @node Registration Functions @subsection Registration Functions @cindex register loadable extension @@ -35823,7 +36930,7 @@ @item awk_bool_t sym_update_ns(const char *name_space, const char *name, awk_value_t *value); This is like @code{sym_update()}, but the @code{name_space} parameter allows you to specify which namespace @code{name} is part of. @code{name_space} cannot be -@code{NULL}. If it is @code{""} or @code{"awk}, then @code{name} is searched +@code{NULL}. If it is @code{""} or @code{"awk"}, then @code{name} is searched for in the default @code{awk} namespace. @end table @@ -38122,7 +39229,7 @@ to inplace editing. The @code{inplace::filename} variable serves to keep track of the -current filename so as to not invoke @code{inplace::end()} before +current @value{FN} so as to not invoke @code{inplace::end()} before processing the first file. If any error occurs, the extension issues a fatal error to terminate @@ -38497,7 +39604,7 @@ download @code{gawkextlib} and any extensions that you would like to build. The @file{README} file at that site explains how to build the code. If you installed @command{gawk} in a non-standard location, you will need to -specify @code{./configure --with-gawk=@var{/path/to/gawk}} to find it. +specify @samp{./configure --with-gawk=@var{/path/to/gawk}} to find it. You may need to use the @command{sudo} utility to install both @command{gawk} and @code{gawkextlib}, depending upon how your system works. @@ -39602,8 +40709,9 @@ @item The @code{extension()} function and the ability to add -new built-in functions dynamically -(@pxref{Dynamic Extensions}). +new built-in functions dynamically. This has seen removed. +It was replaced by the new extension mechanism. +@xref{Dynamic Extensions}. @item The @code{mktime()} function for creating timestamps @@ -39703,7 +40811,7 @@ (@pxref{Splitting By Content}). @item -If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the +If @code{PROCINFO["sorted_in"]} exists, @samp{for (iggy in foo)} loops sort the indices before looping over them. The value of this element provides control over how the indices are sorted before the loop traversal starts @@ -40089,6 +41197,32 @@ @item Support was added for MSYS2. + +@item +@code{asort()} and @code{asorti()} were changed to +allow @code{FUNCTAB} and @code{SYMTAB} as the first argument if a +second destination array is supplied (@pxref{String Functions}). + +@item +The @option{-I}/@option{--trace} options were added to +print a trace of the byte codes as they execute (@pxref{Options}). + +@item +@code{$0} and the fields are now cleared before starting a +@code{BEGINFILE} rule (@pxref{BEGINFILE/ENDFILE}). + +@item +Several example programs in the manual were updated to their modern +POSIX equivalents. + +@item +The ``no effect'' lint warnings from @option{--lint} were fixed up +and now behave more sanely (@pxref{Options}). + +@item +Handling of Infinity and NaN values were improved. +@xref{Math Definitions}, and also see +@ref{POSIX Floating Point Problems}. @end itemize @c XXX ADD MORE STUFF HERE @@ -40625,15 +41759,15 @@ @node Extracting @appendixsubsec Extracting the Distribution -@command{gawk} is distributed as several @code{tar} files compressed with +@command{gawk} is distributed as several @command{tar} files compressed with different compression programs: @command{gzip}, @command{bzip2}, and @command{xz}. For simplicity, the rest of these instructions assume you are using the one compressed with the GNU Gzip program (@command{gzip}). Once you have the distribution (e.g., @file{gawk-@value{VERSION}.@value{PATCHLEVEL}.tar.gz}), -use @code{gzip} to expand the -file and then use @code{tar} to extract it. You can use the following +use @command{gzip} to expand the +file and then use @command{tar} to extract it. You can use the following pipeline to produce the @command{gawk} distribution: @example @@ -40706,15 +41840,21 @@ @item ChangeLog A detailed list of source code changes as bugs are fixed or improvements made. +There are similar files in all of the subdirectories. @item ChangeLog.0 -An older list of source code changes. +@itemx ChangeLog.1 +Older lists of source code changes. +There are similar files in all of the subdirectories. @item NEWS A list of changes to @command{gawk} since the last release or patch. +There may be similar files in other subdirectories. @item NEWS.0 -An older list of changes to @command{gawk}. +@itemx NEWS.1 +Older lists of changes to @command{gawk}. +There may be similar files in other subdirectories. @item COPYING The GNU General Public License. @@ -40785,6 +41925,23 @@ The generated Info file for @cite{@value{GAWKINETTITLE}}. +@item doc/gawkworkflow.texi +The Texinfo source file for +@ifinfo +@inforef{Top, , General Introduction, gawkworkflow, @value{GAWKWORKFLOWTITLE}}. +@end ifinfo +@ifnotinfo +@cite{@value{GAWKWORKFLOWTITLE}}. +@end ifnotinfo +It should be processed with @TeX{} +(via @command{texi2dvi} or @command{texi2pdf}) +to produce a printed document and +with @command{makeinfo} to produce an Info or HTML file. + +@item doc/gawkworkflow.info +The generated Info file for +@cite{@value{GAWKWORKFLOWTITLE}}. + @item doc/igawk.1 The @command{troff} source for a manual page describing the @command{igawk} program presented in @@ -40886,11 +42043,17 @@ * Shell Startup Files:: Shell convenience functions. * Additional Configuration Options:: Other compile-time options. * Configuration Philosophy:: How it's all supposed to work. +* Compiling from Git:: Compiling from Git. +* Building the Documentation:: Building the Documentation. @end menu @node Quick Installation @appendixsubsec Compiling @command{gawk} for Unix-Like Systems +@menu +* Compiling with MPFR:: Building with MPFR. +@end menu + The normal installation steps should work on all modern commercial Unix-derived systems, GNU/Linux, BSD-based systems, and the Cygwin environment for MS-Windows. @@ -40964,6 +42127,24 @@ to have been set up previously as a user who is allowed to run the @command{sudo} command. + +@node Compiling with MPFR +@appendixsubsubsec Building With MPFR + +@cindex MPFR library, building with +Use of the MPFR library with @command{gawk} +is an optional feature: if you have the MPFR and GMP libraries already installed +when you configure and build @command{gawk}, +@command{gawk} automatically will be able to use them. + +You can install these libraries from source code by fetching them +from the GNU distribution site at @code{ftp.gnu.org}. + +Most modern systems provide package managers which save you the trouble +of building from source. They fetch and install the library header files +and binaries for you. You will need to research how to do this for +your particular system. + @node Shell Startup Files @appendixsubsec Shell Startup Files @@ -41019,7 +42200,7 @@ @table @code @cindex @option{--disable-extensions} configuration option -@cindex configuration option @subentry @code{--disable-extensions} +@cindex configuration option @subentry @option{--disable-extensions} @item --disable-extensions Disable the extension mechanism within @command{gawk}. With this option, it is not possible to use dynamic extensions. This also @@ -41031,7 +42212,7 @@ can be configured and compiled. @cindex @option{--disable-lint} configuration option -@cindex configuration option @subentry @code{--disable-lint} +@cindex configuration option @subentry @option{--disable-lint} @item --disable-lint Disable all lint checking within @command{gawk}. The @option{--lint} and @option{--lint-old} options @@ -41054,21 +42235,21 @@ @end quotation @cindex @option{--disable-mpfr} configuration option -@cindex configuration option @subentry @code{--disable-mpfr} +@cindex configuration option @subentry @option{--disable-mpfr} @item --disable-mpfr Skip checking for the MPFR and GMP libraries. This is useful mainly for the developers, to make sure nothing breaks if MPFR support is not available. @cindex @option{--disable-nls} configuration option -@cindex configuration option @subentry @code{--disable-nls} +@cindex configuration option @subentry @option{--disable-nls} @item --disable-nls Disable all message-translation facilities. This is usually not desirable, but it may bring you some slight performance improvement. @cindex @option{--enable-versioned-extension-dir} configuration option -@cindex configuration option @subentry @code{--enable-versioned-extension-dir} +@cindex configuration option @subentry @option{--enable-versioned-extension-dir} @item --enable-versioned-extension-dir Use a versioned directory for extensions. The directory name will include the major and minor API versions in it. This makes it possible @@ -41091,7 +42272,7 @@ standards wherever possible. This means that @command{gawk} uses library routines that are specified by the ISO C standard and by the POSIX operating system interface standard. -The @command{gawk} source code requires using an ISO C compiler (the 1990 +The @command{gawk} source code requires using an ISO C compiler (the 1999 standard). Many Unix systems do not support all of either the ISO or the @@ -41129,6 +42310,64 @@ The same mechanism may be used to send in updates to @file{configure.ac} and/or @file{custom.h}. +@node Compiling from Git +@appendixsubsec Compiling from Git + +Building @command{gawk} directly from the development source control +repository is possible, but not recommended for everyday users, as the +code may not be as stable as released versions are. If you really do +want to do that, here are the steps: + +@example +git clone https://git.savannah.gnu.org/r/gawk.git +cd gawk +./bootstrap.sh && ./configure && make && make check +@end example + +@node Building the Documentation +@appendixsubsec Building the Documentation + +@cindex documentation @subentry building @subentry Info files +The generated Info documentation is included in the distribution +@command{tar} files and in the Git source code repository; you should +not need to rebuild it. However, if it needs to be done, simply running +@command{make} will do it, assuming that you have a recent enough version +of @command{makeinfo} installed. + +@cindex documentation @subentry building @subentry PDF +If you wish to build the PDF version of the manuals, you will need +to have @TeX{} installed, and possibly additional packages that +provide the necessary fonts and tools, such as @command{dvi2pdf} +and @command{ps2pdf}. You will also need GNU Troff (@command{groff}) +installed in order to format the reference card and the manual page +(@pxref{Distribution contents}). Managing this process is beyond the +scope of this @value{DOCUMENT}. + +Assuming you have all you need, then the following commands produce the +PDF versions of the documentation: + +@example +cd doc +make pdf +@end example + +@noindent +This creates PDF versions of all three Texinfo documents included +in the distribution, as well as of the manual page and the reference card. + +@cindex documentation @subentry building @subentry HTML +Similarly, if you have a recent enough version of @command{makeinfo}, +you can make the HTML version of the manuals with: + +@example +cd doc +make html +@end example + +@noindent +This creates HTML versions of all three Texinfo documents included +in the distribution. + @node Non-Unix Installation @appendixsec Installation on Other Operating Systems @@ -41374,7 +42613,7 @@ @cindex @command{gawk} @subentry VMS version of @cindex installing @command{gawk} @subentry VMS -This @value{SUBSECTION} describes how to compile and install @command{gawk} under VMS. +This @value{SUBSECTION} describes how to compile and install @command{gawk} under OpenVMS. The older designation ``VMS'' is used throughout to refer to OpenVMS. @menu @@ -41384,7 +42623,6 @@ * VMS Installation Details:: How to install @command{gawk} under VMS. * VMS Running:: How to run @command{gawk} under VMS. * VMS GNV:: The VMS GNV Project. -* VMS Old Gawk:: An old version comes with some VMS systems. @end menu @node VMS Compilation @@ -41526,7 +42764,7 @@ @end example Or the system manager can use @file{GNV$GNU:[vms_bin]gawk_verb.cld} to -add the @command{gawk} and @command{awk} to the system-wide @samp{DCLTABLES}. +add the @command{gawk} and @command{awk} commands to the system-wide @samp{DCLTABLES}. The DCL syntax is documented in the @file{gawk.hlp} file. @@ -41620,8 +42858,6 @@ or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS 7.3, do not set these logical names. -@c @cindex directory search -@c @cindex path, search @cindex search paths @cindex search paths @subentry for source files The default search path, when looking for @command{awk} program files specified @@ -41676,7 +42912,6 @@ $ sort sys$input: sys$output: @end example - @node VMS GNV @appendixsubsubsec The VMS GNV Project @@ -41692,56 +42927,6 @@ The file @file{vms/gawk_build_steps.txt} in the distribution documents the procedure for building a VMS PCSI kit that is compatible with GNV. -@ignore -@c The VMS POSIX product, also known as POSIX for OpenVMS, is long defunct -@c and building gawk for it has not been tested in many years, but these -@c old instructions might still work if anyone is still using it. - -@node VMS POSIX -@appendixsubsubsec Building and Using @command{gawk} on VMS POSIX - -Ignore the instructions above, although @file{vms/gawk.hlp} should still -be made available in a help library. The source tree should be unpacked -into a container file subsystem rather than into the ordinary VMS filesystem. -Make sure that the two scripts, @file{configure} and -@file{vms/posix-cc.sh}, are executable; use @samp{chmod +x} on them if -necessary. Then execute the following two commands: - -@example -psx> @kbd{CC=vms/posix-cc.sh configure} -psx> @kbd{make CC=c89 gawk} -@end example - -@noindent -The first command constructs files @file{config.h} and @file{Makefile} out -of templates, using a script to make the C compiler fit @command{configure}'s -expectations. The second command compiles and links @command{gawk} using -the C compiler directly; ignore any warnings from @command{make} about being -unable to redefine @code{CC}. @command{configure} takes a very long -time to execute, but at least it provides incremental feedback as it runs. - -This has been tested with VAX/VMS V6.2, VMS POSIX V2.0, and DEC C V5.2. - -Once built, @command{gawk} works like any other shell utility. Unlike -the normal VMS port of @command{gawk}, no special command-line manipulation is -needed in the VMS POSIX environment. -@end ignore - -@node VMS Old Gawk -@appendixsubsubsec Some VMS Systems Have An Old Version of @command{gawk} - -@c Thanks to "gerard labadie" - -Some versions of VMS have an old version of @command{gawk}. To access it, -define a symbol, as follows: - -@example -$ @kbd{gawk :== $sys$common:[syshlp.examples.tcpip.snmp]gawk.exe} -@end example - -This is apparently @value{PVERSION} 2.15.6, which is extremely old. We -recommend compiling and using the current version. - @node Bugs @appendixsec Reporting Problems and Bugs @cindex archaeologists @@ -41758,59 +42943,184 @@ but we might well want to fix it. @menu +* Bug definition:: Defining what is and is not a bug. * Bug address:: Where to send reports to. * Usenet:: Where not to send reports to. +* Performance bugs:: What to do if you think there is a performance + issue. +* Asking for help:: Dealing with non-bug questions. * Maintainers:: Maintainers of non-*nix ports. @end menu +@node Bug definition +@appendixsubsec Defining What Is and What Is Not A Bug + +Before talking about reporting bugs, let's define what is a bug, +and what is not. + +A bug is: + +@itemize @bullet +@item +When @command{gawk} behaves differently from what's described +in the POSIX standard, and that difference is not mentioned +in this @value{DOCUMENT} as being done on purpose. + +@item +When @command{gawk} behaves differently from what's described +in this @value{DOCUMENT}. + +@item +When @command{gawk} behaves differently from other @command{awk} +implementations in particular circumstances, and that behavior cannot +be attributed to an additional feature in @command{gawk}. + +@item +Something that is obviously wrong, such as a core dump. + +@item +When this @value{DOCUMENT} is unclear or ambiguous about a particular +feature's behavior. +@end itemize + +The following things are @emph{not} bugs, and should not be reported +to the bug mailing list. You can ask about them on the ``help'' mailing +list (@pxref{Asking for help}), but don't be surprised if you get an +answer of the form ``that's how @command{gawk} behaves and it isn't +going to change.'' Here's the list: + +@itemize @bullet +@item +Missing features, for any definition of @dfn{feature}. For example, +additional built-in arithmetic functions, or additional ways to split +fields or records, or anything else. + +The number of features that @command{gawk} does @emph{not} have is +by definition infinite. It cannot be all things to all people. +In short, just because @command{gawk} doesn't do what @emph{you} +think it should, it's not necessarily a bug. + +@item +Behaviors that are defined by the POSIX standard and/or for historical +compatibility with Unix @command{awk}. Even if you happen to dislike +those behaviors, they're not going to change: changing them would +break millions of existing @command{awk} programs. + +@item +Behaviors that differ from how it's done in other languages. @command{awk} +and @command{gawk} stand on their own and do not have to follow the crowd. +This is particularly true when the requested behavior change would break +backwards compatibility. + +This applies also to differences in behavior between @command{gawk} +and other language compilers and interpreters, such as wishes for more +detailed descriptions of what the problem is when a syntax error is +encountered. + +@item +Documentation issues of the form ``the manual doesn't tell me how to +do XYZ.'' The manual is not a cookbook to solve every little problem +you may have. Its purpose is to teach you how to solve your problems +on your own. + +@item +General questions and discussion about @command{awk} programming or +why @command{gawk} behaves the way it does. For that use the ``help'' +mailing list: see @ref{Asking for help}. +@end itemize + +For more information, see @uref{http://www.skeeve.com/fork-my-code.html, +@cite{Fork My Code, Please!---An Open Letter To Those of You Who Are Unhappy}}, +by Arnold Robbins and Chet Ramey. + @node Bug address @appendixsubsec Submitting Bug Reports Before reporting a bug, make sure you have really found a genuine bug. -First, verify that you have the latest version of @command{gawk}. + +Here are the steps for submitting a bug report. Following them will +make both your life and the lives of the maintainers much easier. + +@enumerate 1 +@item +Make sure that what you want to report is appropriate. +@xref{Bug definition}. If it's not, you are wasting your +time and ours. + +@item +Verify that you have the latest version of @command{gawk}. Many bugs (usually subtle ones) are fixed at each release, and if yours -is out of date, the problem may already have been solved. +is out-of-date, the problem may already have been solved. -Second, please see if setting the environment variable @env{LC_ALL} +@item +Please see if setting the environment variable @env{LC_ALL} to @code{LC_ALL=C} causes things to behave as you expect. If so, it's a locale issue, and may or may not really be a bug. -Third, carefully reread the documentation and see if it says you can do +@item +Carefully reread the documentation and see if it says you can do what you're trying to do. If it's not clear whether you should be able to do something or not, report that too; it's a bug in the documentation! -Finally, before reporting a bug or trying to fix it yourself, try to isolate it +@item +Before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible @command{awk} program and input @value{DF} that -reproduce the problem. Then send us the program and @value{DF}, -some idea of what kind of Unix system you're using, -the compiler you used to compile @command{gawk}, and the exact results +reproduce the problem. Then send us: + +@itemize @bullet +@item +The program and @value{DF}. + +@item +Some idea of what kind of Unix system you're using. + +@item +The compiler you used to compile @command{gawk}. + +@item +The exact results @command{gawk} gave you. Also say what you expected to occur; this helps us decide whether the problem is really in the documentation. -Make sure to include the version number of @command{gawk} you are using. +@item +The version number of @command{gawk} you are using. You can get this information with the command @samp{gawk --version}. +@end itemize + +@item +Do @emph{not} send screenshots. Instead, use copy/paste to send text, or +send files. + +@item +Do send files as attachments, instead of inline. This avoids corruption +by mailer programs out in the wilds of the Internet. + +@item +Please be sure to send all mail in @emph{plain text}, +not (or not exclusively) in HTML. + +@item +@emph{All email must be in English. This is the only language +understood in common by all the maintainers.} +@end enumerate -@cindex @code{bug-gawk@@gnu.org} bug reporting address -@cindex email address for bug reports, @code{bug-gawk@@gnu.org} -@cindex bug reports, email address, @code{bug-gawk@@gnu.org} +@cindex @email{bug-gawk@@gnu.org} bug reporting address +@cindex email address for bug reports, @email{bug-gawk@@gnu.org} +@cindex bug reports, email address, @email{bug-gawk@@gnu.org} Once you have a precise problem description, send email to -@EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. +@EMAIL{bug-gawk@@gnu.org,bug dash gawk at gnu dot org}. The @command{gawk} maintainers subscribe to this address, and thus they will receive your bug report. Although you can send mail to the maintainers directly, the bug reporting address is preferred because the email list is archived at the GNU Project. -@emph{All email must be in English. This is the only language -understood in common by all the maintainers.} -In addition, please be sure to send all mail in @emph{plain text}, -not (or not exclusively) in HTML. @quotation NOTE Many distributions of GNU/Linux and the various BSD-based operating systems have their own bug reporting systems. If you report a bug using your distribution's bug reporting system, you should also send a copy to -@EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. +@EMAIL{bug-gawk@@gnu.org,bug dash gawk at gnu dot org}. This is for two reasons. First, although some distributions forward bug reports ``upstream'' to the GNU mailing list, many don't, so there is a good @@ -41819,10 +43129,6 @@ keeps things self-contained and not dependent on other organizations. @end quotation -Non-bug suggestions are always welcome as well. If you have questions -about things that are unclear in the documentation or are just obscure -features, ask on the bug list; we will try to help you out if we can. - Please note: We ask that you follow the @uref{https://gnu.org/philosophy/kind-communication.html, GNU Kind Communication Guidelines} in your correspondence on the @@ -41850,6 +43156,10 @@ @command{gawk} maintainer no longer does. Thus it's virtually guaranteed that he will @emph{not} see your posting. +If you really don't care about the previous paragraph and continue to +post bug reports in @code{comp.lang.awk}, then understand that you're +not reporting bugs, you're just whining. + Similarly, posting bug reports or questions in web forums (such as @uref{https://stackoverflow.com/, Stack Overflow}) may get you an answer, but it won't be from the @command{gawk} maintainers, @@ -41869,6 +43179,151 @@ metaphors, you can throw rocks from there." @end ignore +@node Performance bugs +@appendixsubsec What To Do If You Think There Is A Performance Issue + +@cindex performance, checking issues +@cindex profiling, compiling @command{gawk} for +If you think that @command{gawk} is too slow at doing a particular task, +you should investigate before sending in a bug report. Here are the steps +to follow: + +@enumerate 1 +@item +Run @command{gawk} with the @option{--profile} option (@pxref{Options}) +to see what your +program is doing. It may be that you have written it in an inefficient manner. +For example, you may be doing something for every record that could be done +just once, for every file. +(Use a @code{BEGINFILE} rule; @pxref{BEGINFILE/ENDFILE}.) +Or you may be doing something for every file that only needs to be done +once per run of the program. +(Use a @code{BEGIN} rule; @pxref{BEGIN/END}.) + +@item +If profiling at the @command{awk} level doesn't help, then you will +need to compile @command{gawk} itself for profiling at the C language level. + +To do that, start with the latest released version of +@command{gawk}. Unpack the source code in a new directory, and configure +it: + +@example +$ @kbd{tar -xpzvf gawk-X.Y.Z.tar.gz} +@print{} @dots{} @ii{Output omitted} +$ @kbd{cd gawk-X.Y.Z} +$ @kbd{./configure} +@print{} @dots{} @ii{Output omitted} +@end example + +@item +Edit the files @file{Makefile} and @file{support/Makefile}. +Change every instance of @option{-O2} or @option{-O} to @option{-pg}. +This causes @command{gawk} to be compiled for profiling. + +@item +Compile the program by running the @command{make} command: + +@example +@group +$ @kbd{make} +@print{} @dots{} @ii{Output omitted} +@end group +@end example + +@item +Run the freshly compiled @command{gawk} on a @emph{real} program, +using @emph{real} data. Using an artificial program to try to time one +particular feature of @command{gawk} is useless; real @command{awk} programs +generally spend most of their time doing I/O, not computing. If you want to prove +that something is slow, it @emph{must} be done using a real program and real data. + +Use a data file that is large enough for the statistical profiling to measure +where @command{gawk} spends its time. It should be at least 100 megabytes in size. + +@example +$ @kbd{./gawk -f realprogram.awk realdata > /dev/null} +@end example + +@item +When done, you should have a file in the current directory named @file{gmon.out}. +Run the command @samp{gprof gawk gmon.out > gprof.out}. + +@item +Submit a bug report explaining what you think is slow. Include the @file{gprof.out} +file with it. + +Preferably, you should also submit the program and the data, or else indicate where to +get the data if the file is large. + +@item +If you have not submitted your program and data, be prepared to apply patches and +rerun the profiling in order to see if the patches were effective. + +@end enumerate + +If you are incapable or unwilling to do the steps listed above, then you will +just have to live with @command{gawk} as it is. + +@node Asking for help +@appendixsubsec Where To Send Non-bug Questions + +If you have questions related to @command{awk} programming, or why @command{gawk} +behaves a certain way, or any other @command{awk}- or @command{gawk}-related issue, +please @emph{do not} send it to the bug reporting address. + +As of July, 2021, there is a separate mailing list for this purpose: +@EMAIL{help-gawk@@gnu.org, help dash gawk at gnu dot org}. +Anything that is not a bug report should be sent to that list. + +@quotation NOTE +If you disregard these directions and send non-bug mails to the bug list, +you will be told to use the help list. +After two such requests you will be silently @emph{blacklisted} from the bug list. +@end quotation + +Please note: As with the bug list, we ask that you follow the +@uref{https://gnu.org/philosophy/kind-communication.html, +GNU Kind Communication Guidelines} in your correspondence on the help +list (as well as off of it). + +@cindex Proulx, Bob +If you wish to the subscribe to the list, in order to help out +others, or to learn from others, here are instructions, courtesy +of Bob Proulx: + +@table @emph +@item Subscribe by email + +Send an email message to +@EMAIL{help-gawk-request@@gnu.org, help dash gawk dash request at gnu dot org} +with ``subscribe'' in +the body of the message. The subject does not matter and is not used. + +@item Subscribe by web form + +To use the web interface visit +@uref{https://lists.gnu.org/mailman/listinfo/help-gawk, +the list information page}. +Use the +subscribe form to fill out your email address and submit using the +@code{Subscribe} button. + +@item Reply to the confirmation message + +In both cases then reply to the confirmation message that is sent to +your address in reply. +@end table + +Bob mentions that you may also use email for subscribing and +unsubscribing. For example: + +@example +$ @kbd{echo help | mailx -s request help-gawk-request@@gnu.org} +$ @kbd{echo subscribe | mailx -s request help-gawk-request@@gnu.org} +$ @kbd{echo unsubscribe | mailx -s request help-gawk-request@@gnu.org} +@end example + @node Maintainers @appendixsubsec Reporting Problems with Non-Unix Ports @@ -41899,13 +43354,13 @@ @c OS/2 is not mentioned anywhere else though. @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de} -@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net} +@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl dot net} -@item z/OS (OS/390) @tab Daniel Richard G.@: @EMAIL{skunk@@iSKUNK.ORG,skunk at iSKUNK.ORG} +@item z/OS (OS/390) @tab Daniel Richard G.@: @EMAIL{skunk@@iSKUNK.ORG,skunk at iSKUNK dot ORG} @end multitable If your bug is also reproducible under Unix, send a copy of your -report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well. +report to the @EMAIL{bug-gawk@@gnu.org,bug dash gawk at gnu dot org} email list as well. @node Other Versions @appendixsec Other Freely Available @command{awk} Implementations @@ -42019,8 +43474,7 @@ @command{awk} functionality. It also has a number of extensions. -The @command{awk} translator is released under the GPL, and the library -is under the LGPL. +Both the @command{awk} translator and the library are released under the GPL. To get @command{awka}, go to @url{https://sourceforge.net/projects/awka}. @c You can reach Andrew Sumner at @email{andrew@@zbcom.net}. @@ -42029,6 +43483,10 @@ The project seems to be frozen; no new code changes have been made since approximately 2001. +@item Revive Awka +This project, available at @uref{https://github.com/noyesno/awka}, +intends to fix bugs in @command{awka} and add more features. + @cindex Beebe, Nelson H.F.@: @cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk}) @cindex source code @subentry @command{pawk} (profiling version of Brian Kernighan's @command{awk}) @@ -42073,6 +43531,16 @@ makes this implementation available. You can view the files one at a time from @uref{https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4}. +@cindex @command{frawk} +@cindex source code @subentry @command{frawk} +@item @command{frawk} +This is a language for writing short programs. ``To a first +approximation, it is an implementation of the AWK language; +many common @command{awk} programs produce equivalent output +when passed to @command{frawk}.'' However, it has a number of +important additional features. The code is available at +@uref{https://github.com/ezrosent/frawk}. + @cindex @command{goawk} @cindex Go implementation of @command{awk} @cindex source code @subentry @command{goawk} @@ -42094,7 +43562,12 @@ to be a full interpreter, although because it uses Java facilities for I/O and for regexp matching, the language it supports is different from POSIX @command{awk}. More information is available on the -@uref{https://jawk.sourceforge.net, project's home page}. +@uref{http://jawk.sourceforge.net, project's home page}. + +@item Hoijui's @command{jawk} +This project, available at @uref{https://github.com/hoijui/Jawk}, +is another @command{awk} interpreter written in Java. It uses +modern Java build tools. @item Libmawk @cindex libmawk @@ -42145,6 +43618,9 @@ @end table +An interesting collection of library functions is available +at @uref{https://github.com/e36freak/awk-libs}. + @node Installation summary @appendixsec Summary @@ -42175,12 +43651,16 @@ Instructions for each system are included in this @value{APPENDIX}. @item -Bug reports should be sent via email to @email{bug-gawk@@gnu.org}. +Bug reports should be sent via email to @EMAIL{bug-gawk@@gnu.org, bug dash gawk at gnu dot org}. Bug reports should be in English and should include the version of @command{gawk}, how it was compiled, and a short program and @value{DF} that demonstrate the problem. @item +Non-bug emails should be sent to @EMAIL{help-gawk@@gnu.org, help dash gawk at gnu dot org}. +Repeatedly sending non-bug emails to the bug list will get you blacklisted from it. + +@item There are a number of other freely available @command{awk} implementations. Many are POSIX-compliant; others are less so. @@ -42450,7 +43930,7 @@ information.) Using this format makes it easy for me to apply your changes to the -master version of the @command{gawk} source code (using @code{patch}). +master version of the @command{gawk} source code (using @command{patch}). If I have to apply the changes manually, using a text editor, I may not do so, particularly if there are lots of changes. @@ -42493,7 +43973,7 @@ effect, or assign the copyright in your code to the FSF. Both of these actions are easy to do and @emph{many} people have done so already. If you have questions, please contact me, or -@email{gnu@@gnu.org}. +@EMAIL{gnu@@gnu.org, gnu at gnu dot org}. @item When doing a port, bear in mind that your code must coexist peacefully @@ -42846,18 +44326,18 @@ @multitable @columnfractions .40 .60 @headitem Item @tab Limit @item Characters in a character class @tab 2^(number of bits per byte) -@item Length of input record @tab @code{MAX_INT} +@item Length of input record in bytes @tab @code{ULONG_MAX} @item Length of output record @tab Unlimited @item Length of source line @tab Unlimited -@item Number of fields in a record @tab @code{MAX_LONG} +@item Number of fields in a record @tab @code{ULONG_MAX} @item Number of file redirections @tab Unlimited @item Number of input records in one file @tab @code{MAX_LONG} @item Number of input records total @tab @code{MAX_LONG} @item Number of pipe redirections @tab min(number of processes per user, number of open files) @item Numeric values @tab Double-precision floating point (if not using MPFR) -@item Size of a field @tab @code{MAX_INT} -@item Size of a literal string @tab @code{MAX_INT} -@item Size of a printf string @tab @code{MAX_INT} +@item Size of a field in bytes @tab @code{ULONG_MAX} +@item Size of a literal string in bytes @tab @code{ULONG_MAX} +@item Size of a printf string in bytes @tab @code{ULONG_MAX} @end multitable @node Extension Design @@ -45700,7 +47180,3 @@ which sorta sucks. TODO: -Add a section explaining recursion from ground zero. Probably -easiest to do it with factorial as the example. Explain that -recursion needs a stopping condition. Thanks to -Bill Duncan for the suggestion. diff -urN gawk-5.1.0/doc/gawktexi.in gawk-5.1.1/doc/gawktexi.in --- gawk-5.1.0/doc/gawktexi.in 2020-04-13 09:46:18.000000000 +0300 +++ gawk-5.1.1/doc/gawktexi.in 2021-10-25 19:18:13.000000000 +0300 @@ -54,11 +54,12 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH March, 2020 +@set UPDATE-MONTH October, 2021 @set VERSION 5.1 -@set PATCHLEVEL 0 +@set PATCHLEVEL 1 @set GAWKINETTITLE TCP/IP Internetworking with @command{gawk} +@set GAWKWORKFLOWTITLE Participating in @command{gawk} Development @ifset FOR_PRINT @set TITLE Effective awk Programming @end ifset @@ -280,13 +281,13 @@ Email: gnu@@gnu.org URL: https://www.gnu.org/ -Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2020 +Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2021 Free Software Foundation, Inc. All Rights Reserved. @end docbook @ifnotdocbook -Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2020 @* +Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2021 @* Free Software Foundation, Inc. @end ifnotdocbook @sp 2 @@ -573,6 +574,7 @@ * Fields with fixed data:: Field values with fixed-width data. * Splitting By Content:: Defining Fields By Content * More CSV:: More on CSV files. +* FS versus FPAT:: A subtle difference. * Testing field creation:: Checking how @command{gawk} is splitting records. * Multiple Line:: Reading multiline records. @@ -803,6 +805,8 @@ once. * Shell Quoting:: A function to quote strings for the shell. +* Isnumeric Function:: A function to test whether a value is + numeric. * Data File Management:: Functions for managing command-line data files. * Filetrans Function:: A function for handling data file @@ -830,6 +834,9 @@ * Tee Program:: The @command{tee} utility. * Uniq Program:: The @command{uniq} utility. * Wc Program:: The @command{wc} utility. +* Bytes vs. Characters:: Modern character sets. +* Using extensions:: A brief intro to extensions. +* @command{wc} program:: Code for @file{wc.awk}. * Miscellaneous Programs:: Some interesting @command{awk} programs. * Dupword Program:: Finding duplicated words in a @@ -863,6 +870,8 @@ * TCP/IP Networking:: Using @command{gawk} for network programming. * Profiling:: Profiling your @command{awk} programs. +* Extension Philosophy:: What should be built-in and what + should not. * Advanced Features Summary:: Summary of advanced features. * I18N and L10N:: Internationalization and Localization. * Explaining gettext:: How GNU @command{gettext} works. @@ -931,6 +940,7 @@ * General Data Types:: The data types. * Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. +* API Ownership of MPFR and GMP Values:: Managing MPFR and GMP Values. * Registration Functions:: Functions to register things with @command{gawk}. * Extension Functions:: Registering extension functions. @@ -1016,9 +1026,12 @@ * Unix Installation:: Installing @command{gawk} under various versions of Unix. * Quick Installation:: Compiling @command{gawk} under Unix. +* Compiling with MPFR:: Building with MPFR. * Shell Startup Files:: Shell convenience functions. * Additional Configuration Options:: Other compile-time options. * Configuration Philosophy:: How it's all supposed to work. +* Compiling from Git:: Compiling from Git. +* Building the Documentation:: Building the Documentation. * Non-Unix Installation:: Installation on Other Operating Systems. * PC Installation:: Installing and Compiling @@ -1040,11 +1053,13 @@ VMS. * VMS Running:: How to run @command{gawk} under VMS. * VMS GNV:: The VMS GNV Project. -* VMS Old Gawk:: An old version comes with some VMS - systems. * Bugs:: Reporting Problems and Bugs. +* Bug definition:: Defining what is and is not a bug. * Bug address:: Where to send reports to. * Usenet:: Where not to send reports to. +* Performance bugs:: What to do if you think there is a + performance issue. +* Asking for help:: Dealing with non-bug questions. * Maintainers:: Maintainers of non-*nix ports. * Other Versions:: Other freely available @command{awk} implementations. @@ -1895,7 +1910,7 @@ @c fakenode --- for prepinfo @unnumberedsubsec Dark Corners -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @quotation @i{Dark corners are basically fractal---no matter how much you illuminate, there's always a smaller but darker one.} @@ -3161,6 +3176,32 @@ Most of the examples use a @value{DF} named @file{data}. This is just a placeholder; if you use these programs yourself, substitute your own @value{FN}s for @file{data}. + +@cindex @command{ls} utility +Some of the following examples use the output of @w{@samp{ls -l}} as input. +@command{ls} is a system command that gives you a listing of the files in a +directory. With the @option{-l} option, this listing includes each file's +size and the date the file was last modified. Its output looks like this: + +@example +-rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile +-rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h +-rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h +-rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y +-rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c +-rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c +-rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c +-rw-r--r-- 1 arnold user 7989 Nov 7 13:03 awk4.c +@end example + +@noindent +The first field contains read-write permissions, the second field contains +the number of links to the file, and the third field identifies the +file's owner. The fourth field identifies the file's group. The fifth +field contains the file's size in bytes. The sixth, seventh, and eighth +fields contain the month, day, and time, respectively, that the file +was last modified. Finally, the ninth field contains the @value{FN}. + For future reference, note that there is often more than one way to do things in @command{awk}. At some point, you may want to look back at these examples and see if @@ -3341,28 +3382,14 @@ @cindex @command{ls} utility This command prints the total number of bytes in all the files in the current directory that were last modified in November (of any year). -The @w{@samp{ls -l}} part of this example is a system command that gives -you a listing of the files in a directory, including each file's size and the date -the file was last modified. Its output looks like this: -@example --rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile --rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h --rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h --rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y --rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c --rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c --rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c --rw-r--r-- 1 arnold user 7989 Nov 7 13:03 awk4.c -@end example - -@noindent -@cindex line continuations @subentry with C shell -The first field contains read-write permissions, the second field contains -the number of links to the file, and the third field identifies the file's owner. -The fourth field identifies the file's group. -The fifth field contains the file's size in bytes. The -sixth, seventh, and eighth fields contain the month, day, and time, +As a reminder, the output of @w{@samp{ls -l}} gives you a listing of the +files in a directory, including each file's size and the date the file +was last modified. The first field contains read-write permissions, +the second field contains the number of links to the file, and the +third field identifies the file's owner. The fourth field identifies +the file's group. The fifth field contains the file's size in bytes. +The sixth, seventh, and eighth fields contain the month, day, and time, respectively, that the file was last modified. Finally, the ninth field contains the @value{FN}. @@ -3455,6 +3482,7 @@ @c solaris 2.7 nawk does not. Solaris /usr/xpg4/bin/awk does though! sigh. @cindex @command{csh} utility +@cindex line continuations @subentry with C shell @cindex backslash (@code{\}) @subentry continuing lines and @subentry in @command{csh} @cindex @code{\} (backslash) @subentry continuing lines and @subentry in @command{csh} @quotation CAUTION @@ -3582,6 +3610,7 @@ can avoid the (usually lengthy) compilation part of the typical edit-compile-test-debug cycle of software development. +@cindex BWK @command{awk} @seeentry{Brian Kernighan's @command{awk}} @cindex Brian Kernighan's @command{awk} Complex programs have been written in @command{awk}, including a complete retargetable assembler for @@ -3608,7 +3637,6 @@ @node Intro Summary @section Summary -@c FIXME: Review this chapter for summary of builtin functions called. @itemize @value{BULLET} @item Programs in @command{awk} consist of @var{pattern}--@var{action} pairs. @@ -3728,8 +3756,8 @@ keyword is immediately followed by an equals sign (@samp{=}) and the argument's value, or the keyword and the argument's value are separated by whitespace (spaces or TABs). -If a particular option with a value is given more than once, it is the -last value that counts. +If a particular option with a value is given more than once, it is (usually) +the last value that counts. @cindex POSIX @command{awk} @subentry GNU long options and Each long option for @command{gawk} has a corresponding @@ -3743,7 +3771,7 @@ @itemx --field-separator @var{fs} @cindex @option{-F} option @cindex @option{--field-separator} option -@cindex @code{FS} variable @subentry @code{--field-separator} option and +@cindex @code{FS} variable @subentry @option{--field-separator} option and Set the @code{FS} variable to @var{fs} (@pxref{Field Separators}). @@ -4004,6 +4032,18 @@ Files named with @option{-i} are treated as if they had @samp{@@namespace "awk"} at their beginning. @xref{Changing The Namespace}, for more information. +@item @option{-I} +@itemx @option{--trace} +@cindex @option{-I} option +@cindex @option{--trace} option +@cindex trace, internal instructions +@cindex instructions, trace of internal +@cindex op-codes, trace of internal +Print the internal byte code names as they are executed when running +the program. The trace is printed to standard error. Each ``op code'' +is preceded by a @code{+} +sign in the output. + @item @option{-l} @var{ext} @itemx @option{--load} @var{ext} @cindex @option{-l} option @@ -4066,7 +4106,7 @@ @cindex @option{--non-decimal-data} option @cindex hexadecimal values, enabling interpretation of @cindex octal values, enabling interpretation of -@cindex troubleshooting @subentry @code{--non-decimal-data} option +@cindex troubleshooting @subentry @option{--non-decimal-data} option Enable automatic interpretation of octal and hexadecimal values in input data (@pxref{Nondecimal Data}). @@ -4171,8 +4211,8 @@ @c @cindex automatic warnings @c @cindex warnings, automatic -@cindex @option{--traditional} option @subentry @code{--posix} option and -@cindex @option{--posix} option @subentry @code{--traditional} option and +@cindex @option{--traditional} option @subentry @option{--posix} option and +@cindex @option{--posix} option @subentry @option{--traditional} option and If you supply both @option{--traditional} and @option{--posix} on the command line, @option{--posix} takes precedence. @command{gawk} issues a warning if both options are supplied. @@ -4206,7 +4246,7 @@ input redirections with @code{getline}, output redirections with @code{print} and @code{printf}, and dynamic extensions. -Also, disallow adding filenames to @code{ARGV} that were +Also, disallow adding @value{FN}s to @code{ARGV} that were not there when @command{gawk} started running. This is particularly useful when you want to run @command{awk} scripts from questionable sources and need to make sure the scripts @@ -4240,7 +4280,8 @@ even if they start with a minus sign. @end table -As long as program text has been supplied, +In compatibility mode, +as long as program text has been supplied, any other options are flagged as invalid with a warning message but are otherwise ignored. @@ -4335,7 +4376,7 @@ argument that has the form @code{@var{var}=@var{value}}, assigns the value @var{value} to the variable @var{var}---it does not specify a file at all. (See @ref{Assignment Options}.) In the following example, -@var{count=1} is a variable assignment, not a @value{FN}: +@samp{count=1} is a variable assignment, not a @value{FN}: @example awk -f program.awk file1 count=1 file2 @@ -4365,7 +4406,6 @@ including program text and options, available in @code{PROCINFO["argv"]}; @pxref{Auto-set}.) -@c FIXME: One day, move the ARGC and ARGV node closer to here. Changing @code{ARGC} and @code{ARGV} in your @command{awk} program lets you control how @command{awk} processes the input files; this is described in more detail in @ref{ARGC and ARGV}. @@ -4416,6 +4456,36 @@ the value of @code{FS} is not strictly necessary. It remains for historical compatibility. +@sidebar Quoting Shell Variables On The @command{awk} Command Line +@cindex quoting @subentry in @command{gawk} command lines +@cindex shell quoting, rules for +@cindex null strings @subentry in @command{gawk} arguments, quoting and + +Small @command{awk} programs are often embedded in larger shell scripts, +so it's worthwhile to understand some shell basics. Consider the following: + +@example +f="" +awk '@{ print("hi") @}' $f +@end example + +In this case, @command{awk} reads from standard input instead of trying +to open any command line files. To the unwary, this looks like @command{awk} +is hanging. + +However @command{awk} doesn't see an explicit empty string. When a +variable expansion is the null string, @emph{and} it's not quoted, +the shell simply removes it from the command line. To demonstrate: + +@example +$ @kbd{f=""} +$ @kbd{awk 'BEGIN @{ print ARGC @}' $f} +@print{} 1 +$ @kbd{awk 'BEGIN @{ print ARGC @}' "$f"} +@print{} 2 +@end example +@end sidebar + @node Naming Standard Input @section Naming Standard Input @@ -5690,6 +5760,46 @@ plus sign. However, many other versions of @command{awk} treat such a usage as a syntax error. +@sidebar What About The Empty Regexp? +@cindex empty regexps +@cindex regexps, empty +We describe here an advanced regexp usage. Feel free to skip it +upon first reading. + +You can supply an empty regexp constant (@samp{//}) in all places +where a regexp is expected. Is this useful? What does it match? + +It is useful. It matches the (invisible) empty string at the start +and end of a string of characters, as well as the empty string +between characters. This is best illustrated with the @code{gsub()} +function, which makes global substitutions in a string +(@pxref{String Functions}). Normal usage of @code{gsub()} is like +so: + +@example +$ @kbd{awk '} +> @kbd{BEGIN @{} +> @kbd{ x = "ABC_CBA"} +> @kbd{ gsub(/B/, "bb", x)} +> @kbd{ print x} +> @kbd{@}'} +@print{} AbbC_CbbA +@end example + +We can use @code{gsub()} to see where the empty strings +are that match the empty regexp: + +@example +$ @kbd{awk '} +> @kbd{BEGIN @{} +> @kbd{ x = "ABC"} +> @kbd{ gsub(//, "x", x)} +> @kbd{ print x} +> @kbd{@}'} +@print{} xAxBxCx +@end example +@end sidebar + @node Interval Expressions @subsection Some Notes On Interval Expressions @@ -5716,17 +5826,37 @@ any version of @command{awk}.@footnote{Use two backslashes if you're using a string constant with a regexp operator or function.} -Finally, when @samp{@{} and @samp{@}} appear in regexp constants +When @samp{@{} and @samp{@}} appear in regexp constants in a way that cannot be interpreted as an interval expression (such as @code{/q@{a@}/}), then they stand for themselves. As mentioned, interval expressions were not traditionally available in @command{awk}. In March of 2019, BWK @command{awk} (finally) acquired them. - Nonetheless, because they were not available for so many decades, @command{gawk} continues to not supply them when in compatibility mode (@pxref{Options}). +POSIX says that interval expressions containing repetition counts greater +than 255 produce unspecified results. + +@cindex Eggert, Paul +In the manual for GNU @command{grep}, Paul Eggert notes the following: + +@quotation +Interval expressions may be implemented internally via repetition. +For example, @samp{^(a|bc)@{2,4@}$} might be implemented as +@samp{^(a|bc)(a|bc)((a|bc)(a|bc)?)?$}. A large repetition count may +exhaust memory or greatly slow matching. Even small counts can cause +problems if cascaded; for example, @samp{grep -E +".*@{10,@}@{10,@}@{10,@}@{10,@}@{10,@}"} is likely to overflow a +stack. Fortunately, regular expressions like these are typically +artificial, and cascaded repetitions do not conform to POSIX so cannot +be used in portable programs anyway. +@end quotation + +@noindent +This same caveat applies to @command{gawk}. + @node Bracket Expressions @section Using Bracket Expressions @cindex bracket expressions @@ -6216,13 +6346,13 @@ @end ifnotdocbook @end ifnottex -@item @code{--posix} +@item @option{--posix} Match only POSIX regexps; the GNU operators are not special (e.g., @samp{\w} matches a literal @samp{w}). Interval expressions are allowed. @cindex Brian Kernighan's @command{awk} -@item @code{--traditional} +@item @option{--traditional} Match traditional Unix @command{awk} regexps. The GNU operators are not special, and interval expressions are not available. Because BWK @command{awk} supports them, @@ -6230,7 +6360,7 @@ Characters described by octal and hexadecimal escape sequences are treated literally, even if they represent regexp metacharacters. -@item @code{--re-interval} +@item @option{--re-interval} Allow interval expressions in regexps, if @option{--traditional} has been provided. Otherwise, interval expressions are available by default. @@ -6584,22 +6714,6 @@ treated literally. This is required for backwards compatibility with both Unix @command{awk} and with POSIX. -When using regular characters as the record separator, -there is one unusual case that occurs when @command{gawk} is -being fully POSIX-compliant (@pxref{Options}). -Then, the following (extreme) pipeline prints a surprising @samp{1}: - -@example -$ @kbd{echo | gawk --posix 'BEGIN @{ RS = "a" @} ; @{ print NF @}'} -@print{} 1 -@end example - -There is one field, consisting of a newline. The value of the built-in -variable @code{NF} is the number of fields in the current record. -(In the normal case, @command{gawk} treats the newline as whitespace, -printing @samp{0} as the result. Most other versions of @command{awk} -also act this way.) - @cindex dark corner @subentry input files Reaching the end of an input file terminates the current input record, even if the last character in the file is not the character in @code{RS}. @@ -6690,7 +6804,7 @@ @command{gawk} attempts to avoid this problem, but currently, there's no guarantee that this will never happen. -@quotation NOTE +@sidebar Caveats When Using Regular Expressions for @code{RS} Remember that in @command{awk}, the @samp{^} and @samp{$} anchor metacharacters match the beginning and end of a @emph{string}, and not the beginning and end of a @emph{line}. As a result, something like @@ -6698,7 +6812,13 @@ This is because @command{gawk} views the input file as one long string that happens to contain newline characters. It is thus best to avoid anchor metacharacters in the value of @code{RS}. -@end quotation + +Record splitting with regular expressions works differently than +regexp matching with the @code{sub()}, @code{gsub()}, and @code{gensub()} +(@pxref{String Functions}). Those functions allow a regexp to match the empty string; +record splitting does not. Thus, for example @samp{RS = "()"} does @emph{not} +split records between characters. +@end sidebar @cindex @command{gawk} @subentry @code{RT} variable in @cindex @code{RT} variable @@ -7318,6 +7438,12 @@ @print{} -->C<-- @end example +Finally, field splitting with regular expressions works differently than +regexp matching with the @code{sub()}, @code{gsub()}, and @code{gensub()} +(@pxref{String Functions}). Those functions allow a regexp to match the +empty string; field splitting does not. Thus, for example @samp{FS = +"()"} does @emph{not} split fields between characters. + @node Single Character Fields @subsection Making Each Character a Separate Field @@ -7788,6 +7914,7 @@ @menu * More CSV:: More on CSV files. +* FS versus FPAT:: A subtle difference. @end menu @c O'Reilly doesn't like it as a note the first thing in the section. @@ -7803,6 +7930,8 @@ However, there are times when you really want to define the fields by what they are, and not by what they are not. +@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT} +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} The most notorious such case is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet programs, for example, can export their data into text files, where each record is @@ -7904,10 +8033,14 @@ FPAT = "([^,]*)|(\"[^\"]+\")" @end example -@c FIXME: 4/2015 +@c 4/2015: @c Consider use of FPAT = "([^,]*)|(\"[^\"]*\")" @c (star in latter part of value) to allow quoted strings to be empty. @c Per email from Ed Morton +@c +@c WONTFIX: 10/2020 +@c This is too much work. FPAT and CSV files are very flaky and +@c fragile. Doing something like this is merely inviting trouble. As with @code{FS}, the @code{IGNORECASE} variable (@pxref{User-modified}) affects field splitting with @code{FPAT}. @@ -7982,6 +8115,37 @@ @print{} NF = 3

<> @end example +@cindex Collado, Manuel +@cindex @code{CSVMODE} library for @command{gawk} +@cindex CSV (comma separated values) data @subentry parsing with @code{CSVMODE} library +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} library +In general, using @code{FPAT} to do your own CSV parsing is like having +a bed with a blanket that's not quite big enough. There's always a corner +that isn't covered. We recommend, instead, that you use Manuel Collado's +@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for @command{gawk}}. + +@node FS versus FPAT +@subsection @code{FS} Versus @code{FPAT}: A Subtle Difference + +As we discussed earlier, @code{FS} describes the data between fields (``what fields are not'') +and @code{FPAT} describes the fields themselves (``what fields are''). +This leads to a subtle difference in how fields are found when using regexps as the value +for @code{FS} or @code{FPAT}. + +In order to distinguish one field from another, there must be a non-empty separator between +each field. This makes intuitive sense---otherwise one could not distinguish fields from +separators. + +Thus, regular expression matching as done when splitting fields with @code{FS} is not +allowed to match the null string; it must always match at least one character, in order +to be able to proceed through the entire record. + +On the other hand, regular expression matching with @code{FPAT} can match the null +string, and the non-matching intervening characters function as the separators. + +This same difference is reflected in how matching is done with the @code{split()} +and @code{patsplit()} functions (@pxref{String Functions}). + @node Testing field creation @section Checking How @command{gawk} Is Splitting Records @@ -8505,7 +8669,7 @@ @subsection Using @code{getline} from a Pipe @c From private email, dated October 2, 1988. Used by permission, March 2013. -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @quotation @i{Omniscience has much to recommend it. Failing that, attention to details would be useful.} @@ -10858,7 +11022,7 @@ In POSIX mode (@pxref{Options}), @command{gawk} does not allow escaped newlines. Otherwise, it behaves as just described. -Brian Kernighan's @command{awk} and BusyBox @command{awk} +BWK @command{awk} and BusyBox @command{awk} remove the backslash but leave the newline intact, as part of the string: @@ -11175,12 +11339,26 @@ (@pxref{User-defined}). @item +As the return value of a user-defined function. + +@item On the righthand side of an assignment to a variable: @samp{some_var = @@/foo/}. In this case, the type of @code{some_var} is regexp. Additionally, @code{some_var} can be used with @samp{~} and @samp{!~}, passed to one of the built-in functions listed above, or passed as a parameter to a user-defined function. @end itemize +You may use the @option{-v} option (@pxref{Options}) to assign a +strongly-typed regexp constant to a variable on the command line, like so: + +@example +gawk -v pattern='@@/something(interesting)+/' @dots{} +@end example + +@noindent +You may also make such assignments as regular command-line arguments +(@pxref{Other Arguments}). + You may use the @code{typeof()} built-in function (@pxref{Type Functions}) to determine if a variable or function parameter is @@ -11197,6 +11375,21 @@ to zero. When used in string conversions, they convert to the string value of the original regexp text. +There is an additional, interesting corner case. When used as the third +argument to @code{sub()} or @code{gsub()}, they retain their type. Thus, +if you have something like this: + +@example +re = @/don't panic/ +sub(/don't/, "do", re) +print typeof(re), re +@end example + +@noindent +then @code{re} retains its type, but now attempts to match the string +@samp{do panic}. This provides a (very indirect) way to create regexp-typed +variables at runtime. + @node Variables @subsection Variables @@ -11628,9 +11821,14 @@ -17 % 8 = -1 @end example +@noindent +This definition is compliant with the POSIX standard, which says that the @code{%} +operator produces results equivalent to using the standard C +@code{fmod()} function, and that function in turn works as just +described. + In other @command{awk} implementations, the signedness of the remainder may be machine-dependent. -@c FIXME !!! what does posix say? @cindex portability @subentry @code{**} operator and @cindex @code{*} (asterisk) @subentry @code{**} operator @@ -11643,7 +11841,7 @@ @node Concatenation @subsection String Concatenation -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @quotation @i{It seemed like a good idea at the time.} @author Brian Kernighan @@ -12008,17 +12206,17 @@ @sidebar Syntactic Ambiguities Between @samp{/=} and Regular Expressions @cindex dark corner @subentry regexp constants @subentry @code{/=} operator and -@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant -@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant +@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant +@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant @cindex regexp constants @subentry @code{/=@dots{}/} @subentry @code{/=} operator and @c derived from email from "Nelson H. F. Beebe" @c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT) -@cindex dark corner @subentry @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex syntactic ambiguity: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex @code{/=} operator vs. @code{/=@dots{}/} regexp constant +@cindex dark corner @subentry @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex ambiguity, syntactic: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex syntactic ambiguity: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant There is a syntactic ambiguity between the @code{/=} assignment operator and regexp constants whose first character is an @samp{=}. @value{DARKCORNER} @@ -13737,6 +13935,7 @@ An @command{awk} program may have multiple @code{BEGIN} and/or @code{END} rules. They are executed in the order in which they appear: all the @code{BEGIN} rules at startup and all the @code{END} rules at termination. + @code{BEGIN} and @code{END} rules may be intermixed with other rules. This feature was added in the 1987 version of @command{awk} and is included in the POSIX standard. @@ -13765,7 +13964,7 @@ reading and ignoring input until the end of the file was seen.} However, if an @code{END} rule exists, then the input is read, even if there are no other rules in the program. This is necessary in case the @code{END} -rule checks the @code{FNR} and @code{NR} variables. +rule checks the @code{FNR} and @code{NR} variables, or the fields. @node I/O And BEGIN/END @subsubsection Input/Output from @code{BEGIN} and @code{END} Rules @@ -13793,6 +13992,7 @@ @code{NF} were @emph{undefined} inside an @code{END} rule. The POSIX standard specifies that @code{NF} is available in an @code{END} rule. It contains the number of fields from the last input record. +@c FIXME: Update this if POSIX is ever fixed. Most probably due to an oversight, the standard does not say that @code{$0} is also preserved, although logically one would think that it should be. In fact, all of BWK @command{awk}, @command{mawk}, and @command{gawk} @@ -13804,7 +14004,7 @@ inside a @code{BEGIN} or @code{END} rule is the same as always: @samp{print $0}. If @code{$0} is the null string, then this prints an empty record. Many longtime @command{awk} programmers use an unadorned -@samp{print} in @code{BEGIN} and @code{END} rules, to mean @samp{@w{print ""}}, +@samp{print} in @code{BEGIN} and @code{END} rules to mean @samp{@w{print ""}}, relying on @code{$0} being null. Although one might generally get away with this in @code{BEGIN} rules, it is a very bad idea in @code{END} rules, at least in @command{gawk}. It is also poor style, because if an empty @@ -13848,13 +14048,20 @@ @ifdocbook (see the previous @value{SECTION}), @end ifdocbook -all @code{BEGINFILE} rules in a program are merged, in the order they are -read by @command{gawk}, and all @code{ENDFILE} rules are merged as well. +@code{BEGINFILE} rules in a program execute in the order they are +read by @command{gawk}. Similarly, all @code{ENDFILE} rules also execute in +the order they are read. -The body of the @code{BEGINFILE} rules is executed just before +The bodies of the @code{BEGINFILE} rules execute just before @command{gawk} reads the first record from a file. @code{FILENAME} is set to the name of the current file, and @code{FNR} is set to zero. +Prior to @value{PVERSION} 5.1.1 of @command{gawk}, as an accident of the +implementation, @code{$0} and the fields retained any previous values +they had in @code{BEGINFILE} rules. Starting with @value{PVERSION} +5.1.1, @code{$0} and the fields are cleared, since no record has been +read yet from the file that is about to be processed. + The @code{BEGINFILE} rule provides you the opportunity to accomplish two tasks that would otherwise be difficult or impossible to perform: @@ -13889,7 +14096,7 @@ The @code{ENDFILE} rule is executed even for empty input files. Normally, when an error occurs when reading input in the normal -input-processing loop, the error is fatal. However, if an @code{ENDFILE} +input-processing loop, the error is fatal. However, if a @code{BEGINFILE} rule is present, the error becomes non-fatal, and instead @code{ERRNO} is set. This makes it possible to catch and process I/O errors at the level of the @command{awk} program. @@ -13909,28 +14116,6 @@ In most other @command{awk} implementations, or if @command{gawk} is in compatibility mode (@pxref{Options}), they are not special. -@c FIXME: For 4.2 maybe deal with this? -@ignore -Date: Tue, 17 May 2011 02:06:10 PDT -From: rankin@pactechdata.com (Pat Rankin) -Message-Id: <110517015127.20240f4a@pactechdata.com> -Subject: BEGINFILE -To: arnold@skeeve.com - - The documentation for BEGINFILE states that FNR is 0, which seems -pretty obvious. It doesn't mention what the value of $0 is, and that's -not obvious. I think setting it to null before starting the BEGINFILE -action would be preferable to leaving whatever was there in the last -record of the previous file. - - ENDFILE can retain the last record in $0. I guess it has to if -the END rule's actions see that value too. But the beginning of a new -file doesn't just mean that the old one has been closed; the old file -is being superseded, so leaving the old data around feels wrong to me. -[If the user wants to keep it on hand, he or she can use an ENDFILE -rule to grab it before moving on to the next file.] -@end ignore - @node Empty @subsection The Empty Pattern @@ -14335,20 +14520,25 @@ This prints the first three fields of each input record, with one input field per output line. -It isn't possible to -set more than one variable in the -@var{initialization} part without using a multiple assignment statement -such as @samp{x = y = 0}. This makes sense only if all the initial values -are equal. (But it is possible to initialize additional variables by writing -their assignments as separate statements preceding the @code{for} loop.) - @c @cindex comma operator, not supported -The same is true of the @var{increment} part. Incrementing additional -variables requires separate statements at the end of the loop. -The C compound expression, using C's comma operator, is useful in -this context, but it is not supported in @command{awk}. +C and C++ programmers might expect to be able to use the comma +operator to set more than one variable in the @var{initialization} +part of the @code{for} loop, or to increment multiple variables in the +@var{increment} part of the loop, like so: -Most often, @var{increment} is an increment expression, as in the previous +@example +for (i = 0, j = length(a); i < j; i++, j--) @dots{} @ii{C/C++, not awk!} +@end example + +@noindent +You cannot do this; the comma operator is not supported in @command{awk}. +There are workarounds, but they are nonobvious and can lead to +code that is difficult to read and understand. It is best, therefore, +to simply write additional initializations as separate statements +preceding the @code{for} loop and to place additional increment statements +at the end of the loop's body. + +Most often, @var{increment} is an increment expression, as in the earlier example. But this is not required; it can be any expression whatsoever. For example, the following statement prints all the powers of two between 1 and 100: @@ -14417,13 +14607,14 @@ are checked for a match in the order they are defined. If no suitable @code{case} is found, the @code{default} section is executed, if supplied. -Each @code{case} contains a single constant, be it numeric, string, or -regexp. The @code{switch} expression is evaluated, and then each -@code{case}'s constant is compared against the result in turn. The type of constant -determines the comparison: numeric or string do the usual comparisons. -A regexp constant does a regular expression match against the string -value of the original expression. The general form of the @code{switch} -statement looks like this: +Each @code{case} contains a single constant, be it numeric, string, +or regexp. The @code{switch} expression is evaluated, and then each +@code{case}'s constant is compared against the result in turn. The +type of constant determines the comparison: numeric or string do the +usual comparisons. A regexp constant (either regular, @code{/foo/}, or +strongly typed, @code{@@/foo/}) does a regular expression match against +the string value of the original expression. The general form of the +@code{switch} statement looks like this: @example switch (@var{expression}) @{ @@ -14722,13 +14913,14 @@ In @command{gawk}, execution of @code{nextfile} causes additional things to happen: any @code{ENDFILE} rules are executed if @command{gawk} is -not currently in an @code{END} or @code{BEGINFILE} rule, @code{ARGIND} is +not currently in an @code{END} rule, @code{ARGIND} is incremented, and any @code{BEGINFILE} rules are executed. (@code{ARGIND} hasn't been introduced yet. @xref{Built-in Variables}.) -With @command{gawk}, @code{nextfile} is useful inside a @code{BEGINFILE} +There is an additional, special, use case +with @command{gawk}. @code{nextfile} is useful inside a @code{BEGINFILE} rule to skip over a file that would otherwise cause @command{gawk} -to exit with a fatal error. In this case, @code{ENDFILE} rules are not +to exit with a fatal error. In this special case, @code{ENDFILE} rules are not executed. @xref{BEGINFILE/ENDFILE}. Although it might seem that @samp{close(FILENAME)} would accomplish @@ -17688,12 +17880,15 @@ @end example @quotation NOTE -Due to implementation limitations, you may not use either @code{SYMTAB} -or @code{FUNCTAB} as arguments to these functions, even if providing a -second array to use for the actual sorting. Attempting to do so produces -a fatal error. This restriction may be lifted in the future. +You may not use either @code{SYMTAB} or @code{FUNCTAB} as the second +argument to these functions. Attempting to do so produces a fatal error. +You may use them as the first argument, but only if providing a second +array to use for the actual sorting. @end quotation +You are allowed to use the same array for both the @var{source} and @var{dest} +arguments, but doing so only makes sense if you're also supplying the third argument. + @item @code{gensub(@var{regexp}, @var{replacement}, @var{how}} [@code{, @var{target}}]@code{) #} @cindexgawkfunc{gensub} @cindex search and replace in strings @@ -17707,6 +17902,9 @@ is supplied, use @code{$0}. Return the modified string as the result of the function. The original target string is @emph{not} changed. +The returned value is @emph{always} a string, even if the original +@var{target} was a number or a regexp value. + @code{gensub()} is a general substitution function. Its purpose is to provide more features than the standard @code{sub()} and @code{gsub()} functions. @@ -17755,7 +17953,8 @@ a warning message. If @var{regexp} does not match @var{target}, @code{gensub()}'s return value -is the original unchanged value of @var{target}. +is the original unchanged value of @var{target}. Note that, as mentioned +above, the returned value is a string, even if @var{target} was not. @item @code{gsub(@var{regexp}, @var{replacement}} [@code{, @var{target}}]@code{)} @cindexawkfunc{gsub} @@ -18014,7 +18213,7 @@ after @code{@var{array}[@var{i}]}. The possibly null leading separator will be in @code{@var{seps}[0]}. So a non-null @var{string} with @var{n} fields will have @var{n+1} separators. -A null @var{string} will not have neither fields nor separators. +A null @var{string} has no fields or separators. The @code{patsplit()} function splits strings into pieces in a manner similar to the way input lines are split into fields using @code{FPAT} @@ -18330,6 +18529,16 @@ @code{toupper("MiXeD cAsE 123")} returns @code{"MIXED CASE 123"}. @end table +At first glance, the @code{split()} and @code{patsplit()} functions appear to be +mirror images of each other. But there are differences: + +@itemize @bullet +@item @code{split()} treats its third argument like @code{FS}, with all the +special rules involved for @code{FS}. + +@item Matching of null strings differs. This is discussed in @ref{FS versus FPAT}. +@end itemize + @sidebar Matching the Null String @cindex matching @subentry null strings @cindex null strings @subentry matching @@ -18721,8 +18930,8 @@ Prior to @value{PVERSION} 4.0.2, @command{gawk} would flush only the standard output if there was no argument, and flush all output files and pipes if the argument was the null -string. This was changed in order to be compatible with Brian -Kernighan's @command{awk}, in the hope that standardizing this +string. This was changed in order to be compatible with BWK +@command{awk}, in the hope that standardizing this feature in POSIX would then be easier (which indeed proved to be the case). With @command{gawk}, @@ -19510,7 +19719,7 @@ @cindex @code{bits2str()} user-defined function @cindex user-defined @subentry function @subentry @code{bits2str()} -@cindex @code{testbits.awk} program +@cindex @file{testbits.awk} program @example @group @c file eg/lib/bits2str.awk @@ -19763,6 +19972,29 @@ However, @code{isarray()} and @code{typeof()} are different; they do not change their arguments from untyped to unassigned. +@cindex dark corner @subentry array elements created by reference +By ``variable'' we mean one denoted by a simple identifier. Array elements +that come into existence simply by referencing them +are different, they are automatically forced to be scalars. Consider: + +@example +$ @kbd{gawk 'BEGIN @{ print typeof(x) @}'} +@print{} untyped +$ @kbd{gawk 'BEGIN @{ print typeof(x["foo"]) @}'} +@print{} unassigned +@end example + +@noindent +@code{x["foo"]} comes into existence before it is passed to @code{typeof()}; +@code{typeof()} cannot tell that it didn't exist prior to being called. +@value{DARKCORNER} + +@c FIXME: For 5.2, if this will change, update this bit of doc. +@c This may change in a future release, whereby @command{gawk} +@c would allow such an unassigned array element to be used for +@c a multidimensional array, and not remain a scalar forever +@c (or until deleted). + @node I18N Functions @subsection String-Translation Functions @cindex @command{gawk} @subentry string-translation functions @@ -19886,8 +20118,9 @@ (@pxref{Built-in Variables}), nor may a function parameter have the same name as another function. +@cindex dark corner @subentry parameter name restrictions Not all versions of @command{awk} enforce -these restrictions. +these restrictions. @value{DARKCORNER} @command{gawk} always enforces the first restriction. With @option{--posix} (@pxref{Options}), it also enforces the second restriction. @@ -21048,7 +21281,7 @@ place. It simplifies programming, making program development more manageable and making programs more readable. -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry quotes @cindex Plauger, P.J.@: In their seminal 1976 book, @cite{Software Tools},@footnote{Sadly, over 35 years later, many of the lessons taught by this book have yet to be @@ -21262,6 +21495,7 @@ * Getlocaltime Function:: A function to get formatted times. * Readfile Function:: A function to read an entire file at once. * Shell Quoting:: A function to quote strings for the shell. +* Isnumeric Function:: A function to test whether a value is numeric. @end menu @node Strtonum Function @@ -22052,6 +22286,47 @@ @c endfile @end example +@node Isnumeric Function +@subsection Checking Whether A Value Is Numeric + +A frequent programming question is how to ascertain whether a value is numeric. +This can be solved by using this example function @code{isnumeric()}, which +employs the trick of converting a string value to user input by using the +@code{split()} function: + +@cindex @code{isnumeric()} user-defined function +@cindex user-defined @subentry function @subentry @code{isnumeric()} +@example +@c file eg/lib/isnumeric.awk +# isnumeric --- check whether a value is numeric + +function isnumeric(x, f) +@{ + switch (typeof(x)) @{ + case "strnum": + case "number": + return 1 + case "string": + return (split(x, f, " ") == 1) && (typeof(f[1]) == "strnum") + default: + return 0 + @} +@} +@c endfile +@end example + +Please note that leading or trailing white space is disregarded in deciding +whether a value is numeric or not, so if it matters to you, you may want +to add an additional check for that. + +Traditionally, it has been recommended to check for numeric values using the +test @samp{x+0 == x}. This function is superior in two ways: it will not +report that unassigned variables contain numeric values; and it recognizes +string values with numeric contents where @code{CONVFMT} does not yield +the original string. +On the other hand, it uses the @code{typeof()} function +(@pxref{Type Functions}), which is specific to @command{gawk}. + @node Data File Management @section @value{DDF} Management @@ -22293,7 +22568,7 @@ code here provides a portable solution.} You can do this by prepending the following program to your @command{awk} program: -@cindex @code{readable.awk} program +@cindex @file{readable.awk} program @example @c file eg/lib/readable.awk # readable.awk --- library file to skip over unreadable files @@ -22351,7 +22626,7 @@ @code{zerofile()} that the user must provide. The arguments passed are the @value{FN} and the position in @code{ARGV} where it was found: -@cindex @code{zerofile.awk} program +@cindex @file{zerofile.awk} program @example @c file eg/lib/zerofile.awk # zerofile.awk --- library file to process empty input files @@ -22411,7 +22686,7 @@ to disable command-line assignments. However, some simple programming with a library file does the trick: -@cindex @code{noassign.awk} program +@cindex @file{noassign.awk} program @example @c file eg/lib/noassign.awk # noassign.awk --- library file to avoid the need for a @@ -22778,7 +23053,7 @@ First, we search this option for a possible embedded equal sign, as the specification of long options allows an argument to an option -@samp{--someopt:} to be specified as @samp{--someopt=answer} as well as +@samp{--someopt} to be specified as @samp{--someopt=answer} as well as @samp{@w{--someopt answer}}. @example @@ -22893,8 +23168,8 @@ @print{} c = , Optarg = <> @print{} c = , Optarg = <> @print{} non-option arguments: -@print{} ARGV[8] = -@print{} ARGV[9] = +@print{} ARGV[8] = +@print{} ARGV[9] = @end example In all the runs, the first @option{--} terminates the arguments to @@ -24024,13 +24299,13 @@ dashes. The list @samp{1-8,15,22-35} specifies characters 1 through 8, 15, and 22 through 35. -@item -f @var{list} -Use @var{list} as the list of fields to cut out. - @item -d @var{delim} Use @var{delim} as the field-separator character instead of the TAB character. +@item -f @var{list} +Use @var{list} as the list of fields to cut out. + @item -s Suppress printing of lines that do not contain the field delimiter. @end table @@ -24040,12 +24315,16 @@ and the @code{join()} library function (@pxref{Join Function}). +The current POSIX version of @command{cut} has options to cut fields based on +both bytes and characters. This version does not attempt to implement those options, +as @command{awk} works exclusively in terms of characters. + The program begins with a comment describing the options, the library functions needed, and a @code{usage()} function that prints out a usage message and exits. @code{usage()} is called if invalid arguments are supplied: -@cindex @code{cut.awk} program +@cindex @file{cut.awk} program @example @c file eg/prog/cut.awk # cut.awk --- implement cut in awk @@ -24060,9 +24339,9 @@ @c file eg/prog/cut.awk # Options: +# -c list Cut characters # -f list Cut fields # -d c Field delimiter character -# -c list Cut characters # # -s Suppress lines without the delimiter # @@ -24072,7 +24351,7 @@ function usage() @{ print("usage: cut [-f list] [-d c] [-s] [files...]") > "/dev/stderr" - print("usage: cut [-c list] [files...]") > "/dev/stderr" + print(" cut [-c list] [files...]") > "/dev/stderr" exit 1 @} @end group @@ -24134,7 +24413,7 @@ TABs, and/or newlines, and we want them to be separated with individual spaces. To this end, we save the original space character in the variable -@code{fs} for later use; after setting @code{FS} to @code{"[ ]"} we can't +@code{fs} for later use; after setting @code{FS} to @code{@w{"[ ]"}} we can't use it directly to see if the field delimiter character is in the string. Also remember that after @code{getopt()} is through @@ -24322,9 +24601,25 @@ @cindex searching @subentry files for regular expressions @cindex files @subentry searching for regular expressions @cindex @command{egrep} utility -The @command{egrep} utility searches files for patterns. It uses regular -expressions that are almost identical to those available in @command{awk} -(@pxref{Regexp}). +The @command{grep} family of programs searches files for patterns. +These programs have an unusual history. +Initially there was @command{grep} (Global Regular Expression Print), +which used what are now called Basic Regular Expressions (BREs). +Later there was @command{egrep} (Extended @command{grep}) which used +what are now called Extended Regular Expressions (EREs). (These are almost +identical to those available in @command{awk}; @pxref{Regexp}). +There was also @command{fgrep} (Fast @command{grep}), which searched +for matches of one more fixed strings. + +POSIX chose to combine these three programs into one, simply named +@command{grep}. On a POSIX system, @command{grep}'s default behavior +is to search using BREs. You use @command{-E} to specify the use +of EREs, and @option{-F} to specify searching for fixed strings. + +In practice, systems continue to come with separate @command{egrep} +and @command{fgrep} utilities, for backwards compatibility. This +@value{SECTION} provides an @command{awk} implementation of @command{egrep}, +which supports all of the POSIX-mandated options. You invoke it as follows: @display @@ -24342,17 +24637,12 @@ @table @code @item -c -Print out a count of the lines that matched the pattern, instead of the +Print a count of the lines that matched the pattern, instead of the lines themselves. -@item -s -Be silent. No output is produced and the exit value indicates whether -the pattern was matched. - -@item -v -Invert the sense of the test. @command{egrep} prints the lines that do -@emph{not} match the pattern and exits successfully if the pattern is not -matched. +@item -e @var{pattern} +Use @var{pattern} as the regexp to match. The purpose of the @option{-e} +option is to allow patterns that start with a @samp{-}. @item -i Ignore case distinctions in both the pattern and the input data. @@ -24360,23 +24650,36 @@ @item -l Only print (list) the names of the files that matched, not the lines that matched. -@item -e @var{pattern} -Use @var{pattern} as the regexp to match. The purpose of the @option{-e} -option is to allow patterns that start with a @samp{-}. +@item -q +Be quiet. No output is produced and the exit value indicates whether +the pattern was matched. + +@item -s +Be silent. Do not print error messages for files that could +not be opened. + +@item -v +Invert the sense of the test. @command{egrep} prints the lines that do +@emph{not} match the pattern and exits successfully if the pattern is not +matched. + +@item -x +Match the entire input line in order to consider the match as having +succeeded. @end table This version uses the @code{getopt()} library function -(@pxref{Getopt Function}) -and the file transition library program -(@pxref{Filetrans Function}). +(@pxref{Getopt Function}) and @command{gawk}'s +@code{BEGINFILE} and @code{ENDFILE} special patterns +(@pxref{BEGINFILE/ENDFILE}). -The program begins with a descriptive comment and then a @code{BEGIN} rule +The program begins with descriptive comments and then a @code{BEGIN} rule that processes the command-line arguments with @code{getopt()}. The @option{-i} (ignore case) option is particularly easy with @command{gawk}; we just use the @code{IGNORECASE} predefined variable (@pxref{Built-in Variables}): -@cindex @code{egrep.awk} program +@cindex @file{egrep.awk} program @example @c file eg/prog/egrep.awk # egrep.awk --- simulate egrep in awk @@ -24386,43 +24689,63 @@ @c file eg/prog/egrep.awk # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Revised September 2020 @c endfile @end ignore @c file eg/prog/egrep.awk # Options: # -c count of lines -# -s silent - use exit value -# -v invert test, success if no match +# -e argument is pattern # -i ignore case # -l print filenames only -# -e argument is pattern +# -n add line number to output +# -q quiet - use exit value +# -s silent - don't print errors +# -v invert test, success if no match +# -x the entire line must match # -# Requires getopt and file transition library functions +# Requires getopt library function +# Uses IGNORECASE, BEGINFILE and ENDFILE +# Invoke using gawk -f egrep.awk -- options ... BEGIN @{ - while ((c = getopt(ARGC, ARGV, "ce:svil")) != -1) @{ + while ((c = getopt(ARGC, ARGV, "ce:ilnqsvx")) != -1) @{ if (c == "c") count_only++ - else if (c == "s") - no_print++ - else if (c == "v") - invert++ + else if (c == "e") + pattern = Optarg else if (c == "i") IGNORECASE = 1 else if (c == "l") filenames_only++ - else if (c == "e") - pattern = Optarg + else if (c == "n") + line_numbers++ + else if (c == "q") + no_print++ + else if (c == "s") + no_errors++ + else if (c == "v") + invert++ + else if (c == "x") + full_line++ else usage() @} @c endfile @end example -Next comes the code that handles the @command{egrep}-specific behavior. If no -pattern is supplied with @option{-e}, the first nonoption on the -command line is used. The @command{awk} command-line arguments up to @code{ARGV[Optind]} +@noindent +Note the comment about invocation: Because several of the options overlap +with @command{gawk}'s, a @option{--} is needed to tell @command{gawk} +to stop looking for options. + +Next comes the code that handles the @command{egrep}-specific behavior. +@command{egrep} uses the first nonoption on the command line +if no pattern is supplied with @option{-e}. +If the pattern is empty, that means no pattern was supplied, so it's +necessary to print an error message and exit. +The @command{awk} command-line arguments up to @code{ARGV[Optind]} are cleared, so that @command{awk} won't try to process them as files. If no files are specified, the standard input is used, and if multiple files are specified, we make sure to note this so that the @value{FN}s can precede the @@ -24433,58 +24756,42 @@ if (pattern == "") pattern = ARGV[Optind++] + if (pattern == "") + usage() + for (i = 1; i < Optind; i++) ARGV[i] = "" + if (Optind >= ARGC) @{ ARGV[1] = "-" ARGC = 2 @} else if (ARGC - Optind > 1) do_filenames++ - -# if (IGNORECASE) -# pattern = tolower(pattern) @} @c endfile @end example -The last two lines are commented out, as they are not needed in -@command{gawk}. They should be uncommented if you have to use another version -of @command{awk}. - -The next set of lines should be uncommented if you are not using -@command{gawk}. This rule translates all the characters in the input line -into lowercase if the @option{-i} option is specified.@footnote{It -also introduces a subtle bug; -if a match happens, we output the translated line, not the original.} -The rule is -commented out as it is not necessary with @command{gawk}: - -@example -@c file eg/prog/egrep.awk -#@{ -# if (IGNORECASE) -# $0 = tolower($0) -#@} -@c endfile -@end example - -The @code{beginfile()} function is called by the rule in @file{ftrans.awk} -when each new file is processed. In this case, it is very simple; all it -does is initialize a variable @code{fcount} to zero. @code{fcount} tracks +The @code{BEGINFILE} rule executes +when each new file is processed. In this case, it is fairly simple; it +initializes a variable @code{fcount} to zero. @code{fcount} tracks how many lines in the current file matched the pattern. -Naming the parameter @code{junk} shows we know that @code{beginfile()} -is called with a parameter, but that we're not interested in its value: + +Here also is where we implement the @option{-s} option. We check +if @code{ERRNO} has been set, and if @option{-s} was supplied. +In that case, it's necessary to move on to the next file. Otherwise +@command{gawk} would exit with an error: @example @c file eg/prog/egrep.awk -function beginfile(junk) -@{ +BEGINFILE @{ fcount = 0 + if (ERRNO && no_errors) + nextfile @} @c endfile @end example -The @code{endfile()} function is called after each file has been processed. +The @code{ENDFILE} rule executes after each file has been processed. It affects the output only when the user wants a count of the number of lines that matched. @code{no_print} is true only if the exit status is desired. @code{count_only} is true if line counts are desired. @command{egrep} @@ -24495,8 +24802,7 @@ @example @c file eg/prog/egrep.awk -function endfile(file) -@{ +ENDFILE @{ if (! no_print && count_only) @{ if (do_filenames) print file ":" fcount @@ -24511,26 +24817,28 @@ @c endfile @end example -The @code{BEGINFILE} and @code{ENDFILE} special patterns -(@pxref{BEGINFILE/ENDFILE}) could be used, but then the program would be -@command{gawk}-specific. Additionally, this example was written before -@command{gawk} acquired @code{BEGINFILE} and @code{ENDFILE}. - The following rule does most of the work of matching lines. The variable -@code{matches} is true if the line matched the pattern. If the user -wants lines that did not match, the sense of @code{matches} is inverted -using the @samp{!} operator. @code{fcount} is incremented with the value of +@code{matches} is true (non-zero) if the line matched the pattern. +If the user specified that the entire line must match (with @option{-x}), +the code checks this condition by looking at the values of +@code{RSTART} and @code{RLENGTH}. If those indicate that the match +is not over the full line, @code{matches} is set to zero (false). + +If the user +wants lines that did not match, we invert the sense of @code{matches} +using the @samp{!} operator. We then increment @code{fcount} with the value of @code{matches}, which is either one or zero, depending upon a successful or unsuccessful match. If the line does not match, the -@code{next} statement just moves on to the next record. +@code{next} statement just moves on to the next input line. -A number of additional tests are made, but they are only done if we +We make a number of additional tests, but only if we are not counting lines. First, if the user only wants the exit status (@code{no_print} is true), then it is enough to know that @emph{one} line in this file matched, and we can skip on to the next file with @code{nextfile}. Similarly, if we are only printing @value{FN}s, we can print the @value{FN}, and then skip to the next file with @code{nextfile}. -Finally, each line is printed, with a leading @value{FN} and colon +Finally, each line is printed, with a leading @value{FN}, +optional colon and line number, and the final colon if necessary: @cindex @code{!} (exclamation point) @subentry @code{!} operator @@ -24538,7 +24846,10 @@ @example @c file eg/prog/egrep.awk @{ - matches = ($0 ~ pattern) + matches = match($0, pattern) + if (matches && full_line && (RSTART != 1 || RLENGTH != length())) + matches = 0 + if (invert) matches = ! matches @@ -24557,7 +24868,10 @@ @} if (do_filenames) - print FILENAME ":" $0 + if (line_numbers) + print FILENAME ":" FNR ":" $0 + else + print FILENAME ":" $0 else print @} @@ -24583,14 +24897,13 @@ @c file eg/prog/egrep.awk function usage() @{ - print("Usage: egrep [-csvil] [-e pat] [files ...]") > "/dev/stderr" - print("\n\tegrep [-csvil] pat [files ...]") > "/dev/stderr" + print("Usage:\tegrep [-cilnqsvx] [-e pat] [files ...]") > "/dev/stderr" + print("\tegrep [-cilnqsvx] pat [files ...]") > "/dev/stderr" exit 1 @} @c endfile @end example - @node Id Program @subsection Printing Out User Information @@ -24614,27 +24927,31 @@ However, the @command{id} utility provides a more palatable output than just individual numbers. -Here is a simple version of @command{id} written in @command{awk}. -It uses the user database library functions -(@pxref{Passwd Functions}) +The POSIX version of @command{id} takes several options that give you +control over the output's format, such as printing only real ids, or printing +only numbers or only names. Additionally, you can print the information +for a specific user, instead of that of the current user. + +Here is a version of POSIX @command{id} written in @command{awk}. +It uses the @code{getopt()} library function +(@pxref{Getopt Function}), +the user database library functions +(@pxref{Passwd Functions}), and the group database library functions (@pxref{Group Functions}) from @ref{Library Functions}. -The program is fairly straightforward. All the work is done in the -@code{BEGIN} rule. The user and group ID numbers are obtained from -@code{PROCINFO}. -The code is repetitive. The entry in the user database for the real user ID -number is split into parts at the @samp{:}. The name is the first field. -Similar code is used for the effective user ID number and the group -numbers: +The program is moderately straightforward. All the work is done in the +@code{BEGIN} rule. +It starts with explanatory comments, a list of options, +and then a @code{usage()} function: -@cindex @code{id.awk} program +@cindex @file{id.awk} program @example @c file eg/prog/id.awk # id.awk --- implement id in awk # -# Requires user and group library functions +# Requires user and group library functions and getopt @c endfile @ignore @c file eg/prog/id.awk @@ -24644,6 +24961,7 @@ # Revised February 1996 # Revised May 2014 # Revised September 2014 +# Revised September 2020 @c endfile @end ignore @@ -24652,126 +24970,389 @@ # uid=12(foo) euid=34(bar) gid=3(baz) \ # egid=5(blat) groups=9(nine),2(two),1(one) +# Options: +# -G Output all group ids as space separated numbers (ruid, euid, groups) +# -g Output only the euid as a number +# -n Output name instead of the numeric value (with -g/-G/-u) +# -r Output ruid/rguid instead of effective id +# -u Output only effective user id, as a number + @group -BEGIN @{ - uid = PROCINFO["uid"] - euid = PROCINFO["euid"] - gid = PROCINFO["gid"] - egid = PROCINFO["egid"] +function usage() +@{ + printf("Usage:\n" \ + "\tid [user]\n" \ + "\tid -G [-n] [user]\n" \ + "\tid -g [-nr] [user]\n" \ + "\tid -u [-nr] [user]\n") > "/dev/stderr" + + exit 1 +@} @end group +@c endfile +@end example + +The first step is to parse the options using @code{getopt()}, +and to set various flag variables according to the options given: + +@example +@c file eg/prog/id.awk +BEGIN @{ + # parse args + while ((c = getopt(ARGC, ARGV, "Ggnru")) != -1) @{ + if (c == "G") + groupset_only++ + else if (c == "g") + egid_only++ + else if (c == "n") + names_not_groups++ + else if (c == "r") + real_ids_only++ + else if (c == "u") + euid_only++ + else + usage() + @} +@c endfile +@end example + +The next step is to check that no conflicting options were +provided. @option{-G} and @option{-r} are mutually exclusive. +It is also not allowed to provide more than one user name +on the command line: + +@example +@c file eg/prog/id.awk + if (groupset_only && real_ids_only) + usage() + else if (ARGC - Optind > 1) + usage() +@c endfile +@end example +The user and group ID numbers are obtained from +@code{PROCINFO} for the current user, or from the +user and password databases for a user supplied on +the command line. In the latter case, @code{real_ids_only} +is set, since it's not possible to print information about +the effective user and group IDs: + +@example +@c file eg/prog/id.awk + if (ARGC - Optind == 0) @{ + # gather info for current user + uid = PROCINFO["uid"] + euid = PROCINFO["euid"] + gid = PROCINFO["gid"] + egid = PROCINFO["egid"] + for (i = 1; ("group" i) in PROCINFO; i++) + groupset[i] = PROCINFO["group" i] + @} else @{ + fill_info_for_user(ARGV[ARGC-1]) + real_ids_only++ + @} +@c endfile +@end example + +The test in the @code{for} loop is worth noting. +Any supplementary groups in the @code{PROCINFO} array have the +indices @code{"group1"} through @code{"group@var{N}"} for some +@var{N} (i.e., the total number of supplementary groups). +However, we don't know in advance how many of these groups +there are. + +This loop works by starting at one, concatenating the value with +@code{"group"}, and then using @code{in} to see if that value is +in the array (@pxref{Reference to Elements}). Eventually, @code{i} increments past +the last group in the array and the loop exits. + +The loop is also correct if there are @emph{no} supplementary +groups; then the condition is false the first time it's +tested, and the loop body never executes. + + +Now, based on the options, we decide what information to print. +For @option{-G} (print just the group set), we then select +whether to print names or numbers. In either case, when done +we exit: + +@example +@c file eg/prog/id.awk + if (groupset_only) @{ + if (names_not_groups) @{ + for (i = 1; i in groupset; i++) @{ + entry = getgrgid(groupset[i]) + name = get_first_field(entry) + printf("%s", name) + if ((i + 1) in groupset) + printf(" ") + @} + @} else @{ + for (i = 1; i in groupset; i++) @{ + printf("%u", groupset[i]) + if ((i + 1) in groupset) + printf(" ") + @} + @} + + print "" # final newline + exit 0 + @} +@c endfile +@end example + +Otherwise, for @option{-g} (effective group ID only), we +check if @option{-r} was also provided, in which case we +use the real group ID. Then based on @option{-n}, we decide +whether to print names or numbers. Here too, when done, +we exit: + +@example +@c file eg/prog/id.awk + else if (egid_only) @{ + id = real_ids_only ? gid : egid + if (names_not_groups) @{ + entry = getgrgid(id) + name = get_first_field(entry) + printf("%s\n", name) + @} else @{ + printf("%u\n", id) + @} + + exit 0 + @} +@c endfile +@end example + +The @code{get_first_field()} function extracts the group name from +the group database entry for the given group ID. + +Similar processing logic applies to @option{-u} (effective user ID only), +combined with @option{-r} and @option{-n}: + +@example +@c file eg/prog/id.awk + else if (euid_only) @{ + id = real_ids_only ? uid : euid + if (names_not_groups) @{ + entry = getpwuid(id) + name = get_first_field(entry) + printf("%s\n", name) + @} else @{ + printf("%u\n", id) + @} + + exit 0 + @} +@c endfile +@end example + +At this point, we haven't exited yet, so we print +the regular, default output, based either on the current +user's information, or that of the user whose name was +provided on the command line. We start with the real user ID: + +@example +@c file eg/prog/id.awk printf("uid=%d", uid) pw = getpwuid(uid) - pr_first_field(pw) + print_first_field(pw) +@c endfile +@end example -@group - if (euid != uid) @{ +The @code{print_first_field()} function prints the user's +login name from the password file entry, surrounded by +parentheses. It is shown soon. +Printing the effective user ID is next: + +@example +@c file eg/prog/id.awk + if (euid != uid && ! real_ids_only) @{ printf(" euid=%d", euid) pw = getpwuid(euid) -@end group -@group - pr_first_field(pw) + print_first_field(pw) @} -@end group +@c endfile +@end example + +Similar logic applies to the real and effective group IDs: +@example +@c file eg/prog/id.awk printf(" gid=%d", gid) pw = getgrgid(gid) - pr_first_field(pw) + print_first_field(pw) - if (egid != gid) @{ + if (egid != gid && ! real_ids_only) @{ printf(" egid=%d", egid) pw = getgrgid(egid) - pr_first_field(pw) + print_first_field(pw) @} +@c endfile +@end example + +Finally, we print the group set and the terminating newline: - for (i = 1; ("group" i) in PROCINFO; i++) @{ +@example +@c file eg/prog/id.awk + for (i = 1; i in groupset; i++) @{ if (i == 1) printf(" groups=") - group = PROCINFO["group" i] + group = groupset[i] printf("%d", group) pw = getgrgid(group) - pr_first_field(pw) - if (("group" (i+1)) in PROCINFO) + print_first_field(pw) + if ((i + 1) in groupset) printf(",") @} print "" @} +@c endfile +@end example + +The @code{get_first_field()} function extracts the first field +from a password or group file entry for use as a user or group +name. Fields are separated by @samp{:} characters: -function pr_first_field(str, a) +@example +@c file eg/prog/id.awk +function get_first_field(str, a) @{ if (str != "") @{ split(str, a, ":") - printf("(%s)", a[1]) + return a[1] @} @} @c endfile @end example -The test in the @code{for} loop is worth noting. -Any supplementary groups in the @code{PROCINFO} array have the -indices @code{"group1"} through @code{"group@var{N}"} for some -@var{N} (i.e., the total number of supplementary groups). -However, we don't know in advance how many of these groups -there are. +This function is then used by @code{print_first_field()} to +output the given name surrounded by parentheses: -This loop works by starting at one, concatenating the value with -@code{"group"}, and then using @code{in} to see if that value is -in the array (@pxref{Reference to Elements}). Eventually, @code{i} is incremented past -the last group in the array and the loop exits. +@example +@c file eg/prog/id.awk +function print_first_field(str) +@{ + first = get_first_field(str) + printf("(%s)", first) +@} +@c endfile +@end example -The loop is also correct if there are @emph{no} supplementary -groups; then the condition is false the first time it's -tested, and the loop body never executes. +These two functions simply isolate out some code that is used repeatedly, +making the whole program shorter and cleaner. In particular, moving the +check for the empty string into @code{get_first_field()} saves several +lines of code. -The @code{pr_first_field()} function simply isolates out some -code that is used repeatedly, making the whole program -shorter and cleaner. In particular, moving the check for -the empty string into this function saves several lines of code. +Finally, @code{fill_info_for_user()} fetches user, group, and group +set information for the user named on the command. The code is fairly +straightforward, merely requiring that we exit if the given user doesn't +exist: +@example +@c file eg/prog/id.awk +function fill_info_for_user(user, + pwent, fields, groupnames, grent, groups, i) +@{ + pwent = getpwnam(user) + if (pwent == "") @{ + printf("id: '%s': no such user\n", user) > "/dev/stderr" + exit 1 + @} + + split(pwent, fields, ":") + uid = fields[3] + 0 + gid = fields[4] + 0 +@c endfile +@end example + +Getting the group set is a little awkward. The library routine +@code{getgruser()} returns a list of group @emph{names}. These +have to be gone through and turned back into group numbers, +so that the rest of the code will work as expected: + +@example +@ignore +@c file eg/prog/id.awk + +@c endfile +@end ignore +@c file eg/prog/id.awk + groupnames = getgruser(user) + split(groupnames, groups, " ") + for (i = 1; i in groups; i++) @{ + grent = getgrnam(groups[i]) + split(grent, fields, ":") + groupset[i] = fields[3] + 0 + @} +@} +@c endfile +@end example @node Split Program @subsection Splitting a Large File into Pieces -@c FIXME: One day, update to current POSIX version of split - @cindex files @subentry splitting @cindex @code{split} utility -The @command{split} program splits large text files into smaller pieces. -Usage is as follows:@footnote{This is the traditional usage. The -POSIX usage is different, but not relevant for what the program -aims to demonstrate.} +The @command{split} utility splits large text files into smaller pieces. +The usage follows the POSIX standard for @command{split} and is as follows: @display -@command{split} [@code{-@var{count}}] [@var{file}] [@var{prefix}] +@command{split} [@option{-l} @var{count}] [@option{-a} @var{suffix-len}] [@var{file} [@var{outname}]] +@command{split} @option{-b} @var{N}[@code{k}|@code{m}]] [@option{-a} @var{suffix-len}] [@var{file} [@var{outname}]] @end display -By default, -the output files are named @file{xaa}, @file{xab}, and so on. Each file has -1,000 lines in it, with the likely exception of the last file. To change the -number of lines in each file, supply a number on the command line -preceded with a minus sign (e.g., @samp{-500} for files with 500 lines in them -instead of 1,000). To change the names of the output files to something like -@file{myfileaa}, @file{myfileab}, and so on, supply an additional -argument that specifies the @value{FN} prefix. - -Here is a version of @command{split} in @command{awk}. It uses the -@code{ord()} and @code{chr()} functions presented in -@ref{Ordinal Functions}. - -The program first sets its defaults, and then tests to make sure there are -not too many arguments. It then looks at each argument in turn. The -first argument could be a minus sign followed by a number. If it is, this happens -to look like a negative number, so it is made positive, and that is the -count of lines. The @value{DF} name is skipped over and the final argument -is used as the prefix for the output @value{FN}s: +By default, the output files are named @file{xaa}, @file{xab}, and so +on. Each file has 1,000 lines in it, with the likely exception of the +last file. + +The @command{split} program has evolved over time, and the current POSIX +version is more complicated than the original Unix version. The options +and what they do are as follows: + +@table @asis +@item @option{-a} @var{suffix-len} +Use @var{suffix-len} characters for the suffix. For example, if @var{suffix-len} +is four, the output files would range from @file{xaaaa} to @file{xzzzz}. + +@item @option{-b} @var{N}[@code{k}|@code{m}]] +Instead of each file containing a specified number of lines, each file +should have (at most) @var{N} bytes. Supplying a trailing @samp{k} +multiplies @var{N} by 1,024, yielding kilobytes. Supplying a trailing +@samp{m} multiplies @var{N} by 1,048,576 (@math{1,024 @value{TIMES} 1,024}) +yielding megabytes. (This option is mutually exclusive with @option{-l}). + +@item @option{-l} @var{count} +Each file should have at most @var{count} lines, instead of the default +1,000. (This option is mutually exclusive with @option{-b}). +@end table + +If supplied, @var{file} is the input file to read. Otherwise standard +input is processed. If supplied, @var{outname} is the leading prefix +to use for @value{FN}s, instead of @samp{x}. + +In order to use the @option{-b} option, @command{gawk} should be invoked +with its @option{-b} option (@pxref{Options}), or with the environment +variable @env{LC_ALL} set to @samp{C}, so that each input byte is treated +as a separate character.@footnote{Using @option{-b} twice requires +separating @command{gawk}'s options from those of the program. For example: +@samp{gawk -f getopt.awk -f split.awk -b -- -b 42m large-file.txt split-}.} + +Here is an implementation of @command{split} in @command{awk}. It uses the +@code{getopt()} function presented in @ref{Getopt Function}. + +The program begins with a standard descriptive comment and then +a @code{usage()} function describing the options. The variable +@code{common} keeps the function's lines short so that they +look nice on the page: -@cindex @code{split.awk} program +@cindex @file{split.awk} program @example @c file eg/prog/split.awk # split.awk --- do split in awk # -# Requires ord() and chr() library functions +# Requires getopt() library function. @c endfile @ignore @c file eg/prog/split.awk @@ -24779,100 +25360,279 @@ # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 # Revised slightly, May 2014 +# Rewritten September 2020 @c endfile @end ignore @c file eg/prog/split.awk -# usage: split [-count] [file] [outname] +function usage( common) +@{ + common = "[-a suffix-len] [file [outname]]" + printf("usage: split [-l count] %s\n", common) > "/dev/stderr" + printf(" split [-b N[k|m]] %s\n", common) > "/dev/stderr" + exit 1 +@} +@c endfile +@end example + +Next, in a @code{BEGIN} rule we set the default values and parse the arguments. +After that we initialize the data structures used to cycle the suffix +from @samp{aa@dots{}} to @samp{zz@dots{}}. Finally we set the name of +the first output file: + +@example +@c file eg/prog/split.awk BEGIN @{ - outfile = "x" # default - count = 1000 - if (ARGC > 4) - usage() + # Set defaults: + Suffix_length = 2 + Line_count = 1000 + Byte_count = 0 + Outfile = "x" - i = 1 - if (i in ARGV && ARGV[i] ~ /^-[[:digit:]]+$/) @{ - count = -ARGV[i] - ARGV[i] = "" - i++ + parse_arguments() + + init_suffix_data() + + Output = (Outfile compute_suffix()) +@} +@c endfile +@end example + +Parsing the arguments is straightforward. The program follows our +convention (@pxref{Library Names}) of having important global variables +start with an uppercase letter: + +@example +@c file eg/prog/split.awk +function parse_arguments( i, c, l, modifier) +@{ + while ((c = getopt(ARGC, ARGV, "a:b:l:")) != -1) @{ + if (c == "a") + Suffix_length = Optarg + 0 + else if (c == "b") @{ + Byte_count = Optarg + 0 + Line_count = 0 + + l = length(Optarg) + modifier = substr(Optarg, l, 1) + if (modifier == "k") + Byte_count *= 1024 + else if (modifier == "m") + Byte_count *= 1024 * 1024 + @} else if (c == "l") @{ + Line_count = Optarg + 0 + Byte_count = 0 + @} else + usage() @} - # test argv in case reading from stdin instead of file - if (i in ARGV) - i++ # skip datafile name -@group - if (i in ARGV) @{ - outfile = ARGV[i] + + # Clear out options + for (i = 1; i < Optind; i++) ARGV[i] = "" + + # Check for filename + if (ARGV[Optind]) @{ + Optind++ + + # Check for different prefix + if (ARGV[Optind]) @{ + Outfile = ARGV[Optind] + ARGV[Optind] = "" + + if (++Optind < ARGC) + usage() + @} @} -@end group -@group - s1 = s2 = "a" - out = (outfile s1 s2) @} -@end group @c endfile @end example -The next rule does most of the work. @code{tcount} (temporary count) tracks -how many lines have been printed to the output file so far. If it is greater -than @code{count}, it is time to close the current file and start a new one. -@code{s1} and @code{s2} track the current suffixes for the @value{FN}. If -they are both @samp{z}, the file is just too big. Otherwise, @code{s1} -moves to the next letter in the alphabet and @code{s2} starts over again at -@samp{a}: +Managing the @value{FN} suffix is interesting. +Given a suffix of length three, say, the values go from +@samp{aaa}, @samp{aab}, @samp{aac} and so on, all the way to +@samp{zzx}, @samp{zzy}, and finally @samp{zzz}. +There are two important aspects to this: + +@itemize @bullet +@item +We have to be +able to easily generate these suffixes, and in particular +easily handle ``rolling over''; for example, going from +@samp{abz} to @samp{aca}. + +@item +We have to tell when we've finished with the last file, +so that if we still have more input data we can print an +error message and exit. The trick is to handle this @emph{after} +using the last suffix, and not when the final suffix is created. +@end itemize + +The computation is handled by @code{compute_suffix()}. +This function is called every time a new file is opened. + +The flow here is messy, because we want to generate @samp{zzzz} (say), +and use it, and only produce an error after all the @value{FN} +suffixes have been used up. The logical steps are as follows: + +@enumerate 1 +@item +Generate the suffix, saving the value in @code{result} to return. +To do this, the supplementary array @code{Suffix_ind} contains one +element for each letter in the suffix. Each element ranges from 1 to +26, acting as the index into a string containing all the lowercase +letters of the English alphabet. +It is initialized by @code{init_suffix_data()}. +@code{result} is built up one letter at a time, using each @code{substr()}. + +@item +Prepare the data structures for the next time @code{compute_suffix()} +is called. To do this, we loop over @code{Suffix_ind}, @emph{backwards}. +If the current element is less than 26, it's incremented and the loop +breaks (@samp{abq} goes to @samp{abr}). Otherwise, the element is +reset to one and we move down the list (@samp{abz} to @samp{aca}). +Thus, the @code{Suffix_ind} array is always ``one step ahead'' of the actual +@value{FN} suffix to be returned. + +@item +Check if we've gone past the limit of possible @value{FN}s. +If @code{Reached_last} is true, print a message and exit. Otherwise, +check if @code{Suffix_ind} describes a suffix where all the letters are +@samp{z}. If that's the case we're about to return the final suffix. If +so, we set @code{Reached_last} to true so that the @emph{next} call to +@code{compute_suffix()} will cause a failure. +@end enumerate + +Physically, the steps in the function occur in the order 3, 1, 2: -@c else on separate line here for page breaking @example @c file eg/prog/split.awk +function compute_suffix( i, result, letters) @{ - if (++tcount > count) @{ - close(out) - if (s2 == "z") @{ - if (s1 == "z") @{ - printf("split: %s is too large to split\n", - FILENAME) > "/dev/stderr" - exit 1 - @} - s1 = chr(ord(s1) + 1) - s2 = "a" - @} -@group - else - s2 = chr(ord(s2) + 1) -@end group - out = (outfile s1 s2) - tcount = 1 + # Logical step 3 + if (Reached_last) @{ + printf("split: too many files!\n") > "/dev/stderr" + exit 1 + @} else if (on_last_file()) + Reached_last = 1 # fail when wrapping after 'zzz' + + # Logical step 1 + result = "" + letters = "abcdefghijklmnopqrstuvwxyz" + for (i = 1; i <= Suffix_length; i++) + result = result substr(letters, Suffix_ind[i], 1) + + # Logical step 2 + for (i = Suffix_length; i >= 1; i--) @{ + if (++Suffix_ind[i] > 26) @{ + Suffix_ind[i] = 1 + @} else + break @} - print > out + + return result @} @c endfile @end example -@noindent -The @code{usage()} function simply prints an error message and exits: +The @code{Suffix_ind} array and @code{Reached_last} are initialized +by @code{init_suffix_data()}: @example @c file eg/prog/split.awk -function usage() +function init_suffix_data( i) @{ - print("usage: split [-num] [file] [outname]") > "/dev/stderr" - exit 1 + for (i = 1; i <= Suffix_length; i++) + Suffix_ind[i] = 1 + + Reached_last = 0 @} @c endfile @end example -This program is a bit sloppy; it relies on @command{awk} to automatically close the last file -instead of doing it in an @code{END} rule. -It also assumes that letters are contiguous in the character set, -which isn't true for EBCDIC systems. +The function @code{on_last_file()} returns true if @code{Suffix_ind} describes +a suffix where all the letters are @samp{z} by checking that all the elements +in the array are equal to 26: -@ifset FOR_PRINT -You might want to consider how to eliminate the use of -@code{ord()} and @code{chr()}; this can be done in such a -way as to solve the EBCDIC issue as well. -@end ifset +@example +@c file eg/prog/split.awk +function on_last_file( i, on_last) +@{ + on_last = 1 + for (i = 1; i <= Suffix_length; i++) @{ + on_last = on_last && (Suffix_ind[i] == 26) + @} + return on_last +@} +@c endfile +@end example + +The actual work of splitting the input file is done by the next two rules. +Since splitting by line count and splitting by byte count are mutually +exclusive, we simply use two separate rules, one for when @code{Line_count} +is greater than zero, and another for when @code{Byte_count} is greater than zero. + +The variable @code{tcount} counts how many lines have been processed so far. +When it exceeds @code{Line_count}, it's time to close the previous file and +switch to a new one: + +@example +@c file eg/prog/split.awk +Line_count > 0 @{ + if (++tcount > Line_count) @{ + close(Output) + Output = (Outfile compute_suffix()) + tcount = 1 + @} + print > Output +@} +@c endfile +@end example + +The rule for handling bytes is more complicated. Since lines most likely +vary in length, the @code{Byte_count} boundary may be hit in the middle of +an input record. In that case, @command{split} has to write enough of the +first bytes of the input record to finish up @code{Byte_count} bytes, close +the file, open a new file, and write the rest of the record to the new file. +The logic here does all that: + +@example +@c file eg/prog/split.awk +Byte_count > 0 @{ + # `+ 1' is for the final newline + if (tcount + length($0) + 1 > Byte_count) @{ # would overflow + # compute leading bytes + leading_bytes = Byte_count - tcount + + # write leading bytes + printf("%s", substr($0, 1, leading_bytes)) > Output + + # close old file, open new file + close(Output) + Output = (Outfile compute_suffix()) + + # set up first bytes for new file + $0 = substr($0, leading_bytes + 1) # trailing bytes + tcount = 0 + @} + + # write full record or trailing bytes + tcount += length($0) + 1 + print > Output +@} +@c endfile +@end example + +Finally, the @code{END} rule cleans up by closing the last output file: + +@example +@c file eg/prog/split.awk +END @{ + close(Output) +@} +@c endfile +@end example @node Tee Program @subsection Duplicating Output into Multiple Files @@ -24905,7 +25665,7 @@ Finally, @command{awk} is forced to read the standard input by setting @code{ARGV[1]} to @code{"-"} and @code{ARGC} to two: -@cindex @code{tee.awk} program +@cindex @file{tee.awk} program @example @c file eg/prog/tee.awk # tee.awk --- tee in awk @@ -24999,8 +25759,6 @@ @node Uniq Program @subsection Printing Nonduplicated Lines of Text -@c FIXME: One day, update to current POSIX version of uniq - @cindex printing @subentry unduplicated lines of text @cindex text, printing @subentry unduplicated lines of @cindex @command{uniq} utility @@ -25010,7 +25768,7 @@ options. The usage is as follows: @display -@command{uniq} [@option{-udc} [@code{-@var{n}}]] [@code{+@var{n}}] [@var{inputfile} [@var{outputfile}]] +@command{uniq} [@option{-udc} [@code{-f @var{n}}] [@code{-s @var{n}}]] [@var{inputfile} [@var{outputfile}]] @end display The options for @command{uniq} are: @@ -25026,14 +25784,14 @@ Count lines. This option overrides @option{-d} and @option{-u}. Both repeated and nonrepeated lines are counted. -@item -@var{n} +@item -f @var{n} Skip @var{n} fields before comparing lines. The definition of fields is similar to @command{awk}'s default: nonwhitespace characters separated by runs of spaces and/or TABs. -@item +@var{n} +@item -s @var{n} Skip @var{n} characters before comparing lines. Any fields specified with -@samp{-@var{n}} are skipped first. +@option{-f} are skipped first. @item @var{inputfile} Data is read from the input file named on the command line, instead of from @@ -25054,24 +25812,9 @@ (@pxref{Join Function}). The program begins with a @code{usage()} function and then a brief outline of -the options and their meanings in comments. -The @code{BEGIN} rule deals with the command-line arguments and options. It -uses a trick to get @code{getopt()} to handle options of the form @samp{-25}, -treating such an option as the option letter @samp{2} with an argument of -@samp{5}. If indeed two or more digits are supplied (@code{Optarg} looks -like a number), @code{Optarg} is -concatenated with the option digit and then the result is added to zero to make -it into a number. If there is only one digit in the option, then -@code{Optarg} is not needed. In this case, @code{Optind} must be decremented so that -@code{getopt()} processes it next time. This code is admittedly a bit -tricky. - -If no options are supplied, then the default is taken, to print both -repeated and nonrepeated lines. The output file, if provided, is assigned -to @code{outputfile}. Early on, @code{outputfile} is initialized to the -standard output, @file{/dev/stdout}: +the options and their meanings in comments: -@cindex @code{uniq.awk} program +@cindex @file{uniq.awk} program @example @c file eg/prog/uniq.awk @group @@ -25085,26 +25828,63 @@ # # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Updated August 2020 to current POSIX @c endfile @end ignore @c file eg/prog/uniq.awk function usage() @{ - print("Usage: uniq [-udc [-n]] [+n] [ in [ out ]]") > "/dev/stderr" + print("Usage: uniq [-udc [-f fields] [-s chars]] " \ + "[ in [ out ]]") > "/dev/stderr" exit 1 @} # -c count lines. overrides -d and -u # -d only repeated lines # -u only nonrepeated lines -# -n skip n fields -# +n skip n characters, skip fields first +# -f n skip n fields +# -s n skip n characters, skip fields first +@c endfile +@end example + +The POSIX standard for @command{uniq} allows options to start with +@samp{+} as well as with @samp{-}. An initial @code{BEGIN} rule +traverses the arguments changing any leading @samp{+} to @samp{-} +so that the @code{getopt()} function can parse the options: + +@example +@c file eg/prog/uniq.awk +# As of 2020, '+' can be used as the option character in addition to '-' +# Previously allowed use of -N to skip fields and +N to skip +# characters is no longer allowed, and not supported by this version. BEGIN @{ + # Convert + to - so getopt can handle things + for (i = 1; i < ARGC; i++) @{ + first = substr(ARGV[i], 1, 1) + if (ARGV[i] == "--" || (first != "-" && first != "+")) + break + else if (first == "+") + # Replace "+" with "-" + ARGV[i] = "-" substr(ARGV[i], 2) + @} +@} +@c endfile +@end example + +The next @code{BEGIN} rule deals with the command-line arguments and options. +If no options are supplied, then the default is taken, to print both +repeated and nonrepeated lines. The output file, if provided, is assigned +to @code{outputfile}. Early on, @code{outputfile} is initialized to the +standard output, @file{/dev/stdout}: + +@example +@c file eg/prog/uniq.awk +BEGIN @{ count = 1 outputfile = "/dev/stdout" - opts = "udc0:1:2:3:4:5:6:7:8:9:" + opts = "udcf:s:" while ((c = getopt(ARGC, ARGV, opts)) != -1) @{ if (c == "u") non_repeated_only++ @@ -25112,26 +25892,14 @@ repeated_only++ else if (c == "c") do_count++ - else if (index("0123456789", c) != 0) @{ - # getopt() requires args to options - # this messes us up for things like -5 - if (Optarg ~ /^[[:digit:]]+$/) - fcount = (c Optarg) + 0 - else @{ - fcount = c + 0 - Optind-- - @} - @} else + else if (c == "f") + fcount = Optarg + 0 + else if (c == "s") + charcount = Optarg + 0 + else usage() @} -@group - if (ARGV[Optind] ~ /^\+[[:digit:]]+$/) @{ - charcount = substr(ARGV[Optind], 2) + 0 - Optind++ - @} -@end group - for (i = 1; i < Optind; i++) ARGV[i] = "" @@ -25262,37 +26030,92 @@ make the program a little easier to follow. @ifset FOR_PRINT +@cindex Kernighan, Brian @subentry quotes The logic for choosing which lines to print represents a @dfn{state -machine}, which is ``a device that can be in one of a set number of stable -conditions depending on its previous condition and on the present values -of its inputs.''@footnote{This is the definition returned from entering -@code{define: state machine} into Google.} -Brian Kernighan suggests that -``an alternative approach to state machines is to just read -the input into an array, then use indexing. It's almost always -easier code, and for most inputs where you would use this, just -as fast.'' Consider how to rewrite the logic to follow this -suggestion. +machine}, which is ``a device which can be in one of a set number +of stable conditions depending on its previous condition and on the +present values of its inputs.''@footnote{This definition is from +@uref{https://www.lexico.com/en/definition/state_machine}.} Brian +Kernighan suggests that ``an alternative approach to state machines is +to just read the input into an array, then use indexing. It's almost +always easier code, and for most inputs where you would use this, just +as fast.'' Consider how to rewrite the logic to follow this suggestion. @end ifset - @node Wc Program @subsection Counting Things -@c FIXME: One day, update to current POSIX version of wc - -@cindex counting words, lines, and characters +@cindex counting words, lines, characters, and bytes @cindex input files @subentry counting elements in @cindex words @subentry counting @cindex characters @subentry counting @cindex lines @subentry counting +@cindex bytes @subentry counting @cindex @command{wc} utility -The @command{wc} (word count) utility counts lines, words, and characters in -one or more input files. Its usage is as follows: +The @command{wc} (word count) utility counts lines, words, characters +and bytes in one or more input files. + +@menu +* Bytes vs. Characters:: Modern character sets. +* Using extensions:: A brief intro to extensions. +* @command{wc} program:: Code for @file{wc.awk}. +@end menu + +@node Bytes vs. Characters +@subsubsection Modern Character Sets + +In the early days of computing, single bytes were used for storing +characters. The most common character sets were ASCII and EBCDIC, +which each provided all the English upper- and lowercase letters, the 10 +Hindu-Arabic numerals from 0 through 9, and a number of other standard +punctuation and control characters. + +Today, the most popular character set in use is Unicode (of which ASCII +is a pure subset). Unicode provides tens of thousands of unique characters +(called @dfn{code points}) to cover most existing human languages (living +and dead) and a number of nonhuman ones as well (such as Klingon and +J.R.R.@: Tolkien's elvish languages). + +To save space in files, Unicode code points are @dfn{encoded}, where each +character takes from one to four bytes in the file. UTF-8 is possibly +the most popular of such @dfn{multibyte encodings}. + +The POSIX standard requires that @command{awk} function in terms +of characters, not bytes. Thus in @command{gawk}, @code{length()}, +@code{substr()}, @code{split()}, @code{match()} and the other string +functions (@pxref{String Functions}) all work in terms of characters in +the local character set, and not in terms of bytes. (Not all @command{awk} +implementations do so, though). + +There is no standard, built-in way to distinguish characters from bytes +in an @command{awk} program. For an @command{awk} implementation of +@command{wc}, which needs to make such a distinction, we will have to +use an external extension. + +@node Using extensions +@subsubsection A Brief Introduction To Extensions + +Loadable extensions are presented in full detail in @ref{Dynamic Extensions}. +They provide a way to add functions to @command{gawk} which can call +out to other facilities written in C or C++. + +For the purposes of +@file{wc.awk}, it's enough to know that the extension is loaded +with the @code{@@load} directive, and the additional function we +will use is called @code{mbs_length()}. This function returns the +number of bytes in a string, not the number of characters. + +The @code{"mbs"} extension comes from the @code{gawkextlib} +project. @xref{gawkextlib} for more information. + +@node @command{wc} program +@subsubsection Code for @file{wc.awk} + +The usage for @command{wc} is as follows: @display -@command{wc} [@option{-lwc}] [@var{files} @dots{}] +@command{wc} [@option{-lwcm}] [@var{files} @dots{}] @end display If no files are specified on the command line, @command{wc} reads its standard @@ -25300,49 +26123,56 @@ the files. The options and their meanings are as follows: @table @code +@item -c +Count only bytes. +Once upon a time, the @samp{c} in this option stood for ``characters.'' +But, as explained earlier, bytes and character are no longer synonymous +with each other. + @item -l Count only lines. +@item -m +Count only characters. + @item -w Count only words. A ``word'' is a contiguous sequence of nonwhitespace characters, separated by spaces and/or TABs. Luckily, this is the normal way @command{awk} separates fields in its input data. - -@item -c -Count only characters. @end table Implementing @command{wc} in @command{awk} is particularly elegant, because @command{awk} does a lot of the work for us; it splits lines into words (i.e., fields) and counts them, it counts lines (i.e., records), -and it can easily tell us how long a line is. +and it can easily tell us how long a line is in characters. This program uses the @code{getopt()} library function (@pxref{Getopt Function}) and the file-transition functions (@pxref{Filetrans Function}). -This version has one notable difference from traditional versions of +This version has one notable difference from older versions of @command{wc}: it always prints the counts in the order lines, words, -and characters. Traditional versions note the order of the @option{-l}, +characters and bytes. Older versions note the order of the @option{-l}, @option{-w}, and @option{-c} options on the command line, and print the -counts in that order. +counts in that order. POSIX does not mandate this behavior, though. The @code{BEGIN} rule does the argument processing. The variable @code{print_total} is true if more than one file is named on the command line: -@cindex @code{wc.awk} program +@cindex @file{wc.awk} program @example @c file eg/prog/wc.awk -# wc.awk --- count lines, words, characters +# wc.awk --- count lines, words, characters, bytes @c endfile @ignore @c file eg/prog/wc.awk # # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Revised September 2020 @c endfile @end ignore @c file eg/prog/wc.awk @@ -25350,29 +26180,35 @@ # Options: # -l only count lines # -w only count words -# -c only count characters +# -c only count bytes +# -m only count characters # -# Default is to count lines, words, characters +# Default is to count lines, words, bytes # # Requires getopt() and file transition library functions +# Requires mbs extension from gawkextlib + +@@load "mbs" BEGIN @{ # let getopt() print a message about # invalid options. we ignore them - while ((c = getopt(ARGC, ARGV, "lwc")) != -1) @{ + while ((c = getopt(ARGC, ARGV, "lwcm")) != -1) @{ if (c == "l") do_lines = 1 else if (c == "w") do_words = 1 else if (c == "c") + do_bytes = 1 + else if (c == "m") do_chars = 1 @} for (i = 1; i < Optind; i++) ARGV[i] = "" - # if no options, do all - if (! do_lines && ! do_words && ! do_chars) - do_lines = do_words = do_chars = 1 + # if no options, do lines, words, bytes + if (! do_lines && ! do_words && ! do_chars && ! do_bytes) + do_lines = do_words = do_bytes = 1 print_total = (ARGC - i > 1) @} @@ -25380,14 +26216,14 @@ @end example The @code{beginfile()} function is simple; it just resets the counts of lines, -words, and characters to zero, and saves the current @value{FN} in +words, characters and bytes to zero, and saves the current @value{FN} in @code{fname}: @example @c file eg/prog/wc.awk function beginfile(file) @{ - lines = words = chars = 0 + lines = words = chars = bytes = 0 fname = FILENAME @} @c endfile @@ -25405,6 +26241,7 @@ tlines += lines twords += words tchars += chars + tbytes += bytes if (do_lines) printf "\t%d", lines @group @@ -25413,26 +26250,28 @@ @end group if (do_chars) printf "\t%d", chars + if (do_bytes) + printf "\t%d", bytes printf "\t%s\n", fname @} @c endfile @end example There is one rule that is executed for each line. It adds the length of -the record, plus one, to @code{chars}.@footnote{Because @command{gawk} -understands multibyte locales, this code counts characters, not bytes.} -Adding one plus the record length +the record, plus one, to @code{chars}. Adding one plus the record length is needed because the newline character separating records (the value of @code{RS}) is not part of the record itself, and thus not included -in its length. Next, @code{lines} is incremented for each line read, -and @code{words} is incremented by the value of @code{NF}, which is the -number of ``words'' on this line: +in its length. Similarly, it adds the length of the record in bytes, +plus one, to @code{bytes}. Next, @code{lines} is incremented for each +line read, and @code{words} is incremented by the value of @code{NF}, +which is the number of ``words'' on this line: @example @c file eg/prog/wc.awk # do per line @{ chars += length($0) + 1 # get newline + bytes += mbs_length($0) + 1 lines++ words += NF @} @@ -25451,6 +26290,8 @@ printf "\t%d", twords if (do_chars) printf "\t%d", tchars + if (do_bytes) + printf "\t%d", tbytes print "\ttotal" @} @} @@ -25518,7 +26359,7 @@ current record is skipped. Otherwise, the program loops through each word, comparing it to the previous one: -@cindex @code{dupword.awk} program +@cindex @file{dupword.awk} program @example @c file eg/prog/dupword.awk # dupword.awk --- find duplicate words in text @@ -25610,7 +26451,7 @@ @code{if}-@code{else} statements instead. Here is the program: -@cindex @code{alarm.awk} program +@cindex @file{alarm.awk} program @example @c file eg/prog/alarm.awk # alarm.awk --- set an alarm @@ -25806,7 +26647,7 @@ Finally, the processing rule simply calls @code{translate()} for each record: -@cindex @code{translate.awk} program +@cindex @file{translate.awk} program @example @c file eg/prog/translate.awk # translate.awk --- do tr-like stuff @@ -25959,7 +26800,7 @@ The @code{END} rule arranges to flush the final page of labels; there may not have been an even multiple of 20 labels in the data: -@cindex @code{labels.awk} program +@cindex @file{labels.awk} program @example @c file eg/prog/labels.awk # labels.awk --- print mailing labels @@ -26090,7 +26931,7 @@ by using the system @command{sort} utility to process the output of the @command{awk} script. Here is the new version of the program: -@cindex @code{wordfreq.awk} program +@cindex @file{wordfreq.awk} program @example @c file eg/prog/wordfreq.awk # wordfreq.awk --- print list of word frequencies @@ -26182,7 +27023,7 @@ The @code{END} rule simply prints out the lines, in order: @cindex Rakitzis, Byron -@cindex @code{histsort.awk} program +@cindex @file{histsort.awk} program @example @c file eg/prog/histsort.awk # histsort.awk --- compact a shell history file @@ -26352,7 +27193,7 @@ given (@code{NF} is at least three) and also checking that the command exits with a zero exit status, signifying OK: -@cindex @code{extract.awk} program +@cindex @file{extract.awk} program @example @c file eg/prog/extract.awk # extract.awk --- extract files and run programs from Texinfo files @@ -27094,7 +27935,7 @@ words with the same signature and array sorting to print the words in sorted order: -@cindex @code{anagram.awk} program +@cindex @file{anagram.awk} program @example @c file eg/prog/anagram.awk # anagram.awk --- An implementation of the anagram-finding algorithm @@ -27378,7 +28219,7 @@ same way. @item -The @code{split.awk} program (@pxref{Split Program}) assumes +The @file{split.awk} program (@pxref{Split Program}) assumes that letters are contiguous in the character set, which isn't true for EBCDIC systems. Fix this problem. @@ -27386,12 +28227,13 @@ without relying on @code{ord()} and @code{chr()}.) @item +@cindex Kernighan, Brian @subentry quotes In @file{uniq.awk} (@pxref{Uniq Program}, the logic for choosing which lines to print represents a @dfn{state -machine}, which is ``a device that can be in one of a set number of stable +machine}, which is ``a device which can be in one of a set number of stable conditions depending on its previous condition and on the present values -of its inputs.''@footnote{This is the definition returned from entering -@code{define: state machine} into Google.} +of its inputs.''@footnote{This definition is from +@uref{https://www.lexico.com/en/definition/state_machine}.} Brian Kernighan suggests that ``an alternative approach to state machines is to just read the input into an array, then use indexing. It's almost always @@ -27590,6 +28432,7 @@ * Two-way I/O:: Two-way communications with another process. * TCP/IP Networking:: Using @command{gawk} for network programming. * Profiling:: Profiling your @command{awk} programs. +* Extension Philosophy:: What should be built-in and what should not. * Advanced Features Summary:: Summary of advanced features. @end menu @@ -27636,9 +28479,9 @@ using this facility could lead to surprising results, the default is to leave it disabled. If you want it, you must explicitly request it. -@cindex programming conventions @subentry @code{--non-decimal-data} option +@cindex programming conventions @subentry @option{--non-decimal-data} option @cindex @option{--non-decimal-data} option @subentry @code{strtonum()} function and -@cindex @code{strtonum()} function (@command{gawk}) @subentry @code{--non-decimal-data} option and +@cindex @code{strtonum()} function (@command{gawk}) @subentry @option{--non-decimal-data} option and @quotation CAUTION @emph{Use of this option is not recommended.} It can break old programs very badly. @@ -28046,6 +28889,12 @@ both arrays use the values. @end quotation +You may use the same array for both the first and second arguments to +@code{asort()} and @code{asorti()}. Doing so only makes sense if you +are also supplying the third argument, since @command{awk} doesn't +provide a way to pass that third argument without also passing the first +and second ones. + @c Document It And Call It A Feature. Sigh. @cindex @command{gawk} @subentry @code{IGNORECASE} variable in @cindex arrays @subentry sorting @subentry @code{IGNORECASE} variable and @@ -28356,7 +29205,7 @@ printf("%d\n", x + y); return 0; @} -$ @kbd{cc -O add.c -o add} @ii{Compile the program} +$ @kbd{cc -O add.c -o add} @ii{Compile the program} @end example You could then write an exceedingly simple @command{gawk} program @@ -28721,6 +29570,12 @@ the @code{BEGINFILE} and @code{ENDFILE} rules, the pattern--action rules, and the functions. +@item +Functions are listed alphabetically. All functions in the @code{awk} +namespace are listed first, in alphabetical order. Then come the +functions in namespaces. The namespaces are listed in alphabetical order, +and the functions within each namespace are listed alphabetically. + @end itemize The profiled version of your program may not look exactly like what you @@ -28858,6 +29713,51 @@ constants; if you used an octal or hexadecimal value in your source code, it will appear that way in the output. +@node Extension Philosophy +@section Builtin Features versus Extensions + +As this and subsequent @value{CHAPTER}s show, @command{gawk} has a +large number of extensions over standard @command{awk} built-in to +the program. These have developed over time. More recently, the +focus has moved to using the extension mechanism (@pxref{Dynamic Extensions}) +for adding features. This @value{SECTION} discusses the ``guiding philosophy'' +behind what should be added to the interpreter as a built-in +feature versus what should be done in extensions. + +There are several goals: + +@enumerate 1 +@item +Keep the language @command{awk}; it should not become unrecognizable, even +if programs in it will only run on @command{gawk}. + +@item +Keep the core from getting any larger unless absolutely necessary. + +@item +Add new functionality either in @command{awk} scripts (@option{-f}, +@code{@@include}) or in loadable extensions written in C or C++ +(@option{-l}, @code{@@load}). + +@item +Extend the core interpreter only if some feature is: + +@c sublist +@enumerate A +@item +Truly desirable. +@item +Cannot be done via library files or loadable extensions. +@item +Can be implemented without too much pain in the core. +@end enumerate +@end enumerate +Combining modules with @command{awk} files is a powerful technique. +Some of the sample extensions demonstrate this. + +Loading extensions and library files should not be done automatically, +because then there's overhead that most users don't want or need. + @node Advanced Features Summary @section Summary @@ -28900,12 +29800,28 @@ @item You can also just ``pretty-print'' the program. +@item +New features should be developed using the extension mechanism if possible; +they should be added to the core interpreter only as a last resort. @end itemize @node Internationalization @chapter Internationalization with @command{gawk} +@cindex Robbins @subentry Malka +@cindex Moon, Sailor +@cindex Sailor Moon @seeentry{Moon, Sailor} +@quotation +@i{Moon@dots{} Gorgeous@dots{} MEDITATION!} +@author Pretty Guardian Sailor Moon Eternal, The Movie +@end quotation + +@quotation +@i{It probably sounded better in Japanese.} +@author Malka Robbins +@end quotation + Once upon a time, computer makers wrote software that worked only in English. Eventually, hardware and software vendors noticed that if their @@ -29393,7 +30309,7 @@ gawk --gen-pot -f guide.awk > guide.pot @end example -@cindex @code{xgettext} utility +@cindex @command{xgettext} utility When run with @option{--gen-pot}, @command{gawk} does not execute your program. Instead, it parses it as usual and prints all marked strings to standard output in the format of a GNU @command{gettext} Portable Object @@ -30956,7 +31872,6 @@ partial dump of Davide Brini's obfuscated code (@pxref{Signature Program}) demonstrates: -@c FIXME: This will need updating if num-handler branch is ever merged in. @smallexample @group gawk> @kbd{dump} @@ -33200,6 +34115,7 @@ * General Data Types:: The data types. * Memory Allocation Functions:: Functions for allocating memory. * Constructor Functions:: Functions for creating values. +* API Ownership of MPFR and GMP Values:: Managing MPFR and GMP Values. * Registration Functions:: Functions to register things with @command{gawk}. * Printing Messages:: Functions for printing messages. @@ -33343,11 +34259,20 @@ @item All pointers filled in by @command{gawk} point to memory managed by @command{gawk} and should be treated by the extension as -read-only. Memory for @emph{all} strings passed into @command{gawk} +read-only. + +Memory for @emph{all} strings passed into @command{gawk} from the extension @emph{must} come from calling one of @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}, and is managed by @command{gawk} from then on. +Memory for MPFR/GMP values that come from @command{gawk} +should also be treated as read-only. However, unlike strings, +memory for MPFR/GMP values allocated by an extension and passed +into @command{gawk} is @emph{copied} by @command{gawk}; the extension +should then free the values itself to avoid memory leaks. This is +discussed further in @strong{API Ownership of MPFR and GMP Values}. + @item The API defines several simple @code{struct}s that map values as seen from @command{awk}. A value can be a @code{double}, a string, or an @@ -33515,6 +34440,13 @@ member is either a GMP integer (type @code{mpz_ptr}), or an MPFR floating-point value (type @code{mpfr_ptr_t}), and cast it appropriately. +@quotation CAUTION +Any MPFR or MPZ values that you create and pass to @command{gawk} +to save are @emph{copied}. This means you are responsible to release +the storage once you're done with it. See the sample @code{intdiv} +extension for some example code. +@end quotation + @item typedef void *awk_scalar_t; Scalars can be represented as an opaque type. These values are obtained from @command{gawk} and then passed back into it. This is discussed @@ -33701,7 +34633,16 @@ Two additional functions allocate MPFR and GMP objects for use by extension functions that need to create and then return such -values: +values. + +@quotation NOTE +These functions are obsolete. Extension functions that need local MPFR +and GMP values should simply allocate them on the stack and clear them, +as any other code would. +@end quotation + +@noindent +The functions are: @table @code @item void *get_mpfr_ptr(); @@ -33724,6 +34665,9 @@ the return values appropriately before assigning the results to variables of the correct types. +The memory allocated by these functions should be freed with +@code{gawk_free()}. + @node Constructor Functions @subsection Constructor Functions @@ -33764,14 +34708,11 @@ This function creates a GMP number value in @code{result}. The @code{mpz} must be from a call to @code{get_mpz_ptr()} (and thus be of real underlying type @code{mpz_ptr}). -@command{gawk} takes ownership of this memory. @item static inline awk_value_t * @itemx make_number_mpfr(void *mpfr, awk_value_t *result); This function creates an MPFR number value in @code{result}. The @code{mpfr} must be from a call to @code{get_mpfr_ptr()}. -(and thus be of real underlying type @code{mpfr_ptr}) -@command{gawk} takes ownership of this memory. @item static inline awk_value_t * @itemx make_const_user_input(const char *string, size_t length, awk_value_t *result); @@ -33799,6 +34740,44 @@ @end table +@node API Ownership of MPFR and GMP Values +@subsection Managing MPFR and GMP Values +@cindex MPFR values, API ownership of +@cindex GMP values, API ownership of +@cindex API, ownership of MPFR and GMP values + +MPFR and GMP values are different from string values, where you can +``take ownership'' of the value simply by assigning pointers. For example: + +@example +char *p = gawk_malloc(42); p @ii{``owns'' the memory} +char *q = p; +p = NULL; @ii{now} q @ii{``owns'' it} +@end example + +MPFR and GMP objects are indeed allocated on the stack or dynamically, +but the MPFR and GMP libraries treat these objects as values, the same way that +you would pass an @code{int} or a @code{double} by value. There is no +way to ``transfer ownership'' of MPFR and GMP objects. Thus, code in +an extension should look like this: + +@example +mpz_t part1, part2, answer; @ii{declare local values} + +mpz_set_si(part1, 21); @ii{do some computations} +mpz_set_si(part2, 21); +mpz_add(answer, part1, part2); +@dots{} +/* assume that result is a parameter of type (awk_value_t *). */ +make_number_mpz(answer, & result); @ii{set it with final GMP value} + +mpz_clear(part1); @ii{release intermediate values} +mpz_clear(part2); +mpz_clear(answer); + +return result; +@end example + @node Registration Functions @subsection Registration Functions @cindex register loadable extension @@ -34794,7 +35773,7 @@ @item awk_bool_t sym_update_ns(const char *name_space, const char *name, awk_value_t *value); This is like @code{sym_update()}, but the @code{name_space} parameter allows you to specify which namespace @code{name} is part of. @code{name_space} cannot be -@code{NULL}. If it is @code{""} or @code{"awk}, then @code{name} is searched +@code{NULL}. If it is @code{""} or @code{"awk"}, then @code{name} is searched for in the default @code{awk} namespace. @end table @@ -37093,7 +38072,7 @@ to inplace editing. The @code{inplace::filename} variable serves to keep track of the -current filename so as to not invoke @code{inplace::end()} before +current @value{FN} so as to not invoke @code{inplace::end()} before processing the first file. If any error occurs, the extension issues a fatal error to terminate @@ -37468,7 +38447,7 @@ download @code{gawkextlib} and any extensions that you would like to build. The @file{README} file at that site explains how to build the code. If you installed @command{gawk} in a non-standard location, you will need to -specify @code{./configure --with-gawk=@var{/path/to/gawk}} to find it. +specify @samp{./configure --with-gawk=@var{/path/to/gawk}} to find it. You may need to use the @command{sudo} utility to install both @command{gawk} and @code{gawkextlib}, depending upon how your system works. @@ -38573,8 +39552,9 @@ @item The @code{extension()} function and the ability to add -new built-in functions dynamically -(@pxref{Dynamic Extensions}). +new built-in functions dynamically. This has seen removed. +It was replaced by the new extension mechanism. +@xref{Dynamic Extensions}. @item The @code{mktime()} function for creating timestamps @@ -38674,7 +39654,7 @@ (@pxref{Splitting By Content}). @item -If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the +If @code{PROCINFO["sorted_in"]} exists, @samp{for (iggy in foo)} loops sort the indices before looping over them. The value of this element provides control over how the indices are sorted before the loop traversal starts @@ -39060,6 +40040,32 @@ @item Support was added for MSYS2. + +@item +@code{asort()} and @code{asorti()} were changed to +allow @code{FUNCTAB} and @code{SYMTAB} as the first argument if a +second destination array is supplied (@pxref{String Functions}). + +@item +The @option{-I}/@option{--trace} options were added to +print a trace of the byte codes as they execute (@pxref{Options}). + +@item +@code{$0} and the fields are now cleared before starting a +@code{BEGINFILE} rule (@pxref{BEGINFILE/ENDFILE}). + +@item +Several example programs in the manual were updated to their modern +POSIX equivalents. + +@item +The ``no effect'' lint warnings from @option{--lint} were fixed up +and now behave more sanely (@pxref{Options}). + +@item +Handling of Infinity and NaN values were improved. +@xref{Math Definitions}, and also see +@ref{POSIX Floating Point Problems}. @end itemize @c XXX ADD MORE STUFF HERE @@ -39596,15 +40602,15 @@ @node Extracting @appendixsubsec Extracting the Distribution -@command{gawk} is distributed as several @code{tar} files compressed with +@command{gawk} is distributed as several @command{tar} files compressed with different compression programs: @command{gzip}, @command{bzip2}, and @command{xz}. For simplicity, the rest of these instructions assume you are using the one compressed with the GNU Gzip program (@command{gzip}). Once you have the distribution (e.g., @file{gawk-@value{VERSION}.@value{PATCHLEVEL}.tar.gz}), -use @code{gzip} to expand the -file and then use @code{tar} to extract it. You can use the following +use @command{gzip} to expand the +file and then use @command{tar} to extract it. You can use the following pipeline to produce the @command{gawk} distribution: @example @@ -39677,15 +40683,21 @@ @item ChangeLog A detailed list of source code changes as bugs are fixed or improvements made. +There are similar files in all of the subdirectories. @item ChangeLog.0 -An older list of source code changes. +@itemx ChangeLog.1 +Older lists of source code changes. +There are similar files in all of the subdirectories. @item NEWS A list of changes to @command{gawk} since the last release or patch. +There may be similar files in other subdirectories. @item NEWS.0 -An older list of changes to @command{gawk}. +@itemx NEWS.1 +Older lists of changes to @command{gawk}. +There may be similar files in other subdirectories. @item COPYING The GNU General Public License. @@ -39756,6 +40768,23 @@ The generated Info file for @cite{@value{GAWKINETTITLE}}. +@item doc/gawkworkflow.texi +The Texinfo source file for +@ifinfo +@inforef{Top, , General Introduction, gawkworkflow, @value{GAWKWORKFLOWTITLE}}. +@end ifinfo +@ifnotinfo +@cite{@value{GAWKWORKFLOWTITLE}}. +@end ifnotinfo +It should be processed with @TeX{} +(via @command{texi2dvi} or @command{texi2pdf}) +to produce a printed document and +with @command{makeinfo} to produce an Info or HTML file. + +@item doc/gawkworkflow.info +The generated Info file for +@cite{@value{GAWKWORKFLOWTITLE}}. + @item doc/igawk.1 The @command{troff} source for a manual page describing the @command{igawk} program presented in @@ -39857,11 +40886,17 @@ * Shell Startup Files:: Shell convenience functions. * Additional Configuration Options:: Other compile-time options. * Configuration Philosophy:: How it's all supposed to work. +* Compiling from Git:: Compiling from Git. +* Building the Documentation:: Building the Documentation. @end menu @node Quick Installation @appendixsubsec Compiling @command{gawk} for Unix-Like Systems +@menu +* Compiling with MPFR:: Building with MPFR. +@end menu + The normal installation steps should work on all modern commercial Unix-derived systems, GNU/Linux, BSD-based systems, and the Cygwin environment for MS-Windows. @@ -39935,6 +40970,24 @@ to have been set up previously as a user who is allowed to run the @command{sudo} command. + +@node Compiling with MPFR +@appendixsubsubsec Building With MPFR + +@cindex MPFR library, building with +Use of the MPFR library with @command{gawk} +is an optional feature: if you have the MPFR and GMP libraries already installed +when you configure and build @command{gawk}, +@command{gawk} automatically will be able to use them. + +You can install these libraries from source code by fetching them +from the GNU distribution site at @code{ftp.gnu.org}. + +Most modern systems provide package managers which save you the trouble +of building from source. They fetch and install the library header files +and binaries for you. You will need to research how to do this for +your particular system. + @node Shell Startup Files @appendixsubsec Shell Startup Files @@ -39990,7 +41043,7 @@ @table @code @cindex @option{--disable-extensions} configuration option -@cindex configuration option @subentry @code{--disable-extensions} +@cindex configuration option @subentry @option{--disable-extensions} @item --disable-extensions Disable the extension mechanism within @command{gawk}. With this option, it is not possible to use dynamic extensions. This also @@ -40002,7 +41055,7 @@ can be configured and compiled. @cindex @option{--disable-lint} configuration option -@cindex configuration option @subentry @code{--disable-lint} +@cindex configuration option @subentry @option{--disable-lint} @item --disable-lint Disable all lint checking within @command{gawk}. The @option{--lint} and @option{--lint-old} options @@ -40025,21 +41078,21 @@ @end quotation @cindex @option{--disable-mpfr} configuration option -@cindex configuration option @subentry @code{--disable-mpfr} +@cindex configuration option @subentry @option{--disable-mpfr} @item --disable-mpfr Skip checking for the MPFR and GMP libraries. This is useful mainly for the developers, to make sure nothing breaks if MPFR support is not available. @cindex @option{--disable-nls} configuration option -@cindex configuration option @subentry @code{--disable-nls} +@cindex configuration option @subentry @option{--disable-nls} @item --disable-nls Disable all message-translation facilities. This is usually not desirable, but it may bring you some slight performance improvement. @cindex @option{--enable-versioned-extension-dir} configuration option -@cindex configuration option @subentry @code{--enable-versioned-extension-dir} +@cindex configuration option @subentry @option{--enable-versioned-extension-dir} @item --enable-versioned-extension-dir Use a versioned directory for extensions. The directory name will include the major and minor API versions in it. This makes it possible @@ -40062,7 +41115,7 @@ standards wherever possible. This means that @command{gawk} uses library routines that are specified by the ISO C standard and by the POSIX operating system interface standard. -The @command{gawk} source code requires using an ISO C compiler (the 1990 +The @command{gawk} source code requires using an ISO C compiler (the 1999 standard). Many Unix systems do not support all of either the ISO or the @@ -40100,6 +41153,64 @@ The same mechanism may be used to send in updates to @file{configure.ac} and/or @file{custom.h}. +@node Compiling from Git +@appendixsubsec Compiling from Git + +Building @command{gawk} directly from the development source control +repository is possible, but not recommended for everyday users, as the +code may not be as stable as released versions are. If you really do +want to do that, here are the steps: + +@example +git clone https://git.savannah.gnu.org/r/gawk.git +cd gawk +./bootstrap.sh && ./configure && make && make check +@end example + +@node Building the Documentation +@appendixsubsec Building the Documentation + +@cindex documentation @subentry building @subentry Info files +The generated Info documentation is included in the distribution +@command{tar} files and in the Git source code repository; you should +not need to rebuild it. However, if it needs to be done, simply running +@command{make} will do it, assuming that you have a recent enough version +of @command{makeinfo} installed. + +@cindex documentation @subentry building @subentry PDF +If you wish to build the PDF version of the manuals, you will need +to have @TeX{} installed, and possibly additional packages that +provide the necessary fonts and tools, such as @command{dvi2pdf} +and @command{ps2pdf}. You will also need GNU Troff (@command{groff}) +installed in order to format the reference card and the manual page +(@pxref{Distribution contents}). Managing this process is beyond the +scope of this @value{DOCUMENT}. + +Assuming you have all you need, then the following commands produce the +PDF versions of the documentation: + +@example +cd doc +make pdf +@end example + +@noindent +This creates PDF versions of all three Texinfo documents included +in the distribution, as well as of the manual page and the reference card. + +@cindex documentation @subentry building @subentry HTML +Similarly, if you have a recent enough version of @command{makeinfo}, +you can make the HTML version of the manuals with: + +@example +cd doc +make html +@end example + +@noindent +This creates HTML versions of all three Texinfo documents included +in the distribution. + @node Non-Unix Installation @appendixsec Installation on Other Operating Systems @@ -40345,7 +41456,7 @@ @cindex @command{gawk} @subentry VMS version of @cindex installing @command{gawk} @subentry VMS -This @value{SUBSECTION} describes how to compile and install @command{gawk} under VMS. +This @value{SUBSECTION} describes how to compile and install @command{gawk} under OpenVMS. The older designation ``VMS'' is used throughout to refer to OpenVMS. @menu @@ -40355,7 +41466,6 @@ * VMS Installation Details:: How to install @command{gawk} under VMS. * VMS Running:: How to run @command{gawk} under VMS. * VMS GNV:: The VMS GNV Project. -* VMS Old Gawk:: An old version comes with some VMS systems. @end menu @node VMS Compilation @@ -40497,7 +41607,7 @@ @end example Or the system manager can use @file{GNV$GNU:[vms_bin]gawk_verb.cld} to -add the @command{gawk} and @command{awk} to the system-wide @samp{DCLTABLES}. +add the @command{gawk} and @command{awk} commands to the system-wide @samp{DCLTABLES}. The DCL syntax is documented in the @file{gawk.hlp} file. @@ -40591,8 +41701,6 @@ or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS 7.3, do not set these logical names. -@c @cindex directory search -@c @cindex path, search @cindex search paths @cindex search paths @subentry for source files The default search path, when looking for @command{awk} program files specified @@ -40647,7 +41755,6 @@ $ sort sys$input: sys$output: @end example - @node VMS GNV @appendixsubsubsec The VMS GNV Project @@ -40663,56 +41770,6 @@ The file @file{vms/gawk_build_steps.txt} in the distribution documents the procedure for building a VMS PCSI kit that is compatible with GNV. -@ignore -@c The VMS POSIX product, also known as POSIX for OpenVMS, is long defunct -@c and building gawk for it has not been tested in many years, but these -@c old instructions might still work if anyone is still using it. - -@node VMS POSIX -@appendixsubsubsec Building and Using @command{gawk} on VMS POSIX - -Ignore the instructions above, although @file{vms/gawk.hlp} should still -be made available in a help library. The source tree should be unpacked -into a container file subsystem rather than into the ordinary VMS filesystem. -Make sure that the two scripts, @file{configure} and -@file{vms/posix-cc.sh}, are executable; use @samp{chmod +x} on them if -necessary. Then execute the following two commands: - -@example -psx> @kbd{CC=vms/posix-cc.sh configure} -psx> @kbd{make CC=c89 gawk} -@end example - -@noindent -The first command constructs files @file{config.h} and @file{Makefile} out -of templates, using a script to make the C compiler fit @command{configure}'s -expectations. The second command compiles and links @command{gawk} using -the C compiler directly; ignore any warnings from @command{make} about being -unable to redefine @code{CC}. @command{configure} takes a very long -time to execute, but at least it provides incremental feedback as it runs. - -This has been tested with VAX/VMS V6.2, VMS POSIX V2.0, and DEC C V5.2. - -Once built, @command{gawk} works like any other shell utility. Unlike -the normal VMS port of @command{gawk}, no special command-line manipulation is -needed in the VMS POSIX environment. -@end ignore - -@node VMS Old Gawk -@appendixsubsubsec Some VMS Systems Have An Old Version of @command{gawk} - -@c Thanks to "gerard labadie" - -Some versions of VMS have an old version of @command{gawk}. To access it, -define a symbol, as follows: - -@example -$ @kbd{gawk :== $sys$common:[syshlp.examples.tcpip.snmp]gawk.exe} -@end example - -This is apparently @value{PVERSION} 2.15.6, which is extremely old. We -recommend compiling and using the current version. - @node Bugs @appendixsec Reporting Problems and Bugs @cindex archaeologists @@ -40729,59 +41786,184 @@ but we might well want to fix it. @menu +* Bug definition:: Defining what is and is not a bug. * Bug address:: Where to send reports to. * Usenet:: Where not to send reports to. +* Performance bugs:: What to do if you think there is a performance + issue. +* Asking for help:: Dealing with non-bug questions. * Maintainers:: Maintainers of non-*nix ports. @end menu +@node Bug definition +@appendixsubsec Defining What Is and What Is Not A Bug + +Before talking about reporting bugs, let's define what is a bug, +and what is not. + +A bug is: + +@itemize @bullet +@item +When @command{gawk} behaves differently from what's described +in the POSIX standard, and that difference is not mentioned +in this @value{DOCUMENT} as being done on purpose. + +@item +When @command{gawk} behaves differently from what's described +in this @value{DOCUMENT}. + +@item +When @command{gawk} behaves differently from other @command{awk} +implementations in particular circumstances, and that behavior cannot +be attributed to an additional feature in @command{gawk}. + +@item +Something that is obviously wrong, such as a core dump. + +@item +When this @value{DOCUMENT} is unclear or ambiguous about a particular +feature's behavior. +@end itemize + +The following things are @emph{not} bugs, and should not be reported +to the bug mailing list. You can ask about them on the ``help'' mailing +list (@pxref{Asking for help}), but don't be surprised if you get an +answer of the form ``that's how @command{gawk} behaves and it isn't +going to change.'' Here's the list: + +@itemize @bullet +@item +Missing features, for any definition of @dfn{feature}. For example, +additional built-in arithmetic functions, or additional ways to split +fields or records, or anything else. + +The number of features that @command{gawk} does @emph{not} have is +by definition infinite. It cannot be all things to all people. +In short, just because @command{gawk} doesn't do what @emph{you} +think it should, it's not necessarily a bug. + +@item +Behaviors that are defined by the POSIX standard and/or for historical +compatibility with Unix @command{awk}. Even if you happen to dislike +those behaviors, they're not going to change: changing them would +break millions of existing @command{awk} programs. + +@item +Behaviors that differ from how it's done in other languages. @command{awk} +and @command{gawk} stand on their own and do not have to follow the crowd. +This is particularly true when the requested behavior change would break +backwards compatibility. + +This applies also to differences in behavior between @command{gawk} +and other language compilers and interpreters, such as wishes for more +detailed descriptions of what the problem is when a syntax error is +encountered. + +@item +Documentation issues of the form ``the manual doesn't tell me how to +do XYZ.'' The manual is not a cookbook to solve every little problem +you may have. Its purpose is to teach you how to solve your problems +on your own. + +@item +General questions and discussion about @command{awk} programming or +why @command{gawk} behaves the way it does. For that use the ``help'' +mailing list: see @ref{Asking for help}. +@end itemize + +For more information, see @uref{http://www.skeeve.com/fork-my-code.html, +@cite{Fork My Code, Please!---An Open Letter To Those of You Who Are Unhappy}}, +by Arnold Robbins and Chet Ramey. + @node Bug address @appendixsubsec Submitting Bug Reports Before reporting a bug, make sure you have really found a genuine bug. -First, verify that you have the latest version of @command{gawk}. + +Here are the steps for submitting a bug report. Following them will +make both your life and the lives of the maintainers much easier. + +@enumerate 1 +@item +Make sure that what you want to report is appropriate. +@xref{Bug definition}. If it's not, you are wasting your +time and ours. + +@item +Verify that you have the latest version of @command{gawk}. Many bugs (usually subtle ones) are fixed at each release, and if yours -is out of date, the problem may already have been solved. +is out-of-date, the problem may already have been solved. -Second, please see if setting the environment variable @env{LC_ALL} +@item +Please see if setting the environment variable @env{LC_ALL} to @code{LC_ALL=C} causes things to behave as you expect. If so, it's a locale issue, and may or may not really be a bug. -Third, carefully reread the documentation and see if it says you can do +@item +Carefully reread the documentation and see if it says you can do what you're trying to do. If it's not clear whether you should be able to do something or not, report that too; it's a bug in the documentation! -Finally, before reporting a bug or trying to fix it yourself, try to isolate it +@item +Before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible @command{awk} program and input @value{DF} that -reproduce the problem. Then send us the program and @value{DF}, -some idea of what kind of Unix system you're using, -the compiler you used to compile @command{gawk}, and the exact results +reproduce the problem. Then send us: + +@itemize @bullet +@item +The program and @value{DF}. + +@item +Some idea of what kind of Unix system you're using. + +@item +The compiler you used to compile @command{gawk}. + +@item +The exact results @command{gawk} gave you. Also say what you expected to occur; this helps us decide whether the problem is really in the documentation. -Make sure to include the version number of @command{gawk} you are using. +@item +The version number of @command{gawk} you are using. You can get this information with the command @samp{gawk --version}. +@end itemize + +@item +Do @emph{not} send screenshots. Instead, use copy/paste to send text, or +send files. + +@item +Do send files as attachments, instead of inline. This avoids corruption +by mailer programs out in the wilds of the Internet. + +@item +Please be sure to send all mail in @emph{plain text}, +not (or not exclusively) in HTML. + +@item +@emph{All email must be in English. This is the only language +understood in common by all the maintainers.} +@end enumerate -@cindex @code{bug-gawk@@gnu.org} bug reporting address -@cindex email address for bug reports, @code{bug-gawk@@gnu.org} -@cindex bug reports, email address, @code{bug-gawk@@gnu.org} +@cindex @email{bug-gawk@@gnu.org} bug reporting address +@cindex email address for bug reports, @email{bug-gawk@@gnu.org} +@cindex bug reports, email address, @email{bug-gawk@@gnu.org} Once you have a precise problem description, send email to -@EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. +@EMAIL{bug-gawk@@gnu.org,bug dash gawk at gnu dot org}. The @command{gawk} maintainers subscribe to this address, and thus they will receive your bug report. Although you can send mail to the maintainers directly, the bug reporting address is preferred because the email list is archived at the GNU Project. -@emph{All email must be in English. This is the only language -understood in common by all the maintainers.} -In addition, please be sure to send all mail in @emph{plain text}, -not (or not exclusively) in HTML. @quotation NOTE Many distributions of GNU/Linux and the various BSD-based operating systems have their own bug reporting systems. If you report a bug using your distribution's bug reporting system, you should also send a copy to -@EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. +@EMAIL{bug-gawk@@gnu.org,bug dash gawk at gnu dot org}. This is for two reasons. First, although some distributions forward bug reports ``upstream'' to the GNU mailing list, many don't, so there is a good @@ -40790,10 +41972,6 @@ keeps things self-contained and not dependent on other organizations. @end quotation -Non-bug suggestions are always welcome as well. If you have questions -about things that are unclear in the documentation or are just obscure -features, ask on the bug list; we will try to help you out if we can. - Please note: We ask that you follow the @uref{https://gnu.org/philosophy/kind-communication.html, GNU Kind Communication Guidelines} in your correspondence on the @@ -40821,6 +41999,10 @@ @command{gawk} maintainer no longer does. Thus it's virtually guaranteed that he will @emph{not} see your posting. +If you really don't care about the previous paragraph and continue to +post bug reports in @code{comp.lang.awk}, then understand that you're +not reporting bugs, you're just whining. + Similarly, posting bug reports or questions in web forums (such as @uref{https://stackoverflow.com/, Stack Overflow}) may get you an answer, but it won't be from the @command{gawk} maintainers, @@ -40840,6 +42022,151 @@ metaphors, you can throw rocks from there." @end ignore +@node Performance bugs +@appendixsubsec What To Do If You Think There Is A Performance Issue + +@cindex performance, checking issues +@cindex profiling, compiling @command{gawk} for +If you think that @command{gawk} is too slow at doing a particular task, +you should investigate before sending in a bug report. Here are the steps +to follow: + +@enumerate 1 +@item +Run @command{gawk} with the @option{--profile} option (@pxref{Options}) +to see what your +program is doing. It may be that you have written it in an inefficient manner. +For example, you may be doing something for every record that could be done +just once, for every file. +(Use a @code{BEGINFILE} rule; @pxref{BEGINFILE/ENDFILE}.) +Or you may be doing something for every file that only needs to be done +once per run of the program. +(Use a @code{BEGIN} rule; @pxref{BEGIN/END}.) + +@item +If profiling at the @command{awk} level doesn't help, then you will +need to compile @command{gawk} itself for profiling at the C language level. + +To do that, start with the latest released version of +@command{gawk}. Unpack the source code in a new directory, and configure +it: + +@example +$ @kbd{tar -xpzvf gawk-X.Y.Z.tar.gz} +@print{} @dots{} @ii{Output omitted} +$ @kbd{cd gawk-X.Y.Z} +$ @kbd{./configure} +@print{} @dots{} @ii{Output omitted} +@end example + +@item +Edit the files @file{Makefile} and @file{support/Makefile}. +Change every instance of @option{-O2} or @option{-O} to @option{-pg}. +This causes @command{gawk} to be compiled for profiling. + +@item +Compile the program by running the @command{make} command: + +@example +@group +$ @kbd{make} +@print{} @dots{} @ii{Output omitted} +@end group +@end example + +@item +Run the freshly compiled @command{gawk} on a @emph{real} program, +using @emph{real} data. Using an artificial program to try to time one +particular feature of @command{gawk} is useless; real @command{awk} programs +generally spend most of their time doing I/O, not computing. If you want to prove +that something is slow, it @emph{must} be done using a real program and real data. + +Use a data file that is large enough for the statistical profiling to measure +where @command{gawk} spends its time. It should be at least 100 megabytes in size. + +@example +$ @kbd{./gawk -f realprogram.awk realdata > /dev/null} +@end example + +@item +When done, you should have a file in the current directory named @file{gmon.out}. +Run the command @samp{gprof gawk gmon.out > gprof.out}. + +@item +Submit a bug report explaining what you think is slow. Include the @file{gprof.out} +file with it. + +Preferably, you should also submit the program and the data, or else indicate where to +get the data if the file is large. + +@item +If you have not submitted your program and data, be prepared to apply patches and +rerun the profiling in order to see if the patches were effective. + +@end enumerate + +If you are incapable or unwilling to do the steps listed above, then you will +just have to live with @command{gawk} as it is. + +@node Asking for help +@appendixsubsec Where To Send Non-bug Questions + +If you have questions related to @command{awk} programming, or why @command{gawk} +behaves a certain way, or any other @command{awk}- or @command{gawk}-related issue, +please @emph{do not} send it to the bug reporting address. + +As of July, 2021, there is a separate mailing list for this purpose: +@EMAIL{help-gawk@@gnu.org, help dash gawk at gnu dot org}. +Anything that is not a bug report should be sent to that list. + +@quotation NOTE +If you disregard these directions and send non-bug mails to the bug list, +you will be told to use the help list. +After two such requests you will be silently @emph{blacklisted} from the bug list. +@end quotation + +Please note: As with the bug list, we ask that you follow the +@uref{https://gnu.org/philosophy/kind-communication.html, +GNU Kind Communication Guidelines} in your correspondence on the help +list (as well as off of it). + +@cindex Proulx, Bob +If you wish to the subscribe to the list, in order to help out +others, or to learn from others, here are instructions, courtesy +of Bob Proulx: + +@table @emph +@item Subscribe by email + +Send an email message to +@EMAIL{help-gawk-request@@gnu.org, help dash gawk dash request at gnu dot org} +with ``subscribe'' in +the body of the message. The subject does not matter and is not used. + +@item Subscribe by web form + +To use the web interface visit +@uref{https://lists.gnu.org/mailman/listinfo/help-gawk, +the list information page}. +Use the +subscribe form to fill out your email address and submit using the +@code{Subscribe} button. + +@item Reply to the confirmation message + +In both cases then reply to the confirmation message that is sent to +your address in reply. +@end table + +Bob mentions that you may also use email for subscribing and +unsubscribing. For example: + +@example +$ @kbd{echo help | mailx -s request help-gawk-request@@gnu.org} +$ @kbd{echo subscribe | mailx -s request help-gawk-request@@gnu.org} +$ @kbd{echo unsubscribe | mailx -s request help-gawk-request@@gnu.org} +@end example + @node Maintainers @appendixsubsec Reporting Problems with Non-Unix Ports @@ -40870,13 +42197,13 @@ @c OS/2 is not mentioned anywhere else though. @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de} -@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net} +@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl dot net} -@item z/OS (OS/390) @tab Daniel Richard G.@: @EMAIL{skunk@@iSKUNK.ORG,skunk at iSKUNK.ORG} +@item z/OS (OS/390) @tab Daniel Richard G.@: @EMAIL{skunk@@iSKUNK.ORG,skunk at iSKUNK dot ORG} @end multitable If your bug is also reproducible under Unix, send a copy of your -report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well. +report to the @EMAIL{bug-gawk@@gnu.org,bug dash gawk at gnu dot org} email list as well. @node Other Versions @appendixsec Other Freely Available @command{awk} Implementations @@ -40990,8 +42317,7 @@ @command{awk} functionality. It also has a number of extensions. -The @command{awk} translator is released under the GPL, and the library -is under the LGPL. +Both the @command{awk} translator and the library are released under the GPL. To get @command{awka}, go to @url{https://sourceforge.net/projects/awka}. @c You can reach Andrew Sumner at @email{andrew@@zbcom.net}. @@ -41000,6 +42326,10 @@ The project seems to be frozen; no new code changes have been made since approximately 2001. +@item Revive Awka +This project, available at @uref{https://github.com/noyesno/awka}, +intends to fix bugs in @command{awka} and add more features. + @cindex Beebe, Nelson H.F.@: @cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk}) @cindex source code @subentry @command{pawk} (profiling version of Brian Kernighan's @command{awk}) @@ -41044,6 +42374,16 @@ makes this implementation available. You can view the files one at a time from @uref{https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4}. +@cindex @command{frawk} +@cindex source code @subentry @command{frawk} +@item @command{frawk} +This is a language for writing short programs. ``To a first +approximation, it is an implementation of the AWK language; +many common @command{awk} programs produce equivalent output +when passed to @command{frawk}.'' However, it has a number of +important additional features. The code is available at +@uref{https://github.com/ezrosent/frawk}. + @cindex @command{goawk} @cindex Go implementation of @command{awk} @cindex source code @subentry @command{goawk} @@ -41065,7 +42405,12 @@ to be a full interpreter, although because it uses Java facilities for I/O and for regexp matching, the language it supports is different from POSIX @command{awk}. More information is available on the -@uref{https://jawk.sourceforge.net, project's home page}. +@uref{http://jawk.sourceforge.net, project's home page}. + +@item Hoijui's @command{jawk} +This project, available at @uref{https://github.com/hoijui/Jawk}, +is another @command{awk} interpreter written in Java. It uses +modern Java build tools. @item Libmawk @cindex libmawk @@ -41116,6 +42461,9 @@ @end table +An interesting collection of library functions is available +at @uref{https://github.com/e36freak/awk-libs}. + @node Installation summary @appendixsec Summary @@ -41146,12 +42494,16 @@ Instructions for each system are included in this @value{APPENDIX}. @item -Bug reports should be sent via email to @email{bug-gawk@@gnu.org}. +Bug reports should be sent via email to @EMAIL{bug-gawk@@gnu.org, bug dash gawk at gnu dot org}. Bug reports should be in English and should include the version of @command{gawk}, how it was compiled, and a short program and @value{DF} that demonstrate the problem. @item +Non-bug emails should be sent to @EMAIL{help-gawk@@gnu.org, help dash gawk at gnu dot org}. +Repeatedly sending non-bug emails to the bug list will get you blacklisted from it. + +@item There are a number of other freely available @command{awk} implementations. Many are POSIX-compliant; others are less so. @@ -41421,7 +42773,7 @@ information.) Using this format makes it easy for me to apply your changes to the -master version of the @command{gawk} source code (using @code{patch}). +master version of the @command{gawk} source code (using @command{patch}). If I have to apply the changes manually, using a text editor, I may not do so, particularly if there are lots of changes. @@ -41464,7 +42816,7 @@ effect, or assign the copyright in your code to the FSF. Both of these actions are easy to do and @emph{many} people have done so already. If you have questions, please contact me, or -@email{gnu@@gnu.org}. +@EMAIL{gnu@@gnu.org, gnu at gnu dot org}. @item When doing a port, bear in mind that your code must coexist peacefully @@ -41817,18 +43169,18 @@ @multitable @columnfractions .40 .60 @headitem Item @tab Limit @item Characters in a character class @tab 2^(number of bits per byte) -@item Length of input record @tab @code{MAX_INT} +@item Length of input record in bytes @tab @code{ULONG_MAX} @item Length of output record @tab Unlimited @item Length of source line @tab Unlimited -@item Number of fields in a record @tab @code{MAX_LONG} +@item Number of fields in a record @tab @code{ULONG_MAX} @item Number of file redirections @tab Unlimited @item Number of input records in one file @tab @code{MAX_LONG} @item Number of input records total @tab @code{MAX_LONG} @item Number of pipe redirections @tab min(number of processes per user, number of open files) @item Numeric values @tab Double-precision floating point (if not using MPFR) -@item Size of a field @tab @code{MAX_INT} -@item Size of a literal string @tab @code{MAX_INT} -@item Size of a printf string @tab @code{MAX_INT} +@item Size of a field in bytes @tab @code{ULONG_MAX} +@item Size of a literal string in bytes @tab @code{ULONG_MAX} +@item Size of a printf string in bytes @tab @code{ULONG_MAX} @end multitable @node Extension Design @@ -44671,7 +46023,3 @@ which sorta sucks. TODO: -Add a section explaining recursion from ground zero. Probably -easiest to do it with factorial as the example. Explain that -recursion needs a stopping condition. Thanks to -Bill Duncan for the suggestion. diff -urN gawk-5.1.0/doc/gawkworkflow.texi gawk-5.1.1/doc/gawkworkflow.texi --- gawk-5.1.0/doc/gawkworkflow.texi 2019-08-28 21:54:13.000000000 +0300 +++ gawk-5.1.1/doc/gawkworkflow.texi 2021-10-14 22:15:00.000000000 +0300 @@ -28,10 +28,10 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH February, 2019 +@set UPDATE-MONTH June, 2020 @set TITLE Participating in @command{gawk} Development -@set EDITION 0.72 +@set EDITION 0.73 @iftex @set DOCUMENT booklet @@ -144,13 +144,13 @@ Email: gnu@@gnu.org URL: http://www.gnu.org/ -Copyright © 2017, 2018, 2019 +Copyright © 2017, 2018, 2019, 2020 Free Software Foundation, Inc. All Rights Reserved. @end docbook @ifnotdocbook -Copyright @copyright{} 2017, 2018, 2019 +Copyright @copyright{} 2017, 2018, 2019, 2020 Free Software Foundation, Inc. @end ifnotdocbook @sp 2 @@ -486,7 +486,7 @@ If possible, new features should be done using @command{gawk}'s extension mechanism. If you want to add a user-visible language change to the @command{gawk} core, you're going to have to convince the maintainer -and other developers that it's really worthwile to do so. +and other developers that it's really worthwhile to do so. Changes that improve performance or portability, or that fix bugs, or that enable more things in extensions, @@ -613,12 +613,12 @@ @end smallexample @end float -@cindex @code{git branch} +@cindex @command{git} command @subentry @code{git branch} After you clone the repo, on your local system you will have a single branch named @code{master} that's visible when you use @samp{git branch} to see your branches. -@cindex @code{git clone} +@cindex @command{git} command @subentry @code{git clone} @example $ @kbd{git clone http://git.savannah.gnu.org/r/gawk.git} @ii{Clone the repo} $ @kbd{cd gawk} @ii{Change to local copy} @@ -653,7 +653,7 @@ @noindent @cindex @code{origin/} branches -@cindex branches, @code{origin/} +@cindex branches @subentry @code{origin/} Note that what is simply @code{gawk-4.1-stable} in the upstream repo is now referred to as @code{origin/gawk-4.1-stable}. The @samp{origin/} branches are a snapshot of the state of the upstream repo. This is @@ -672,7 +672,7 @@ @section Local Branches @cindex local branches -@cindex branches, local +@cindex branches @subentry local Let's talk about local branches in more detail. (The terminology used here is my own, not official Git jargon.) There are two kinds of local branches: @@ -680,15 +680,15 @@ @table @dfn @item Tracking Branches @cindex tracking branches -@cindex branches, tracking -@cindex @code{git checkout} +@cindex branches @subentry tracking +@cindex @command{git} command @subentry @code{git checkout} Tracking branches track branches from the upstream repository. You first create a tracking branch simply by checking out a branch from the upstream. You use the branch name without the leading @samp{origin/} prefix. For example, @samp{git checkout gawk-4.1-stable}. -@cindex @code{git push} -You can then work on this branch, making commitments to it as you wish. +@cindex @command{git} command @subentry @code{git push} +You can then work on this branch, making commits to it as you wish. Once things are ready to move upstream, you simply use @samp{git push}, and your changes will be pushed up to the main repo.@footnote{Assuming you have permission to do so, of course.} @@ -761,7 +761,7 @@ There are several kinds of branches in the Savannah repository. @table @dfn -@cindex branches, dead +@cindex branches @subentry dead @cindex dead branches @item Dead Branches Branches with the prefix @samp{dead-branches/} (such as @@ -770,7 +770,7 @@ deemed to be unwise to add. These branches keep the code available, but they are not updated. -@cindex branches, stable +@cindex branches @subentry stable @cindex stable branches @item Stable Branches These branches are used for bug fixes to released versions @@ -796,7 +796,7 @@ Feature branches are typically based off this branch as well, and when the feature is deemed complete, merged back into it. -@cindex branches, feature +@cindex branches @subentry feature @cindex feature branches @item Feature Branches Often, a proposed new feature or code improvement is quite involved. @@ -816,7 +816,7 @@ @node Local State @subsection Branches in Your Local Repository -@cindex branches, purely local +@cindex branches @subentry purely local @cindex purely local branches Purely local branches are where you do your own development. You may use purely local branches because you don't have commit rights @@ -868,13 +868,13 @@ @cindex configuration settings @cindex settings, configuration @cindex global configuration settings -@cindex configuration settings, global +@cindex configuration settings @subentry global Before starting to use Git, you should configure it with some important settings that won't change as you use Git. You may configure options both globally, and on a per-repository basis. Here, we discuss only global configuration settings. -@cindex @code{git config} +@cindex @command{git} command @subentry @code{git config} You can configure Git using either @samp{git config}, or by editing the relevant files with your favorite text editor.@footnote{You are required to use either Vim or Emacs, other text editors are not @@ -886,8 +886,8 @@ @cindex @code{user.name} configuration setting @cindex @code{user.email} configuration setting -@cindex configuration setting, @code{user.name} -@cindex configuration setting, @code{user.email} +@cindex configuration setting @subentry @code{user.name} +@cindex configuration setting @subentry @code{user.email} @example $ @kbd{git config --global user.name "J.P. Developer"} @ii{Set full name} $ @kbd{git config --global user.email jpdev@@example.com} @ii{Set email address} @@ -900,8 +900,8 @@ @cindex @code{push.default} configuration setting @cindex @code{pager.status} configuration setting -@cindex configuration setting, @code{push.default} -@cindex configuration setting, @code{pager.status} +@cindex configuration setting @subentry @code{push.default} +@cindex configuration setting @subentry @code{pager.status} @example $ @kbd{git config --global push.default simple} @ii{Only push current branch} $ @kbd{git config --global pager.status true} @ii{Use pager for output of} git status @@ -976,16 +976,16 @@ @node Cloning @section Cloning The Repo -@cindex @code{git clone} +@cindex @command{git} command @subentry @code{git clone} Clone the Savannah repo using @samp{git clone}. You may do so using either the native Git protocol, or using HTTP if you must go through a gateway or firewall that won't pass the Git protocol. -@cindex URL, for cloning repositories +@cindex URL @subentry for cloning repositories To choose which method, you supply a @dfn{URL} for the repo when you clone it, as follows. -@cindex URL, for @command{gawk} repository +@cindex URL @subentry for @command{gawk} repository @cindex Repository, @command{gawk}, URL for @itemize @bullet @item @@ -1014,7 +1014,7 @@ contents using other Git commands. For example, after coming back from your vacation in the Bahamas: -@cindex @code{git pull} +@cindex @command{git} command @subentry @code{git pull} @example $ @kbd{cd gawk} @ii{Move to the repo} $ @kbd{make distclean} @ii{A good idea before updating} @@ -1045,15 +1045,16 @@ So far, we've been working in the default @code{master} branch. Let's check what's happening in the @code{gawk-4.1-stable} branch: -@cindex @code{git checkout} -@cindex @code{git pull} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} @example -$ @kbd{make distclean} @ii{Clean up} -$ @kbd{git checkout gawk-4.1-stable} @ii{Checkout a different branch} +$ @kbd{make distclean} @ii{Clean up} +$ @kbd{git checkout gawk-4.1-stable} @ii{Checkout a different branch} @print{} ... -$ @kbd{git pull} @ii{Get up to date} +$ @kbd{git pull} @ii{Get up to date} @print{} ... -$ @kbd{./bootstrap.sh && ./configure && make -j && make check} @ii{Start working} +$ @kbd{./bootstrap.sh && ./configure &&} @ii{Start working} +> @kbd{make -j && make check} @end example @node Starting A New Branch @@ -1064,7 +1065,7 @@ Please don't attempt this for real.} You should create a new branch on which to work. First, switch back to @code{master}: -@cindex @code{git checkout} +@cindex @command{git} command @subentry @code{git checkout} @example $ @kbd{make distclean} $ @kbd{git checkout master} @@ -1084,7 +1085,7 @@ As you do each defined chunk of work, you update the @file{ChangeLog} file with your changes before @dfn{committing} them to the repo. -@cindex @code{git status} +@cindex @command{git} command @subentry @code{git status} Let's say you've added a new file @file{python.c} and updated several others. Use @samp{git status} to see what's changed: @@ -1093,8 +1094,8 @@ @print{} ... @end example -@cindex @code{git diff} -@cindex @code{git difftool} +@cindex @command{git} command @subentry @code{git diff} +@cindex @command{git} command @subentry @code{git difftool} @cindex @command{meld} utility Before committing the current set of changes, you can use @samp{git diff} to view the changes. You may also use @samp{git difftool}@footnote{Don't @@ -1106,7 +1107,7 @@ $ @kbd{git difftool --tool=meld} @ii{GUI diff tool} @end example -@cindex @code{git add} +@cindex @command{git} command @subentry @code{git add} When you're happy with the changes, use @samp{git add} to tell Git which of the changed and/or new files you wish to have ready to be committed: @@ -1115,7 +1116,7 @@ $ @kbd{git add ...} @end example -@cindex @code{git status} +@cindex @command{git} command @subentry @code{git status} Use @samp{git status} to see that your changes are scheduled for committing: @example @@ -1125,13 +1126,13 @@ Now you can commit your changes to your branch: -@cindex @code{git commit} +@cindex @command{git} command @subentry @code{git commit} @example $ @kbd{git commit} @end example @noindent -@cindex @code{git log} +@cindex @command{git} command @subentry @code{git log} Running @samp{git commit} causes Git to invoke an editor (typically from the @env{$EDITOR} environment variable) in which you can compose a commit message. Please supply a @@ -1145,12 +1146,12 @@ committed (so that you can start over), you can do so on per-file basis by simply checking out the file again: -@cindex @code{git checkout} +@cindex @command{git} command @subentry @code{git checkout} @example git checkout awkgram.y @ii{Undo changes to} awkgram.y@ii{. There is no output} @end example -@cindex @code{git reset} +@cindex @command{git} command @subentry @code{git reset} To start over completely, use @samp{git reset --hard}. Note that this will @emph{throw away} all your changes, with no chance for recovery, so be sure you really want to do it. @@ -1177,9 +1178,9 @@ started from the latest version of @code{master}. The steps are as follows: -@cindex @code{git rebase} -@cindex @code{git checkout} -@cindex @code{git pull} +@cindex @command{git} command @subentry @code{git rebase} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} @example $ @kbd{git checkout master} @ii{Checkout} master $ @kbd{git pull} @ii{Update it} @@ -1244,8 +1245,8 @@ To do this, simply compare your branch to the branch off which it is based: -@cindex @code{git checkout} -@cindex @code{git diff} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git diff} @example $ @kbd{git checkout feature/python} $ @kbd{git diff master > /tmp/python.diff} @@ -1254,13 +1255,13 @@ Mail the @file{python.diff} file to the appropriate mailing list along with a description of what you've changed and why. -@cindex @code{git format-patch} +@cindex @command{git} command @subentry @code{git format-patch} @cindex generating multiple patches @cindex patches, multiple, generation of @item Generate a set of patches that in toto comprise your changes To do this, use @samp{git format-patch}: -@cindex @code{git checkout} +@cindex @command{git} command @subentry @code{git checkout} @example $ @kbd{git checkout feature/python} $ @kbd{git format-patch} @@ -1291,14 +1292,14 @@ @node Removing Branches @section Removing Branches -@cindex removing branches -@cindex branches, removing +@cindex removing @subentry branches +@cindex branches @subentry removing Once the maintainer has integrated your changes, you can get rid of your local branch: -@cindex @code{git checkout} -@cindex @code{git pull} -@cindex @code{git branch} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git branch} @example $ @kbd{git checkout master} @ii{Move to upstream branch} $ @kbd{git pull} @ii{Update} @@ -1326,8 +1327,8 @@ with them, particularly using them as the basis for a rebase or merge. This typically means a three-step process: -@cindex @code{git checkout} -@cindex @code{git pull} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} @example $ @kbd{git checkout master} @ii{Get to local copy} $ @kbd{git pull} @ii{Bring it up to date} @@ -1337,7 +1338,7 @@ @noindent You can then do the actual rebase: -@cindex @code{git rebase} +@cindex @command{git} command @subentry @code{git rebase} @example $ @kbd{git rebase master} @ii{Now rebase your feature off of master} @end example @@ -1348,8 +1349,8 @@ @command{diff} command, the usage is @samp{diff @var{oldfile} @var{newfile}}. For @samp{git diff}, the current branch takes the place of @var{newfile}, thus: -@cindex @code{git checkout} -@cindex @code{git diff} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git diff} @example $ @kbd{git checkout feature/python} $ @kbd{git diff master} @ii{Compare} master @ii{to current branch} @@ -1358,9 +1359,9 @@ @noindent or if merging: -@cindex @code{git checkout} -@cindex @code{git pull} -@cindex @code{git merge} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git merge} @example $ @kbd{git checkout master} @ii{Checkout} master $ @kbd{git pull} @ii{Update tracking branch} @@ -1390,7 +1391,7 @@ development, you've been invited to join the private development list and to accept having commit access to the repo. -@cindex Savannah, creating an account +@cindex Savannah @subentry creating an account @cindex account, Savannah, creation of @cindex @code{ssh} key The first thing to do is to create an account on Savannah, choosing a @@ -1411,8 +1412,8 @@ Cloning the repo with @command{ssh} is similar to cloning with the Git protocol or with HTTP, but the URL is different: -@cindex @code{git clone} -@cindex URL, for @command{gawk} repository +@cindex @command{git} command @subentry @code{git clone} +@cindex URL @subentry for @command{gawk} repository @cindex Repository, @command{gawk}, URL for @example $ @kbd{git clone ssh://yourname@@git.sv.gnu.org/srv/git/gawk.git} @@ -1443,7 +1444,7 @@ If necessary, update the documentation: @file{doc/gawktexi.in} and/or @file{doc/gawk.1}. -@cindex @code{git diff} +@cindex @command{git} command @subentry @code{git diff} @item Use @samp{git diff > mychange.diff} to create a patch file. @@ -1459,14 +1460,14 @@ Let's assume you've made a bug fix directly on @code{master}. Here's how to commit your changes: -@cindex @code{git diff} -@cindex @code{git add} -@cindex @code{git commit} -@cindex @code{git push} +@cindex @command{git} command @subentry @code{git diff} +@cindex @command{git} command @subentry @code{git add} +@cindex @command{git} command @subentry @code{git commit} +@cindex @command{git} command @subentry @code{git push} @example $ @kbd{git diff} @ii{Review the patch one more time} $ @kbd{git add @dots{}} @ii{Add any files for committing} -$ @kbd{git commit} @ii{Commit the files. Include a commit message.} +$ @kbd{git commit} @ii{Commit the files, with a commit message} $ @kbd{git push} @ii{Push the files up to the repo. Ta da!} @end example @@ -1484,8 +1485,8 @@ Developing a new feature can be easier once you have commit access to the repo. First, create a new branch to hold your feature: -@cindex @code{git checkout} -@cindex @code{git pull} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} @example $ @kbd{git checkout master} @ii{Start from} master $ @kbd{git pull} @ii{Be sure to be up to date} @@ -1502,14 +1503,14 @@ To push your branch up initially: -@cindex @code{git diff} -@cindex @code{git add} -@cindex @code{git commit} -@cindex @code{git push} +@cindex @command{git} command @subentry @code{git diff} +@cindex @command{git} command @subentry @code{git add} +@cindex @command{git} command @subentry @code{git commit} +@cindex @command{git} command @subentry @code{git push} @example $ @kbd{git diff} @ii{Review your changes} $ @kbd{git add @dots{}} @ii{Add any files for committing} -$ @kbd{git commit} @ii{Commit the files. Include a commit message} +$ @kbd{git commit} @ii{Commit the files with a commit message} $ @kbd{git push -u origin feature/python} @ii{Push the branch up to the repo} @end example @@ -1522,10 +1523,10 @@ As you continue to work on your branch, the workflow simplifies into this: -@cindex @code{git diff} -@cindex @code{git add} -@cindex @code{git commit} -@cindex @code{git push} +@cindex @command{git} command @subentry @code{git diff} +@cindex @command{git} command @subentry @code{git add} +@cindex @command{git} command @subentry @code{git commit} +@cindex @command{git} command @subentry @code{git push} @example $ @kbd{git diff} @ii{Review your changes} $ @kbd{git add @dots{}} @ii{Add any files for committing} @@ -1541,24 +1542,24 @@ a diff on the mailing list. Once it's approved, you can commit it yourself: -@cindex @code{git checkout} -@cindex @code{git pull} -@cindex @code{git add} -@cindex @code{git commit} -@cindex @code{git diff} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git add} +@cindex @command{git} command @subentry @code{git commit} +@cindex @command{git} command @subentry @code{git diff} @example $ @kbd{git checkout master} @ii{Move to} master $ @kbd{git pull} @ii{Make sure we're up to date with the maintainer} $ @kbd{gvim @dots{}} @ii{Make any fixes, compile, test} $ @kbd{git diff} @ii{Review your changes} $ @kbd{git add @dots{}} @ii{Add any files for committing} -$ @kbd{git commit} @ii{Commit the files. Include a commit message.} +$ @kbd{git commit} @ii{Commit the files with a commit message.} @end example When you're ready to push your changes: -@cindex @code{git pull} -@cindex @code{git push} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git push} @example $ @kbd{git pull} @ii{Download latest version; Git will merge} $ @kbd{gvim ...} @ii{Resolve any merge conflicts with} git add @ii{and} git commit @@ -1612,9 +1613,9 @@ You should use @samp{git rebase} to the keep the branch synchronized with the original branch from which it was forked: -@cindex @code{git checkout} -@cindex @code{git pull} -@cindex @code{git rebase} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git rebase} @example $ @kbd{git checkout master} @ii{Move to} master $ @kbd{git pull} @ii{Bring it up to date} @@ -1636,9 +1637,9 @@ You @emph{must} use @samp{git merge} to bring your feature branch up to date. That flow looks like this: -@cindex @code{git checkout} -@cindex @code{git pull} -@cindex @code{git merge} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git merge} @example $ @kbd{git checkout master} @ii{Move to} master $ @kbd{git pull} @ii{Bring it up to date} @@ -1656,9 +1657,9 @@ there's really no magic involved, the merge is simply done in the other direction: -@cindex @code{git checkout} -@cindex @code{git pull} -@cindex @code{git merge} +@cindex @command{git} command @subentry @code{git checkout} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git merge} @example $ @kbd{git checkout feature/python} @ii{Checkout feature branch} $ @kbd{git pull} @ii{Bring it up to date} @@ -1671,7 +1672,7 @@ @code{master}, then there should be no merge conflicts to resolve, and you can push the result to Savannah: -@cindex @code{git push} +@cindex @command{git} command @subentry @code{git push} @example $ @kbd{git push} @ii{Push up to Savannah} @end example @@ -1679,17 +1680,20 @@ Since @samp{feature/python} is no longer needed, it can be gotten rid of: -@cindex @code{git branch} -@cindex @code{git push} +@cindex @command{git} command @subentry @code{git branch} +@cindex @command{git} command @subentry @code{git push} @example -$ @kbd{git branch -d feature/python} @ii{Still on} master@ii{, delete feature branch} -$ @kbd{git push -u origin --delete feature/python} @ii{Delete the branch on Savannah} +$ @kbd{git branch} @ii{Still on} master + @dots{} +* master +$ @kbd{git branch -d feature/python} @ii{Delete feature branch} +$ @kbd{git push -u origin --delete feature/python} @ii{Delete on Savannah} @end example The @samp{git push} command deletes the @code{feature/python} branch from the Savannah repo. -@cindex @code{git fetch} +@cindex @command{git} command @subentry @code{git fetch} @noindent Finally, you should send an email to developer's list describing what you've done so that everyone else can delete their @@ -1709,9 +1713,9 @@ your local repo clean. @table @emph -@cindex removing old branches +@cindex removing @subentry old branches @cindex old branches, removing -@cindex branches, removing +@cindex branches @subentry removing @item Removing old branches Developers add branches to the Savannah repo and when development on them is done, they @@ -1724,8 +1728,8 @@ First, remove any related tracking branch you may have: -@cindex @code{git pull} -@cindex @code{git branch} +@cindex @command{git} command @subentry @code{git pull} +@cindex @command{git} command @subentry @code{git branch} @example $ @kbd{git pull} @ii{Get up to date} $ @kbd{git branch -d feature/merged-feature} @ii{Remove tracking branch} @@ -1733,12 +1737,12 @@ Then, ask Git to clean things up for you: -@cindex @code{git fetch} +@cindex @command{git} command @subentry @code{git fetch} @example $ @kbd{git fetch --prune} @ii{Remove unneeded branches} @end example -@cindex removing cruft +@cindex removing @subentry cruft @cindex cruft, removing @item Removing cruft As Git works, occasional ``cruft'' collects in the repository. @@ -1747,7 +1751,7 @@ using @samp{git gc} (short for ``garbage collect''). For example: -@cindex @code{git gc} +@cindex @command{git} command @subentry @code{git gc} @example $ @kbd{du -s .} @ii{Check disk usage} @print{} 99188 . @ii{Almost 10 megabytes} @@ -1762,12 +1766,12 @@ @end example @cindex renaming branches -@cindex branches, renaming +@cindex branches @subentry renaming @item Renaming branches Occasionally you may want to rename a branch.@footnote{This discussion adopted from @uref{https://multiplestates.wordpress.com/2015/02/05/rename-a-local-and-remote-branch-in-git, here}.} -If your branch is local and you are on it, us: +If your branch is local and you are on it, use: @example $ @kbd{git branch -m feature/@var{new-name}} @@ -1996,10 +2000,12 @@ information. See @uref{http://pcc.ludd.ltu.se/supported-platforms} for instructions about obtaining the code using CVS and building it. -@cindex @command{pcc} compiler, Git mirror +@cindex @command{pcc} compiler @subentry Git mirror An alternative location for the source is the @command{gawk} maintainer's @uref{https://github.com/arnoldrobbins/pcc-revived, -Git mirror} of the code. +Git mirror} of the code. If you're using Ubuntu GNU/Linux 18.04 +or later, you need to use the @code{ubuntu-18} branch from this +Git mirror. @end table @node Debugging @@ -2019,6 +2025,7 @@ @emph{before} running @command{configure}. Doing so enables additional conditionally-compiled debugging code within @command{gawk}, and adds additional warning and debugging options if compiling with GCC. +It also disables optimization. @node Cheat Sheet @appendix Git Command Cheat Sheet @@ -2027,9 +2034,9 @@ cited in this @value{DOCUMENT}, along with brief descriptions of what the commands do. -@cindex @code{git help} +@cindex @command{git} command @subentry @code{git help} @cindex @option{--help} option for @command{git} -@cindex @command{git} command, @option{--help} option +@cindex @command{git} command @subentry @option{--help} option Note that you may always use either @samp{git help @var{command}} or @samp{git @var{command} --help} to get short, man-page style help on how to use any given Git command. @@ -2115,7 +2122,7 @@ with respect to the original branch from which they were started. @item git reset -@cindex @code{git reset}, @option{--hard} option +@cindex @command{git} command @subentry @code{git reset} @subentry @option{--hard} option Restore the original state of the repo, especially with the @option{--hard} option. Read up on this command, and use it carefully. @@ -2136,10 +2143,14 @@ In particular, the @uref{https://git-scm.com/book/en/v2, @cite{Pro Git} book} is available online. -@cindex Savannah, using Git guide +@cindex Savannah @subentry using Git guide See also @uref{http://savannah.gnu.org/maintenance/UsingGit, the Savannah quick introduction to Git}. +A nice article on how Git works is +@uref{http://jwiegley.github.io/git-from-the-bottom-up/, +@cite{Git From The Bottom Up}}, by John Wiegley. + @node TODO @appendix Stuff Still To Do In This Document diff -urN gawk-5.1.0/doc/it/ChangeLog gawk-5.1.1/doc/it/ChangeLog --- gawk-5.1.0/doc/it/ChangeLog 2020-04-14 14:41:43.000000000 +0300 +++ gawk-5.1.1/doc/it/ChangeLog 2021-10-27 07:53:42.000000000 +0300 @@ -1,3 +1,80 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2020-11-01 Antonio Giovanni Colombo + + * texinfo.tex: Updated. + +2020-10-29 Antonio Giovanni Colombo + + * gawktexi.in: Updated. + +2020-10-25 Antonio Giovanni Colombo + + * gawktexi.in: Updated. + * texinfo.tex: Updated. + +2020-10-14 Antonio Giovanni Colombo + + * gawktexi.in: Updated. + * all test scripts should now work + +2020-10-05 Antonio Giovanni Colombo + + * gawktexi.in: Updated. + +2020-09-15 Antonio Giovanni Colombo + + * gawktexi.in: Updated. + * gawk.1: Updated. + +2020-08-26 Arnold D. Robbins + + * gawktexi.in: Updated. + +2020-08-25 Antonio Giovanni Colombo + + * gawktexi.in: Updated. + +2020-08-16 Antonio Giovanni Colombo + + * gawktexi.in: Updated. + +2020-07-29 Antonio Giovanni Colombo + + * compila_originale.sh: fixed permission. + * compila_smallprint.sh: fixed permission. + * gawk.1: fixed permission. + * gawktexi.in: fixed permission. + * texinfo.tex: fixed permission. + +2020-07-29 Antonio Giovanni Colombo + + * gawk.1: Updated. + * gawktexi.in: Updated. + * texinfo.tex: Updated. + +2020-06-28 Antonio Giovanni Colombo + Marco Curreli + + * gawk.1: Updated. + * gawktexi.in: Updated. + * texinfo.tex: Updated. + +2020-05-15 Antonio Giovanni Colombo + + * texinfo.tex: Updated. + +2020-05-04 Marco Curreli + + * gawktexi.in: Updated. + +2020-04-19 Antonio Giovanni Colombo + + * gawk.1: Updated. + * gawktexi.in: Updated. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/doc/it/gawk.1 gawk-5.1.1/doc/it/gawk.1 --- gawk-5.1.0/doc/it/gawk.1 2020-04-02 09:25:12.000000000 +0300 +++ gawk-5.1.1/doc/it/gawk.1 2021-10-25 19:18:13.000000000 +0300 @@ -10,8 +10,10 @@ .\"Aggiornam. a gawk-4.2.0 di A.G. Colombo - revis. M. Curreli - Dicembre 2017 .\"Aggiornam. a gawk-4.2.1 di A.G. Colombo - revis. M. Curreli - Febbraio 2018 .\"Aggiornam. a gawk-4.2.2 di A.G. Colombo - revis. M. Curreli - Dicembre 2018 -.\"Aggiornam. a gawk-5.1.0 di A.G. Colombo - Luglio 2019 -.\"Aggiornam. a gawk-5.1.1 di A.G. Colombo - Marzo 2020 +.\"Aggiornam. a gawk-5.0.0 di A.G. Colombo - Luglio 2019 +.\"Aggiornam. a gawk-5.1.0 di A.G. Colombo - revis. M. Curreli - Aprile 2020 +.\"Aggiornam. a gawk-5.1.0 di A.G. Colombo - Giugno 2020 +.\"Aggiornam. a gawk-5.1.0 di A.G. Colombo - Luglio 2020 .ds PX \s-1POSIX\s+1 .ds UX \s-1UNIX\s+1 @@ -28,7 +30,7 @@ . if \w'\(rq' .ds rq "\(rq . \} .\} -.TH GAWK 1 "Mar 23 2020" "Free Software Foundation" "Utility Commands" +.TH GAWK 1 "Aug 31 2020" "Free Software Foundation" "Utility Commands" .SH NOME gawk \- linguaggio per il riconoscimento e il trattamento di espressioni regolari @@ -67,17 +69,17 @@ stesso, il testo del programma \*(AK (se non è stato fornito con le opzioni .B \-f o -.B \-\^\-include ), +.BR \-\^\-include ), e valori da rendere disponibili nelle variabili \*(AK predefinite .B ARGC e -.B ARGV . +.BR ARGV . .PP Quando .I gawk è invocato con l'opzione -.B \-\^\-profile , +.BR \-\^\-profile , inizia a raccogliere statistiche sul comportamento del programma durante l'esecuzione. .I Gawk @@ -99,9 +101,9 @@ codice sorgente di AWK e poi richiede l'inserimento di comandi di debug. .I Gawk può analizzare solo il sorgente di un programma AWK fornito tramite l'opzione -.BR \-f +.B \-f e -.B \-\^\-include . +.BR \-\^\-include . Il debugger è documentato in \*(EP. .SH FORMATO DELLE OPZIONI .PP @@ -236,7 +238,7 @@ .sp .5 Avere una lista di tutte le variabili globali è un buon modo per cercare errori tipografici nei programmi. -Quest'opzione potrebbe essere usata anche se si ha un grosso programma con +Quest'opzione potrebbe essere usata anche se si ha un grosso programma con tantissime funzioni, e ci si vuole assicurare che le funzioni non usino inavvertitamente variabili globali che sono supposte essere locali (è facile commettere questo errore quando si usano nomi di variabili @@ -270,7 +272,7 @@ (usate attraverso i file indicati dalle opzioni .B \-f e -.B \-\^\-include ) +.BR \-\^\-include ) con codice sorgente immesso sulla riga di comando. È rivolta principalmente a programmi \*(AK di media e grande dimensione usati all'interno di script di shell. @@ -306,7 +308,7 @@ Si veda la distribuzione \*(GN .I gettext per maggiori informazioni sui file -.B \&.pot . +.BR \&.pot . .TP .PD 0 .B \-h @@ -329,7 +331,7 @@ .BR AWKPATH . Se la ricerca iniziale non va a buon fine, viene fatto un altro tentativo dopo aver aggiunto il suffisso -.B \&.awk . +.BR \&.awk . Il file verrà caricato solo una volta (cioè vengono ignorati i duplicati), e il codice non costituisce il sorgente del programma principale. @@ -338,6 +340,18 @@ sono trattati come se iniziassero con la direttiva implicita \fB@namespace "awk"\fR. .TP .PD 0 +.BI \-I +.TP +.PD +.B \-\^\-trace +Stampa i nomi del codice-byte generato internamente, nell'ordine +in cui sono incontrati durante l'esecuzione del programma. +Questa trace è stampata sullo standard error. +Ogni ``codice operativo'' è preceduto da un segno +.B + +nell'output. +.TP +.PD 0 .BI "\-l " lib .TP .PD @@ -347,7 +361,7 @@ dalla libreria condivisa .IR lib . Cerca la libreria usando la variabile d'ambiente -.B AWKLIBPATH . +.BR AWKLIBPATH . Se la ricerca iniziale non va a buon fine, viene fatto un altro tentativo dopo aver aggiunto il suffisso della libreria condivisa predefinita per la piattaforma. @@ -414,7 +428,7 @@ il punto come separatore decimale, anche per le localizzazioni in cui il carattere di separazione non è il punto. Quest'opzione ignora il comportamento predefinito, senza il rigore draconiano dell'opzione -.B \-\^\-posix . +.BR \-\^\-posix . .ig .\" Quest'opzione è lasciata intenzionalmente non documentata. .TP @@ -476,7 +490,7 @@ .PD .B \-\^\-posix Quest'opzione attiva la modalità di -.I compatibilità , +.IR compatibilità , con le seguenti restrizioni aggiuntive: .RS .TP "\w'\(bu'u+1n" @@ -495,7 +509,7 @@ Non viene riconosciuto il sinonimo .B func per la parola chiave -.B function . +.BR function . .TP \(bu Non si possono usare gli operatori @@ -507,7 +521,6 @@ e .BR ^= . .RE -.bp \" MANUAL EDIT .TP .PD 0 .B \-r @@ -535,7 +548,7 @@ .PD .B \-\^\-no\-optimize Disabilita le ottimizzazioni predefinite di -.IR gawk +.I gawk nella rappresentazione interna del programma. .TP .PD 0 @@ -599,7 +612,7 @@ .BR #! . .PP Per compatibilità con \*(PX, si può usare l'opzione -.B \-W , +.BR \-W , seguita dal nome di un'opzione lunga. .SH ESECUZIONE DEL PROGRAMMA AWK .PP @@ -645,13 +658,13 @@ possono essere usate per includere altri file sorgenti nel programma, rendendo l'uso della libreria ancora più facile. Questo è equivalente all'uso dell'opzione -.B \-\^\-include . +.BR \-\^\-include . .PP Le righe che iniziano con .B @load possono essere usate per caricare funzioni di estensione nel programma. Questo è equivalente all'uso dell'opzione -.B \-\^\-load . +.BR \-\^\-load . .PP La variabile d'ambiente .B AWKPATH @@ -659,7 +672,7 @@ indicati con le opzioni .B \-f e -.B \-\^\-include . +.BR \-\^\-include . Se questa variabile non esiste, il percorso predefinito è \fB"/usr/local/share/awk"\fR (la directory in questione può variare a seconda di come @@ -674,7 +687,7 @@ .B AWKLIBPATH specifica il percorso lungo il quale cercare i file sorgenti indicati con l'opzione -.B \-\^\-load . +.BR \-\^\-load . Se questa variabile non esiste, il percorso predefinito è \fB"/usr/local/lib/gawk"\fR (la directory in questione può variare a seconda di come @@ -904,7 +917,7 @@ provoca l'incremento del valore di .BR NF , crea tutti i campi intermedi assegnando loro la stringa nulla, e fa sì -che il valore di +che il valore di .B $0 sia ricalcolato utilizzando .B OFS @@ -926,10 +939,8 @@ provoca una nuova divisione del record, creando nuovi valori per i suoi campi. .SS Variabili predefinite -.PP Le variabili predefinite di .IR gawk " sono: -.PP .TP "\w'\fBFIELDWIDTHS\fR'u+1n" .B ARGC Il numero di argomenti da riga di comando (non include le opzioni di @@ -1163,7 +1174,7 @@ .TP \fBPROCINFO["egid"]\fP Il valore della chiamata di sistema -.IR getegid (2) . +.IR getegid (2). .TP \fBPROCINFO["errno"]\fP Il valore di @@ -1174,7 +1185,7 @@ .TP \fBPROCINFO["euid"]\fP Il valore della chiamata di sistema -.IR geteuid (2) . +.IR geteuid (2). .TP \fBPROCINFO["FS"]\fP \fB"FS"\fP se la separazione in campi con @@ -1191,7 +1202,7 @@ .TP \fBPROCINFO["gid"]\fP Il valore della chiamata di sistema -.IR getgid (2) . +.IR getgid (2). .TP \fBPROCINFO["identifiers"]\fP Un sottovettore, avente come indici i nomi di tutti gli identificatori usati @@ -1232,11 +1243,11 @@ .TP \fBPROCINFO["pgrpid"]\fP Il valore dalla chiamata di sistema -.IR getpgrp (2) . +.IR getpgrp (2). .TP \fBPROCINFO["pid"]\fP Il valore dalla chiamata di sistema -.IR getpid (2) . +.IR getpid (2). .TP \fBPROCINFO["platform"]\fP Una stringa che indica la piattaforma sulla quale @@ -1259,7 +1270,7 @@ .TP \fBPROCINFO["ppid"]\fP Il valore della chiamata di sistema -.IR getppid (2) . +.IR getppid (2). .TP \fBPROCINFO["strftime"]\fP La stringa di formato data/ora predefinita per @@ -1270,7 +1281,7 @@ .TP \fBPROCINFO["uid"]\fP Il valore della chiamata di sistema -.IR getuid (2) . +.IR getuid (2). .TP \fBPROCINFO["version"]\fP La versione di @@ -1443,7 +1454,7 @@ quella predefinita è \fB"\e034"\fR. .TP .B SYMTAB -Un vettore i cui indici sono i nomi di tutti i vettori e le variabili +Un vettore i cui indici sono i nomi di tutti i vettori e le variabili globali attualmente definite presenti nel programma. Il vettore può essere usato per l'accesso indiretto in lettura e scrittura del valore di una variabile: @@ -1474,7 +1485,6 @@ Il dominio di testo del programma \*(AK ; usato per trovare le traduzioni localizzate delle stringhe del programma. .SS Vettori -.PP I vettori hanno per indice un'espressione tra parentesi quadre .RB ( [ " e " ] ). Se l'espressione è formata da una lista di espressioni @@ -1482,7 +1492,7 @@ l'indice del vettore è una stringa ottenuta concatenando i valori (stringa) di ogni espressione, separati dal valore della variabile -.B SUBSEP . +.BR SUBSEP . Questa modalità è usata per simulare vettori multidimensionali. Per esempio: .PP @@ -1557,17 +1567,17 @@ .BR split() ). Si può fare questo creando un elemento nel sottovettore e cancellandolo poi con l'istruzione -.B delete . +.BR delete . .SS Spazi-dei-nomi .I Gawk -fornisce una semplice funzionalità, -.I namespace , +fornisce una semplice funzionalità, +.IR namespace , (spazio-dei-nomi) per ovviare al fatto che tutte le variabili in AWK sono globali. .PP Un .I "nome qualificato" -consiste di due identificativi semplici, congiunti da una coppia di ":" +consiste di due identificativi semplici, congiunti da una coppia di due punti .RB ( :: ). Il primo dei due identificativi designa lo spazio-dei-nomi (namespace) mentre il secondo è il nome della variabile al suo interno. @@ -1576,11 +1586,11 @@ .BR awk . Comunque, gli identificativi i cui nomi sono composti solo da lettere maiuscole, vengono sempre considerati come facenti parte dello spazio-dei-nomi -.B awk , +.BR awk , anche se lo spazio-dei-nomi corrente è diverso da quello predefinito. .PP -Si può cambiare lo spazio-dei-nomi corente tramite la direttiva -\fB@namespace "\fInome\^\fB"\fR . +Si può cambiare lo spazio-dei-nomi corrente tramite la direttiva +\fB@namespace "\fInome\^\fB"\fR. .PP I nomi delle funzioni interne predefinite non possono essere usati come nomi di uno spazio-dei-nomi. I nomi di ulteriori funzioni, fornite da @@ -1589,7 +1599,6 @@ identificativi in altri spazi-dei-nomi. Per ulteriori dettagli, vedere \*(EP. .SS Notazione e conversione delle variabili -.PP Le variabili e i campi possono essere numeri (in virgola mobile), stringhe, o entrambe le cose. Possono anche essere espressioni regolari. @@ -1605,7 +1614,7 @@ .PP Quando una stringa deve essere convertita in un numero, la conversione è compiuta con -.IR strtod (3) . +.IR strtod (3). I numeri sono convertiti a stringhe usando .IR sprintf (3) col valore di @@ -1662,7 +1671,7 @@ agli elementi di .B ARGV di -.B ENVIRON , +.BR ENVIRON , ed agli elementi di un vettore creato da .B split() o da @@ -1683,12 +1692,10 @@ .B 0x11 è uguale al decimale 17. .SS Costanti di tipo stringa -.PP Le costanti stringa in \*(AK sono sequenze di caratteri racchiusi tra doppi apici (come \fB"valore"\fR). All'interno delle stringhe, sono riconosciute alcune .IR "sequenze di protezione" , come in in C. Queste sono: -.PP .TP "\w'\fB\e\^\fIddd\fR'u+1n" .B \e\e Una barra inversa letterale. @@ -1836,13 +1843,13 @@ .B BEGIN sono unite insieme, come se tutte le istruzioni fossero scritte in un'unica regola -.B BEGIN , +.BR BEGIN , e sono eseguite prima che sia letto qualsiasi input. Allo stesso modo, tutte le regole .B END sono fuse insieme, ed eseguite dopo che tutti i dati in input sono terminati o dopo che si è incontrata l'istruzione -.B exit . +.BR exit . .B BEGIN e .B END @@ -1860,7 +1867,7 @@ prima della lettura del primo record di ogni file di input richiamato sulla riga di comando, e dopo la lettura dell'ultimo record di ognuno di questi file. All'interno della regola -.B BEGINFILE , +.BR BEGINFILE , il valore di .B ERRNO è una stringa vuota se il file è stato aperto con successo. @@ -1926,7 +1933,7 @@ considerato letteralmente. .TP .B . -Corrisponde a qualsiasi carattere, +Corrisponde a qualsiasi carattere, .I compreso "newline". .TP @@ -1938,14 +1945,14 @@ .TP .BI [ abc.\|.\|. ] Una lista di caratteri: corrisponde a uno qualsiasi dei caratteri -.IR abc.\|.\|. . +.IR abc.\|.\|.\& . Si possono includere intervalli di caratteri separandoli con un trattino. Per aggiungere alla lista il carattere trattino, inserirlo all'inizio o alla fine della lista stessa. .TP \fB[^\fIabc.\|.\|.\fB]\fR Una lista di caratteri negata: corrisponde a qualsiasi carattere eccetto -.IR abc.\|.\|. . +.IR abc.\|.\|.\& . .TP .IB r1 | r2 Alternativa: corrisponde a @@ -2037,7 +2044,7 @@ .BR "Costanti di tipo stringa" ) sono ammesse anche nelle espressioni regolari. .PP -Le +Le .I "classi di caratteri" sono una nuova funzionalità introdotta nello standard \*(PX. Una classe di caratteri è una speciale notazione per indicare liste di caratteri accomunati @@ -2218,9 +2225,7 @@ dei linguaggi. Gli operatori, le strutture di controllo e le istruzioni di input/output ricalcano quelli corrispondenti nel linguaggio C. .SS Operatori -.PP Gli operatori di \*(AK, in ordine decrescente di precedenza, sono -.PP .TP "\w'\fB*= /= %= ^=\fR'u+1n" .BR ( \&.\|.\|. ) Raggruppamento @@ -2303,14 +2308,13 @@ .BI ( var " = " valore ) che quello con operatore (le altre forme). .SS Istruzioni di controllo -.PP Le istruzioni di controllo sono le seguenti: .PP .RS .nf \fBif (\fIcondizione\fB) \fIistruzione\fR [ \fBelse\fI istruzione \fR] -\fBwhile (\fIcondizione\fB) \fIistruzione \fR +\fBwhile (\fIcondizione\fB) \fIistruzione\fR \fBdo \fIistruzione \fBwhile (\fIcondizione\fB)\fR \fBfor (\fIespressione1\fB; \fIespressione2\fB; \fIespressione3\fB) \fIistruzione\fR \fBfor (\fIvar \fBin\fI vettore\fB) \fIistruzione\fR @@ -2328,9 +2332,7 @@ .fi .RE .SS "Istruzioni di I/O" -.PP Le istruzioni di input/output sono le seguenti: -.PP .TP "\w'\fBprintf \fIfmt, lista-espressioni\fR'u+1n" \fBclose(\fIfile \fR[\fB, \fIcome\fR]\fB)\fR Chiude un file, una pipe o un coprocesso. @@ -2377,7 +2379,7 @@ .TP \fIcomando\fB | getline \fR[\fIvariabile\fR] Esegue -.IR comando +.I comando dirigendo l'output [del comando] o in .B $0 o in @@ -2413,7 +2415,7 @@ .BR END , se presenti. .TP -.B "nextfile" +.B nextfile Cessa l'elaborazione del file di input corrente. La prossima riga letta proverrà dal file di input successivo. Aggiorna @@ -2482,14 +2484,14 @@ e .BR printf . .TP -.BI "print .\|.\|. >>" " file" +.BI "print .\|.\|.\& >>" " file" Aggiunge l'output alla fine di .IR file . .TP -.BI "print .\|.\|. |" " comando" +.BI "print .\|.\|.\& |" " comando" Scrive su una pipe. .TP -.BI "print .\|.\|. |&" " comando" +.BI "print .\|.\|.\& |&" " comando" Invia dati a un coprocesso o a un socket. (Vedere anche la sottosezione .BR "Nomi di file speciali" , @@ -2527,7 +2529,6 @@ \*(AK non chiude automaticamente pipe, socket, o coprocessi quando questi restituiscono EOF. .SS L'istruzione \fIprintf\fP\^ -.PP Le versioni di \*(AK dell'istruzione .B printf e della funzione @@ -2614,7 +2615,7 @@ .TP .B %% Un singolo carattere -.B % ; +.BR % ; non c'è alcuna conversione di argomenti. .PP Alcuni ulteriori parametri facoltativi possono comparire fra il @@ -2702,7 +2703,7 @@ .BR 0 , è invece preceduto da zeri. .TP -.BI \&. prec +.BI \&.\& prec Un numero indicante la precisione da utilizzare nella stampa. Con i formati .BR %e , @@ -2757,7 +2758,6 @@ nella stringa di formattazione. Per esempio, \fB"%3$*2$.*1$s"\fP. .SS Nomi di file speciali -.PP effettuando delle ridirezioni di .B print o @@ -2850,9 +2850,7 @@ .BI /inet6/udp/ lport / rhost / rport Come sopra, ma usando porte UDP/IP invece che TCP/IP. .SS Funzioni numeriche -.PP \*(AK ha le seguenti funzioni aritmetiche predefinite: -.PP .TP "\w'\fBsrand(\fR[\fIespressione\^\fR]\fB)\fR'u+1n" .BI atan2( y , " x" ) Restituisce l'arcotangente di @@ -2882,7 +2880,7 @@ .I denominatore in \fIresult\fB["quotient"]\fR e il resto in -in \fIresult\fB["remainder"]\fR. +\fIresult\fB["remainder"]\fR. Questa è un'estensione .IR gawk , utile in particolare quando si lavora con numeri @@ -2916,10 +2914,8 @@ Il valore restituito è il valore precedente del seme. .SS Funzioni di stringa -.PP .I Gawk offre le seguenti funzioni di stringa predefinite: -.PP .TP "\w'\fBsprintf(\^\fIfmt\fB\^, \fIlista-espressioni\^\fB)\fR'u+1n" \fBasort(\fIs \fR[\fB, \fId\fR [\fB, \fIcome\fR] ]\fB)\fR Restituisce il numero di elementi del @@ -3273,7 +3269,6 @@ .I gawk mette a disposizione le seguenti funzioni per ottenere data e ora e per formattarle come desiderato. -.PP .TP "\w'\fBsystime()\fR'u+1n" \fBmktime(\fIdatespec\fR [\fB, \fIutc-flag\fR]\fB)\fR Traduce @@ -3339,7 +3334,7 @@ Se .I format è omesso, è assunto un formato equivalente a quello dell'output del comando -.IR date (1) . +.IR date (1). Il formato predefinito è disponibile in .BR PROCINFO["strftime"] . Vedere le specifiche per la funzione @@ -3396,7 +3391,6 @@ Restituisce il risultato derivante dall'applicazione della funzione booleana XOR bit per bit ai valori degli argomenti della lista degli argomenti. Gli argomenti devono essere almeno due. -.PP .SS Funzioni di tipo Le seguenti funzioni forniscono informazioni relative agli argomenti che vengono loro passati. @@ -3529,7 +3523,7 @@ \&.\|.\|. } -/abc/ { .\|.\|. ; f(1, 2) ; .\|.\|. } +/abc/ { .\|.\|.\& ; f(1, 2) ; .\|.\|.\& } .fi .ft R .RE @@ -3591,7 +3585,7 @@ anche se questo modo di operare è deprecato. .SH CARICARE DINAMICAMENTE NUOVE FUNZIONI Si possono aggiungere dinamicamente nuove funzioni scritte in C o C++ -all'interpreter +all'interpretatore .I gawk in esecuzione tramite l'istruzione .BR @load . @@ -3613,7 +3607,6 @@ .I gawk di scrivere il profilo e lo stack delle chiamate a funzione e di terminare l'esecuzione del programma. .SH INTERNAZIONALIZZAZIONE -.PP Le costanti di tipo stringa sono sequenze di caratteri racchiuse fra doppi apici. In un ambiente dove non si parla inglese, è possibile segnare delle stringhe in un programma \*(AK per richiederne la traduzione nel linguaggio @@ -3716,10 +3709,10 @@ .B BEGIN è stata eseguita. Peraltro, in implementazioni precedenti, quando una tale assegnazione compariva prima di un nome di file, l'assegnazione sarebbe -avvenuta +avvenuta .I prima di eseguire la regola -.B BEGIN . +.BR BEGIN . Esistono applicazioni che dipendono da questa \*(lqfunzionalità.\*(rq Quando .I awk @@ -3766,7 +3759,8 @@ .B tolower() e .B toupper() -(dalla versione Bell Laboratories); e le specifiche di conversione ISO C in +(dalla versione Bell Laboratories); +e le specifiche di conversione ISO C in .B printf (presenti per prime nella versione Bell Laboratories). .SH FUNZIONALITÀ STORICHE @@ -4202,7 +4196,7 @@ .I gawk di tanto in tanto leggono questo forum, inviare qui messaggi di segnalazione di errore è una maniera poco affidabile per segnalare errori. -Analogamente, +Analogamente, .B NON usare una comunità web (tipo Stack Overflow) per segnalare errori. Siete invece pregati di usare gli indirizzi di posta elettronica @@ -4239,7 +4233,7 @@ .IR usleep (3) .PP .IR "The AWK Programming Language" , -Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger, +Alfred V.\& Aho, Brian W.\& Kernighan, Peter J.\& Weinberger, Addison-Wesley, 1988. ISBN 0-201-07981-X. .PP \*(EP, @@ -4328,7 +4322,7 @@ This is an unofficial translation into Italian of the above section "COPYING PERMISSIONS". It was not published by the Free Software Foundation, and does not legally state the distribution terms for this documentation; only -the original English text does that. +the original English text does that. .PP Copyright \(co 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2007, 2009, diff -urN gawk-5.1.0/doc/it/gawktexi.in gawk-5.1.1/doc/it/gawktexi.in --- gawk-5.1.0/doc/it/gawktexi.in 2020-04-13 09:46:18.000000000 +0300 +++ gawk-5.1.1/doc/it/gawktexi.in 2021-10-25 19:18:13.000000000 +0300 @@ -56,7 +56,7 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH Marzo 2020 +@set UPDATE-MONTH Settembre 2020 @set VERSION 5.1 @set PATCHLEVEL 0 @@ -1033,7 +1033,7 @@ * Controllo dei breakpoint:: Controllo dei punti d'interruzione. * Controllo esecuzione debugger:: Controllo di esecuzione. * Vedere e modificare dati:: Vedere e modificare dati. -* Stack di esecuzione:: Lavorare con lo stack. +* Stack di esecuzione:: Lavorare con lo @dfn{stack}. * Informazioni sul debugger:: Ottenere informazioni sullo stato del programma e del debugger. * Comandi vari del debugger:: Comandi vari del debugger. @@ -1084,6 +1084,7 @@ * Intro funzioni estensione API:: Introduzione alle funzioni dell'API. * Tipi di dati generali:: I tipi di dati. * Funzioni di allocazione memoria:: Funzioni per allocare memoria. +* API e gestione valori MPFR e GMP:: Gestione valori MPFR e GMP. * Funzioni di costruzione:: Funzioni per creare valori. * Funzioni di registrazione:: Funzioni per registrare cose con @command{gawk}. @@ -2112,7 +2113,7 @@ @c fakenode --- for prepinfo @unnumberedsubsec Angoli Bui -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry citazioni di @quotation @i{Gli angoli bui sono essenzialmente frattali --- per quanto vengano illuminati, ce n'@`e sempre uno pi@`u piccolo e pi@`u buio.} @@ -2469,7 +2470,7 @@ @cindex Berry, Karl @cindex Smith, Gavin Grazie a Patrice Dumas per il nuovo programma @command{makeinfo}. -Grazie a Karl Berry, che per il lavoro svolto in passato +Grazie a Karl Berry, per il lavoro svolto in passato su Texinfo, e a Gavin Smith, che continua a lavorare per migliorare il linguaggio di marcatura Texinfo. @@ -3011,7 +3012,7 @@ @node Protezione @subsection Uso di apici nella shell. -@cindex shell @subentry protezione @subentry regole per +@cindex shell @subentry protezione @subentry regole per la @menu * Doppi apici in DOS:: Passaggio di apici in file .BAT Windows. @@ -3029,7 +3030,7 @@ awk '@var{testo del programma}' @var{input-file1} @var{input-file2} @dots{} @end example -@cindex shell @subentry protezione @subentry regole per +@cindex shell @subentry protezione @subentry regole per la @cindex Bourne shell @subentry protezione @subentry regole per la Quando si lavora con la shell, non guasta avere una conoscenza di base sulle regole per l'uso di apici nella shell. Le regole @@ -3134,7 +3135,7 @@ @end example @noindent -@cindex stringa nulla @subentry come argomento a @command{gawk}, protezione della +@cindex stringa nulla @subentry come argomento a @command{gawk} @subentry protezione per Non @`e invece da usare: @example @@ -3463,6 +3464,40 @@ Molti degli esempi usano un @value{DF} di nome @file{data}. Questo serve solo a indicare la posizione del nome; se questi programmi devono venir usati per se stessi, sostituire i propri @value{FNS} al posto di @file{data}. + +@cindex @command{ls} programma di utilit@`a +@cindex programma di utilit@`a @subentry @command{ls} +Alcuni degli esempi che seguono usano l'output di @w{@samp{ls -l}} +come input. +@command{ls} @`e un comando di sistema che elenca la lista dei file +contenuti in una directory. Specificando l'opzione @option{-l}, +la lista include anche la dimensione e la data di ultima modifica +di ogni file. Il suo output @`e simile a questo: + +@example +-rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile +-rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h +-rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h +-rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y +-rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c +-rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c +-rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c +-rw-r--r-- 1 arnold user 7989 Nov 7 13:03 awk4.c +@end example + +@noindent +Il primo campo contiene le autorizzazioni di lettura-scrittura, +il secondo campo contiene il numero di @dfn{link} di quel file +[il numero di nomi con cui @`e conosciuto] e il terzo campo +identifica il proprietario del file. +Il quarto campo identifica il gruppo del file. +Il quinto campo contiene la dimensione del file, in byte. +Il sesto, settimo e ottavo campo contengono il mese, il giorno e +l'ora, rispettivamente, in cui il file @`e stato modificato l'ultima +volta. [Se la data di modifica @`e pi@`u di sei mesi nel passato, +l'ottavo campo contiene l'anno, e non l'ora di modifica.] +Finalmente il nono campo contiene il valore @value{FN}. + Per futura memoria, si noti che spesso c'@`e pi@`u di un modo per fare qualcosa in @command{awk}. In un altro momento, si potrebbe tornare a guardare questi esempi per vedere se si riescono a trovare modi differenti per fare le stesse @@ -3646,34 +3681,24 @@ END @{ print somma @}' @end example -@cindex comando @subentry @command{ls} +@cindex @command{ls} programma di utilit@`a +@cindex programma di utilit@`a @subentry @command{ls} Questo comando stampa il numero totale di byte in tutti i file contenuti nella directory corrente, la cui data di modifica @`e novembre (di qualsiasi -anno). La parte @w{@samp{ls -l}} dell'esempio @`e un comando di sistema che -fornisce un elenco dei file in una directory, con anche la dimensione di -ogni file e la data di ultima modifica. Il suo output @`e del tipo: - -@example --rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile --rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h --rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h --rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y --rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c --rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c --rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c --rw-r--r-- 1 arnold user 7989 Nov 7 13:03 awk4.c -@end example +anno). -@noindent -@cindex continuazione di riga @subentry nella C shell -Il primo campo contiene le autorizzazioni di lettura/scrittura [r/w], il -secondo il numero dei collegamenti al file [cio@`e il numero di nomi con cui -il file @`e conosciuto], e il terzo campo identifica il proprietario del file. -Il quarto campo identifica il gruppo a cui appartiene il file. +Come gi@`a visto sopra, l'output di @w{@samp{ls -l}} elenca la lista +dei file contenuti in una directory, compresa la lunghezza di ogni +file la data in cui il file @`e stato modificato per l'ultima volta. +Il primo campo contiene le autorizzazioni di lettura-scrittura, +il secondo campo contiene il numero di @dfn{link} di quel file +e il terzo campo identifica il proprietario del file. +Il quarto campo identifica il gruppo del file. Il quinto campo contiene la dimensione del file, in byte. -Il sesto, settimo e ottavo campo contengono il mese, il giorno e l'ora, -rispettivamente, in cui il file @`e stato modificato. Infine, il nono campo -contiene il @value{FN}. +Il sesto, settimo e ottavo campo contengono il mese, il giorno e +l'ora, rispettivamente, in cui il file @`e stato modificato l'ultima +volta. +Finalmente il nono campo contiene il valore @value{FN}. @c @cindex automatic initialization @cindex inizializzazione @subentry automatica @@ -3767,7 +3792,9 @@ @c 10/2000: gawk, mawk, and current bell labs awk allow it, @c solaris 2.7 nawk does not. Solaris /usr/xpg4/bin/awk does though! sigh. -@cindex comando @subentry @command{csh} +@cindex comando di utilit@`a @subentry @command{csh} +@cindex @command{csh} (comando di utilit@`a) @subentry continuazione di riga +@cindex continuazione di riga @subentry con C shell @cindex barra inversa (@code{\}) @subentry continuazione di riga e @subentry in @command{csh} @cindex @code{\} (barra inversa) @subentry continuazione di riga e @subentry in @command{csh} @quotation ATTENZIONE @@ -3910,6 +3937,7 @@ evitare la (normalmente laboriosa) parte di compilazione nel ciclo tipico dello sviluppo software, ossia edita-compila-prova-correggi. +@cindex BWK @command{awk} @seeentry{Brian Kernighan @subentry @command{awk} di} @cindex Brian Kernighan @subentry @command{awk} di In @command{awk} sono stati scritti programmi complessi, compreso un assembler completo, pluri-piattaforma per @@ -3943,7 +3971,6 @@ @node Sommario dell'introduzione @section Sommario -@c FIXME: Review this chapter for summary of builtin functions called. @itemize @value{BULLET} @item I programmi in @command{awk} consistono di coppie di @@ -4075,7 +4102,7 @@ (@samp{=}) e dal valore dell'argomento, oppure la parola chiave e il valore dell'argomento sono separati da spazio bianco (spazi o caratteri TAB). Se un'opzione con un valore viene immessa pi@`u di una volta, -l'ultimo valore @`e quello che conta. +l'ultimo valore @`e (di solito) quello che conta. @cindex POSIX @command{awk} @subentry opzioni estese GNU Ogni opzione estesa di @command{gawk} ha una corrispondente opzione @@ -4391,6 +4418,21 @@ a inizio programma. @xref{Cambiare lo spazio-dei-nomi}, per ulteriori informazioni. +@item @option{-I} +@itemx @option{--trace} +@cindex @option{-I} (opzione) +@cindex opzione @subentry @option{-I} +@cindex @option{--trace} (opzione) +@cindex opzione @subentry @option{--trace} +@cindex tracciatura @subentry codice-byte interno di istruzioni +@cindex istruzioni @subentry tracciatura @subentry codice-byte interno +@cindex codice-byte interno @subentry tracciatura del +Stampa i nomi del codice-byte generato internamente, nell'ordine +in cui sono incontrati durante l'esecuzione del programma. +Questa trace @`e stampata sullo standard error. +Ogni ``codice operativo'' @`e preceduto da un segno @code{+} +nell'output. + @item @option{-l} @var{ext} @itemx @option{--load} @var{ext} @cindex @option{-l} (opzione) @@ -4637,7 +4679,7 @@ la ridirezione dell'input con @code{getline}, la ridirezione dell'output con @code{print} e @code{printf}, e le estensioni dinamiche. -Inoltre, non consente di aggiungere nomi di file ad @code{ARGV} che +Inoltre, non consente di aggiungere @value{FNS} ad @code{ARGV} che non siano gi@`a presenti all'inizio dell'esecuzione di @command{gawk}. @`E particolarmente utile quando si vogliono eseguire @dfn{script} @command{awk} da sorgenti dubbie e si vuol essere ricuri che gli @dfn{script} non abbiano @@ -4675,9 +4717,10 @@ nel vettore @code{ARGV}, anche se inizia con il segno meno (@code{-}). @end table -Ogni altra opzione, se @`e stato specificato il testo di un programma +In modalit@`a di compatibilit@`a, +ogni altra opzione, se @`e stato specificato il testo di un programma, @`e contrassegnata come non valida con un messaggio di avvertimento, -altrimenti @`e ignorata. +ma @`e in ogni caso ignorata. @cindex @option{-F} (opzione) @subentry @option{-Ft} imposta @code{FS} a TAB @cindex opzione @subentry @option{-F} @subentry opzione @option{-Ft} imposta @code{FS} a TAB @@ -4778,7 +4821,7 @@ argomento che ha la forma @code{@var{var}=@var{valore}}, assegna il valore @var{valore} alla variabile @var{var} --- non specifica affatto un file. (Si veda @ref{Opzioni di assegnamento}.) Nel seguente esempio, -@var{count=1} @`e un assegnamento di variabile, non un @value{FN}: +@samp{count=1} @`e un assegnamento di variabile, non un @value{FN}: @example awk -f programma.awk file1 count=1 file2 @@ -4810,7 +4853,6 @@ riga di comando, ed @`e contenuta in @code{PROCINFO["argv"]}; @pxref{Variabili auto-assegnate}.) -@c FIXME: One day, move the ARGC and ARGV node closer to here. La modifica di @code{ARGC} e @code{ARGV} nel proprio programma @command{awk} consente di controllare come @command{awk} elabora i file in input; questo @`e descritto pi@`u dettagliatamente in @ref{ARGC e ARGV}. @@ -4864,6 +4906,40 @@ @option{-F} per impostare il valore di @code{FS} non @`e pi@`u strettamente necessaria. Rimane per compatibilit@`a all'indietro. +@sidebar Proteggere le variabili della shell nella riga di comando @command{awk} +@cindex protezione @subentry nella riga di comando di @command{gawk} +@cindex shell @subentry protezione @subentry regole per la +@cindex stringa nulla @subentry come argomento a @command{gawk} @subentry protezione per + +Alcuni piccoli programmi @command{awk} sono spesso inseriti in @dfn{script} +della shell di grosse dimensioni. Per questo motivo vale la pena di +approfondire alcune nozioni di base riguardo alla shell. +Si consideri quanto segue: + +@example +f="" +awk '@{ print("hi") @}' $f +@end example + +In questo caso @command{awk} legge dallo standard input invece di +tentare di aprire il file specificato nella riga di comando. +A prima vista, potrebbe sembrare che @command{awk} si sia bloccato. + +Peraltro a @command{awk} non viene passata una stringa nulla vera +e propria. Quando una variabile assume il valore della stringa nulla, +@emph{e} questo valore non @`e protetto da una sequenza, la shell +non fa altro che toglierla completamente dalla riga di comando. +Lo si pu@`o vedere in questo modo: + +@example +$ @kbd{f=""} +$ @kbd{awk 'BEGIN @{ print ARGC @}' $f} +@print{} 1 +$ @kbd{awk 'BEGIN @{ print ARGC @}' "$f"} +@print{} 2 +@end example +@end sidebar + @node Specificare lo standard input @section Come specificare lo standard input insieme ad altri file @@ -5019,6 +5095,7 @@ @node AWKLIBPATH (Variabile) @subsection Ricerca di librerie condivise @command{awk} su varie directory. @cindex @env{AWKLIBPATH} (variabile d'ambiente) +@cindex variabili d'ambiente @subentry @env{AWKLIBPATH} @cindex directory @subentry ricerca di estensioni caricabili @cindex percorso di ricerca @subentry per estensioni @cindex differenze tra @command{awk} e @command{gawk} @subentry @code{AWKLIBPATH} (variabile d'ambiente) @@ -5036,7 +5113,7 @@ Se la variabile d'ambiente @env{AWKLIBPATH} non esiste, o se ha come valore la stringa nulla, @command{gawk} usa un percorso di ricerca di default; questo normalmente vale @samp{/usr/local/lib/gawk}, anche se il suo valore -pu@`o essere diverso, a seconda di come @`e stato installato +pu@`o essere diverso, a seconda di come @`e stato compilato @command{gawk}.@footnote{La vostra versione di @command{gawk} pu@`o utilizzare una directory differente; dipende da come @command{gawk} @`e stato generato e installato. La directory utilizzata ha il valore @@ -5145,7 +5222,7 @@ pratica). @item GAWK_STACKSIZE -Specifica di quanto @command{gawk} dovrebbe accrescere il suo stack di +Specifica di quanto @command{gawk} dovrebbe accrescere il suo @dfn{stack} di valutazione interno, all'occorrenza. @item INT_CHAIN_MAX @@ -5579,7 +5656,7 @@ @item Tutti gli argomenti "non-opzione", tranne il testo del programma -specificato come primo argomento "non-opzione" sono messi nel vettore +specificato come primo argomento "non-opzione", sono messi nel vettore @code{ARGV} come spiegato in @ref{ARGC e ARGV}, e sono trattati come descritto in @ref{Altri argomenti}. @c And I wrote: @@ -5881,7 +5958,7 @@ @cindex @code{\} (barra inversa) @subentry @code{\/} (sequenza di protezione) @cindex barra inversa (@code{\}) @subentry @code{\/} (sequenza di protezione) @item \/ -Una barra (dovrebbe essere usato solo per costanti @dfn{regexp}). +Una barra (dovrebbe essere usata solo per costanti @dfn{regexp}). Questa sequenza si usa per inserire una costante @dfn{regexp} che contiene una barra (come @code{/.*:\/home\/[[:alnum:]]+:.*/}; la notazione @samp{[[:alnum:]]} @@ -6149,7 +6226,7 @@ La parentesi sinistra (di apertura) @`e sempre un metacarattere; per cercare una corrispondenza letterale con una tale parentesi, occorre farla precedere da una barra inversa. Comunque, la -parentesi destra (di chiusura), @`e speciale solo se eesiste la +parentesi destra (di chiusura) @`e speciale solo se esiste la relativa parentesi sinistra; una parentesi destra senza la corrispondente parentesi sinistra @`e considerata (senza dare alcun messaggio di avviso) come un normale carattere. @@ -7360,7 +7437,7 @@ Comunque, quest'uso @emph{non} @`e portabile sulla maggior parte delle implementazioni di @command{awk}. -@cindex angolo buio @subentry stringhe, memorizzazine di +@cindex angolo buio @subentry stringhe, memorizzazione di Quasi tutte le altre implementazioni di @command{awk} @footnote{Almeno quelle che ci sono note.} memorizzano internamente le stringhe come stringhe in stile C. Le stringhe in stile C usano il carattere @sc{NUL} come @@ -8627,10 +8704,14 @@ FPAT = "([^,]*)|(\"[^\"]+\")" @end example -@c FIXME: 4/2015 +@c 4/2015 @c Consider use of FPAT = "([^,]*)|(\"[^\"]*\")" @c (star in latter part of value) to allow quoted strings to be empty. @c Per email from Ed Morton +@c +@c WONTFIX: 10/2020 +@c This is too much work. FPAT and CSV files are very flakey and +@c fragile. Doing something like this is merely inviting trouble. Come per @code{FS}, la variabile @code{IGNORECASE} (@pxref{Variabili modificabili dall'utente}) ha effetto sulla separazione dei @@ -9250,7 +9331,7 @@ @subsection Usare @code{getline} da una @dfn{pipe} @c From private email, dated October 2, 1988. Used by permission, March 2013. -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry citazioni di @quotation @i{L'onniscienza ha molti aspetti positivi. Se non si pu@`o ottenerla, l'attenzione ai dettagli pu@`o aiutare.} @@ -10736,7 +10817,7 @@ @example awk 'BEGIN @{ print "Nome Numero" - print " --- - ------ " @} + print "---- ------" @} @{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example @@ -10746,7 +10827,7 @@ @example awk 'BEGIN @{ printf "%-10s %s\n", "Nome", "Numero" - printf "%-10s %s\n", " --- -", " --- --- " @} + printf "%-10s %s\n", "----", "------" @} @{ printf "%-10s %s\n", $1, $2 @}' mail-list @end example @@ -10761,7 +10842,7 @@ @example awk 'BEGIN @{ format = "%-10s %s\n" printf format, "Nome", "Numero" - printf format, " --- -", " --- --- " @} + printf format, "----", "------" @} @{ printf format, $1, $2 @}' mail-list @end example @@ -12184,6 +12265,9 @@ (@pxref{Funzioni definite dall'utente}). @item +Come valore restituito da una funzione definita dall'utente. + +@item Sul lato destro di un assegnamento di variabile: @samp{qualche_variabile = @@/foo/}. In tal caso, @code{qualche_variabile} @`e di tipo @dfn{regexp}. @@ -12673,9 +12757,14 @@ -17 % 8 = -1 @end example +@noindent +Questa definizione @`e in accordo con lo standard POSIX, il quale prescrive +che l'operatore @code{%} produca risultati equivalenti a quelli che si +otterrebbero usando la funzione standard del linguaggio C @code{fmod()}, +la quale funzione, a sua volta, si comporta come appena descritto. + In altre implementazioni di @command{awk} il segno del resto pu@`o essere dipendente dalla macchina. -@c FIXME !!! what does posix say? @cindex portabilit@`a @subentry operatore @code{**} @cindex @code{*} (asterisco) @subentry operatore @code{**} @@ -12688,7 +12777,7 @@ @node Concatenazione @subsection Concatenazione di stringhe -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry citazioni di @quotation @i{Allora ci era sembrata una buona idea.} @author Brian Kernighan @@ -14895,6 +14984,7 @@ Queste sono eseguite nell'ordine in cui compaiono nel programma: tutte le regole @code{BEGIN} a inizio programma e tutte le regole @code{END} a fine programma. + Le regole @code{BEGIN} ed @code{END} possono apparire in qualsiasi posizione all'interno del programma. Questa funzionalit@`a @`e stata aggiunta nella versione 1987 di @command{awk} ed @@ -14929,7 +15019,8 @@ una regola @code{END} esiste, l'intero input @`e letto, anche se non sono presenti altre regole nel programma. Ci@`o viene fatto necessariamente per permettere che -la regola @code{END} faccia uso delle variabili @code{FNR} e @code{NR}. +la regola @code{END} faccia uso delle variabili @code{FNR} e @code{NR}, +o i campi [dell'ultimo record in input]. @node I/O e BEGIN/END @subsubsection Input/Output dalle regole @code{BEGIN} ed @code{END} @@ -14957,6 +15048,7 @@ e @code{NF} erano @emph{indefiniti} all'interno di una regola @code{END}. Lo standard POSIX prescrive che @code{NF} sia disponibile all'interno di una regola @code{END}. Contiene il numero di campi dell'ultimo record in input. +@c FIXME: Update this if POSIX is ever fixed. Probabilmente per una svista, lo standard non specifica che @`e reso disponibile anche @code{$0}, sebbene possa apparire logico che sia cos@`{@dotless{i}}. In effetti, BWK @command{awk}, @command{mawk} e @command{gawk} mantengono il @@ -14972,7 +15064,7 @@ Molti programmatori di lungo corso di @command{awk} usano un semplice @samp{print} all'interno delle regole @code{BEGIN} ed @code{END}, intendendo @samp{@w{print ""}}, contando sul fatto che @code{$0} sia una -stringa nulla. Sebbene questo funzioni solitamente con le regole +stringa nulla. Sebbene questo funzioni solitamente per le regole @code{BEGIN}, @`e una pessima idea nelle regole @code{END}, almeno in @command{gawk}. @`E anche stilisticamente inelegante, perch@'e se serve una riga vuota in output, il programma dovrebbe stamparne @@ -15026,14 +15118,21 @@ @ifdocbook (si veda la @value{SECTION} precedente), @end ifdocbook -tutte le regole @code{BEGINFILE} in un programma sono riunite, mantenendole +le regole @code{BEGINFILE} in un programma sono eseguite nell'ordine in cui sono lette da @command{gawk} e lo stesso viene fatto per tutte le regole @code{ENDFILE}. -Il corpo delle regole @code{BEGINFILE} @`e eseguito subito prima che +I codici delle regole @code{BEGINFILE} sono eseguiti subito prima che @command{gawk} legga il primo record da un file. La variabile @code{FILENAME} @`e impostata al nome del file corrente e @code{FNR} @`e impostata a zero. +Prima della @value{PVERSION} 5.1.1 di @command{gawk}, per un difetto di +implementazione, @code{$0} e i campi del record mantenevano, nelle regole +@code{BEGINFILE} il valore che avevano in precedenza. +A partire dalla @value{PVERSION} 5.1.1, sia @code{$0} che i campi del +record sono impostati alla stringa nulla, poich@'e nessun record @`e +ancora stato letto dal file in procinto di essere elaborato. + La regola @code{BEGINFILE} d@`a la possibilit@`a di eseguire due compiti che sarebbe difficile o impossibile effettuare altrimenti: @@ -15073,7 +15172,7 @@ Normalmente, se si verifica un errore di lettura durante il normale ciclo di elaborazione dell'input, questo @`e considerato fatale (il programma termina). Tuttavia, se @`e presente -una regola @code{ENDFILE}, l'errore non @`e considerato fatale, ma viene +una regola @code{BEGINFILE}, l'errore non @`e considerato fatale, ma viene impostato @code{ERRNO}. Ci@`o permette di intercettare ed elaborare errori di I/O a livello di programma @command{awk}. @@ -15092,28 +15191,6 @@ In molte altre implementazioni di @command{awk} o se @command{gawk} @`e in modalit@`a compatibile (@pxref{Opzioni}), non sono regole speciali. -@c FIXME: For 4.2 maybe deal with this? -@ignore -Date: Tue, 17 May 2011 02:06:10 PDT -From: rankin@pactechdata.com (Pat Rankin) -Message-Id: <110517015127.20240f4a@pactechdata.com> -Subject: BEGINFILE -To: arnold@skeeve.com - - The documentation for BEGINFILE states that FNR is 0, which seems -pretty obvious. It doesn't mention what the value of $0 is, and that's -not obvious. I think setting it to null before starting the BEGINFILE -action would be preferable to leaving whatever was there in the last -record of the previous file. - - ENDFILE can retain the last record in $0. I guess it has to if -the END rule's actions see that value too. But the beginning of a new -file doesn't just mean that the old one has been closed; the old file -is being superseded, so leaving the old data around feels wrong to me. -[If the user wants to keep it on hand, he or she can use an ENDFILE -rule to grab it before moving on to the next file.] -@end ignore - @node Vuoto @subsection Il criterio di ricerca vuoto @@ -15131,7 +15208,7 @@ @node Usare variabili di shell @section Usare variabili di shell in programmi -@cindex shell @subentry variabili di +@cindex shell @subentry variabili della @cindex programmi @command{awk} @subentry variabili di shell nei @c @cindex shell and @command{awk} interaction @@ -15143,7 +15220,7 @@ Ci sono due modi per rendere disponibile il valore di una variabile di shell all'interno di un programma @command{awk}. -@cindex shell @subentry uso di doppio apice +@cindex shell @subentry uso di doppio apice nella Un modo comune @`e quello di usare i doppi apici per sostituire il valore della variabile nel progamma @command{awk} contenuto nello @dfn{script}: @@ -15661,14 +15738,14 @@ @code{default}, se @`e stata specificata. Ogni @code{case} contiene una singola costante, che pu@`o essere un numero, -una stringa, o -una @dfn{regexp}. Viene valutata l'espressione @code{switch}, e poi la -costante di ogni @code{case} viene confrontata -di volta in volta con il valore risultante. -Il tipo di costante determina quale sar@`a il confronto: per i tipi numerici o -stringa si seguono le regole abituali. Per una costante @dfn{regexp} viene -effettuato un confronto tra l'espressione e il valore di tipo stringa -dell'espressione originale. +una stringa, o una @dfn{regexp}. Viene valutata l'espressione @code{switch}, +e poi la costante di ogni @code{case} viene confrontata di volta in volta +con il valore risultante. +Il tipo di costante determina come sar@`a eseguito il confronto: per i tipi +numerici o stringa si seguono le regole abituali. Per una costante +@dfn{regexp} (sia regolare, @code{/pippo/}, che fortemente tipizzata, +@code{@@/pippo/}) viene effettuato un confronto tra l'espressione e il +valore di tipo stringa dell'espressione originale. Il formato generale dell'istruzione @code{switch} @`e simile a questo: @example @@ -17137,7 +17214,7 @@ Per passare direttamente delle opzioni a un programma scritto in @command{awk}, si devono terminare le opzioni di @command{awk} con @option{--} e poi inserire le opzioni destinate al programma @command{awk}, -come mostrato qui di seguito: +come mostrato di seguito: @example awk -f mio_programma.awk -- -v -q file1 file2 @dots{} @@ -17991,7 +18068,7 @@ Se si sceglie di utilizzare questa funzionalit@`a per esaminare tutti gli elementi di @code{FUNCTAB} (@pxref{Variabili auto-assegnate}), -allora l'ordine in cui sono presentati gli elementi @`e: dapprima le +l'ordine in cui sono presentati gli elementi @`e: dapprima le funzioni predefinite (@pxref{Funzioni predefinite}), poi le funzioni definite dall'utente (@pxref{Funzioni definite dall'utente}) e infine le funzioni caricate da un'estensione @@ -19219,11 +19296,12 @@ @end example @quotation NOTA -A motivo di limitazioni dovute all'implementazione, non si possono usare -n@'e @code{SYMTAB} n@'e @code{FUNCTAB} come argomenti di queste -funzioni, neppure se si specifica un secondo vettore da utilizzare -per effettuare l'ordinamento. Se si tenta di farlo, viene generato -un errore fatale. Questa limitazione potrebbe venire meno in futuro. +Non si pu@`o usare n@'e @code{SYMTAB} n@'e @code{FUNCTAB} come secondo +argomento di queste funzioni. Se si tenta di farlo, viene generato un +errore fatale. +Questi vettori possono essere usati come primo argomento, ma soltanto +se si specifica un secondo vettore da usare per contenere il risultato +dell'ordinamento. @end quotation @item @code{gensub(@var{regexp}, @var{rimpiazzo}, @var{come}} [@code{, @var{obiettivo}}]@code{) #} @@ -19580,7 +19658,8 @@ Il separatore iniziale (che potrebbe anche essere la stringa nulla) sar@`a in @code{@var{separatori}[0]}. Quindi, una @var{stringa} non nulla, con @var{n} campi avr@`a @var{n+1} -separatori. Una stringa nulla non avr@`a n@'e campi n@'e separatori. +separatori. +Una stringa nulla non avr@`a nessun campo e nessun separatore. La funzione @code{patsplit()} divide delle stringhe in pezzi in modo simile a quello con cui le righe in input vengono divise in campi @@ -19950,7 +20029,7 @@ @node Dettagli ostici @subsubsection Ulteriori dettagli su @samp{\} e @samp{&} con @code{sub()}, @code{gsub()} e @code{gensub()} -@cindex protezione caratteri nelle funzioni @code{gsub()}/@code{gensub()}/@code{sub()} +@cindex protezione @subentry nelle funzioni @code{gsub()}/@code{gensub()}/@code{sub()} @cindex funzione @subentry @code{sub()} @subentry protezione caratteri @cindex @code{sub()} (funzione) @subentry protezione caratteri @cindex funzione @subentry @code{gsub()} @subentry protezione caratteri @@ -20345,8 +20424,8 @@ specificato alcun argomento, e svuotato tutti i buffer dei file in output e delle @dfn{pipe} se l'argomento era la stringa nulla. -Questo @`e stato modificato per essere compatibile con l'@command{awk} di -Kernighan, nella speranza che standardizzare questa +Questo @`e stato modificato per essere compatibile con BWK @command{awk}, +nella speranza che standardizzare questa funzionalit@`a in POSIX sarebbe stato pi@`u agevole (come poi @`e effettivamente successo). @@ -21561,7 +21640,6 @@ * Esempio di funzione:: Un esempio di definizione di funzione e spiegazione della stessa. * Chiamata di una funzione:: Chiamare funzioni definite dall'utente. -* Precisazioni sulle funzioni:: Cose a cui prestare attenzione. * Istruzione return:: Specificare il valore che una funzione restituisce. * Variabili di tipo dinamico:: Come cambiare tipo a una variabile in @@ -21627,7 +21705,9 @@ non possono avere lo stesso nome di una delle speciali variabili predefinite (@pxref{Variabili predefinite}), e un parametro di funzione non pu@`o avere lo stesso nome di un'altra funzione. -Non tutte le versioni di @command{awk} applicano queste limitazioni. +@cindex angolo buio @subentry limitazioni nel nome dei parametri +Non tutte le versioni di @command{awk} applicano +queste limitazioni. @value{DARKCORNER} @command{gawk} applica solo la prima di queste restrizioni. Se viene specificata l'opzione @option{--posix} (@pxref{Opzioni}), anche la seconda restrizione viene applicata. @@ -22711,9 +22791,9 @@ @example @c file eg/data/class_data2 -Biologia_101 somma media ordina discendente dati: 87.0 92.4 78.5 94.9 -Chimica_305 somma media ordina discendente dati: 75.2 98.3 94.7 88.2 -Inglese_401 somma media ordina discendente dati: 100.0 95.6 87.1 93.4 +Biologia_101 somma media ascendente discendente dati: 87.0 92.4 78.5 94.9 +Chimica_305 somma media ascendente discendente dati: 75.2 98.3 94.7 88.2 +Inglese_401 somma media ascendente discendente dati: 100.0 95.6 87.1 93.4 @c endfile @end example @@ -22891,7 +22971,7 @@ programma. Semplifica la programmazione, rendendo lo sviluppo di un programma pi@`u gestibile, e rendendo i programmi pi@`u leggibili. -@cindex Kernighan, Brian +@cindex Kernighan, Brian @subentry citazioni di @cindex Plauger, P.J.@: Nel loro autorevole libro del 1976, @cite{Software Tools},@footnote{Purtroppo, a distanza di oltre 35 anni, @@ -23741,26 +23821,26 @@ @c file eg/lib/gettime.awk # Restituisce una stringa nel formato dell'output di date(1) -# Riempie l'argomento del vettore time con valori individuali: -# time["second"] -- secondi (0 - 59) -# time["minute"] -- minuti (0 - 59) -# time["hour"] -- ore (0 - 23) -# time["althour"] -- ore (0 - 12) -# time["monthday"] -- giorno del mese (1 - 31) -# time["month"] -- mese dell'anno (1 - 12) -# time["monthname"] -- nome del mese -# time["shortmonth"] -- nome breve del mese -# time["year"] -- anno modulo 100 (0 - 99) -# time["fullyear"] -- anno completo -# time["weekday"] -- giorno della settimana (domenica = 0) -# time["altweekday"] -- giorno della settimana (luned@`{@dotless{i}} = 0) -# time["dayname"] -- nome del giorno della settimana -# time["shortdayname"] -- nome breve del giorno della settimana -# time["yearday"] -- giorno dell'anno (0 - 365) -# time["timezone"] -- abbreviazione del nome della zona di fuso orario -# time["ampm"] -- designazione di AM o PM -# time["weeknum"] -- numero della settimana, domenica primo giorno -# time["altweeknum"] -- numero della settimana, luned@`{@dotless{i}} primmo giorno +# Riempie l'argomento del vettore ora con valori individuali: +# ora["second"] -- secondi (0 - 59) +# ora["minute"] -- minuti (0 - 59) +# ora["hour"] -- ore (0 - 23) +# ora["althour"] -- ore (0 - 12) +# ora["monthday"] -- giorno del mese (1 - 31) +# ora["month"] -- mese dell'anno (1 - 12) +# ora["monthname"] -- nome del mese +# ora["shortmonth"] -- nome breve del mese +# ora["year"] -- anno modulo 100 (0 - 99) +# ora["fullyear"] -- anno completo +# ora["weekday"] -- giorno della settimana (domenica = 0) +# ora["altweekday"] -- giorno della settimana (luned@`{@dotless{i}} = 0) +# ora["dayname"] -- nome del giorno della settimana +# ora["shortdayname"] -- nome breve del giorno della settimana +# ora["yearday"] -- giorno dell'anno (0 - 365) +# ora["timezone"] -- abbreviazione del nome della zona di fuso orario +# ora["ampm"] -- designazione di AM o PM +# ora["weeknum"] -- numero della settimana, domenica primo giorno +# ora["altweeknum"] -- numero della settimana, luned@`{@dotless{i}} primmo giorno function getlocaltime(ora, ret, adesso, i) @{ @@ -23778,25 +23858,25 @@ # immette i valori, forzando i valori numerici # a essere numerici aggiungendo uno 0 - time["second"] = strftime("%S", adesso) + 0 - time["minute"] = strftime("%M", adesso) + 0 - time["hour"] = strftime("%H", adesso) + 0 - time["althour"] = strftime("%I", adesso) + 0 - time["monthday"] = strftime("%d", adesso) + 0 - time["month"] = strftime("%m", adesso) + 0 - time["monthname"] = strftime("%B", adesso) - time["shortmonth"] = strftime("%b", adesso) - time["year"] = strftime("%y", adesso) + 0 - time["fullyear"] = strftime("%Y", adesso) + 0 - time["weekday"] = strftime("%w", adesso) + 0 - time["altweekday"] = strftime("%u", adesso) + 0 - time["dayname"] = strftime("%A", adesso) - time["shortdayname"] = strftime("%a", adesso) - time["yearday"] = strftime("%j", adesso) + 0 - time["timezone"] = strftime("%Z", adesso) - time["ampm"] = strftime("%p", adesso) - time["weeknum"] = strftime("%U", adesso) + 0 - time["altweeknum"] = strftime("%W", adesso) + 0 + ora["second"] = strftime("%S", adesso) + 0 + ora["minute"] = strftime("%M", adesso) + 0 + ora["hour"] = strftime("%H", adesso) + 0 + ora["althour"] = strftime("%I", adesso) + 0 + ora["monthday"] = strftime("%d", adesso) + 0 + ora["month"] = strftime("%m", adesso) + 0 + ora["monthname"] = strftime("%B", adesso) + ora["shortmonth"] = strftime("%b", adesso) + ora["year"] = strftime("%y", adesso) + 0 + ora["fullyear"] = strftime("%Y", adesso) + 0 + ora["weekday"] = strftime("%w", adesso) + 0 + ora["altweekday"] = strftime("%u", adesso) + 0 + ora["dayname"] = strftime("%A", adesso) + ora["shortdayname"] = strftime("%a", adesso) + ora["yearday"] = strftime("%j", adesso) + 0 + ora["timezone"] = strftime("%Z", adesso) + ora["ampm"] = strftime("%p", adesso) + ora["weeknum"] = strftime("%U", adesso) + 0 + ora["altweeknum"] = strftime("%W", adesso) + 0 return ret @} @@ -24022,8 +24102,8 @@ Non @`e stato necessario aggiungere a @command{gawk} questi criteri di ricerca speciali; il lavoro si pu@`o fare tranquillamente usando @command{awk}, come illustrato nel seguente programma di libreria. @`E strutturato in modo da -chiamare due funzioni fornite dall'utente, @code{a_inizio_file()} e -@code{a_fine_file()}, all'inizio e alla fine di ogni @value{DF}. Oltre a risolvere +chiamare due funzioni fornite dall'utente, @code{beginfile()} e +@code{endfile()}, all'inizio e alla fine di ogni @value{DF}. Oltre a risolvere il problema in sole nove(!) righe di codice, questa soluzione @`e @emph{portabile}; il programma funziona con qualsiasi implementazione di @command{awk}: @@ -24034,7 +24114,7 @@ # Dare all'utente un aggancio per il passaggio # da un file in input a quello successivo # -# L'utente deve fornire le funzioni a_inizio_file() ed a_fine_file() +# L'utente deve fornire le funzioni beginfile() ed endfile() # ciascuna delle quali @`e invocata # quando il file, rispettivamente, # inizia e finisce. @@ -24042,14 +24122,14 @@ @c # Arnold Robbins, arnold@@skeeve.com, Public Domain @c # January 1992 -FILENAME != _nome_file_vecchio @{ - if (_nome_file_vecchio != "") - a_fine_file(_nome_file_vecchio) - _nome_file_vecchio = FILENAME - a_inizio_file(FILENAME) +FILENAME != _oldfilename_ && _filename_ != FILENAME @{ + if (_oldfilename_ != "") + endfile(_oldfilename_) + _oldfilename_ = FILENAME + beginfile(FILENAME) @} -END @{ a_fine_file(FILENAME) @} +END @{ endfile(FILENAME) @} @end example Questo file [transfile.awk] dev'essere caricato prima del programma @@ -24058,30 +24138,30 @@ Questa regola dipende dalla variabile di @command{awk} @code{FILENAME}, che cambia automaticamente per ogni nuovo @value{DF}. Il @value{FN} corrente viene -salvato in una variabile privata, @code{_nome_file_vecchio}. Se @code{FILENAME} non @`e -uguale a @code{_nome_file_vecchio}, inizia l'elaborazioone di un nuovo @value{DF} ed -@`e necessario chiamare @code{a_fine_file()} per il vecchio file. Poich@'e -@code{a_fine_file()} dovrebbe essere chiamato solo se un file @`e stato elaborato, il -programma esegue prima un controllo per assicurarsi che @code{_nome_file_vecchio} non +salvato in una variabile privata, @code{_oldfilename_}. Se @code{FILENAME} non @`e +uguale a @code{_oldfilename_}, inizia l'elaborazioone di un nuovo @value{DF} ed +@`e necessario chiamare @code{endfile()} per il vecchio file. Poich@'e +@code{endfile()} dovrebbe essere chiamato solo se un file @`e stato elaborato, il +programma esegue prima un controllo per assicurarsi che @code{_oldfilename_} non sia la stringa nulla. Il programma assegna poi il valore corrente di -@value{FN} a @code{_nome_file_vecchio} e chiama @code{a_inizio_file()} per il file. -Poich@'e, come tutte le variabili di @command{awk}, @code{_nome_file_vecchio} @`e +@value{FN} a @code{_oldfilename_} e chiama @code{beginfile()} per il file. +Poich@'e, come tutte le variabili di @command{awk}, @code{_oldfilename_} @`e inizializzato alla stringa nulla, questa regola viene eseguita correttamente anche per il primo @value{DF}. Il programma contiene anche una regola @code{END} per completare l'elaborazione per l'ultimo file. Poich@'e questa regola @code{END} viene prima di qualsiasi regola @code{END} contenuta nel programma ``principale'', -@code{a_fine_file()} viene +@code{endfile()} viene chiamata per prima. Ancora una volta, l'utilit@`a di poter avere pi@`u regole @code{BEGIN} ed @code{END} dovrebbe risultare chiara. -@cindex @code{a_inizio_file()} @subentry funzione definita dall'utente -@cindex funzione definita dall'utente @subentry @code{a_inizio_file()} -@cindex @code{a_fine_file()} @subentry funzione definita dall'utente -@cindex funzione definita dall'utente @subentry @code{a_fine_file()} +@cindex @code{beginfile()} @subentry funzione definita dall'utente +@cindex funzione definita dall'utente @subentry @code{beginfile()} +@cindex @code{endfile()} @subentry funzione definita dall'utente +@cindex funzione definita dall'utente @subentry @code{endfile()} Se lo stesso @value{DF} compare due volte di fila sulla riga di comando, -@code{a_fine_file()} e @code{a_inizio_file()} non vengono eseguite alla fine del primo +@code{endfile()} e @code{beginfile()} non vengono eseguite alla fine del primo passaggio e all'inizio del secondo passaggio. La versione seguente risolve il problema: @@ -24089,7 +24169,7 @@ @c file eg/lib/ftrans.awk # ftrans.awk --- gestisce il passaggio da un file dati al successivo # -# L'utente deve fornire le funzioni a_inizio_file() ed a_fine_file() +# L'utente deve fornire le funzioni beginfile() ed endfile() @c endfile @ignore @c file eg/lib/ftrans.awk @@ -24102,12 +24182,12 @@ FNR == 1 @{ if (_filename_ != "") - a_fine_file(_filename_) + endfile(_filename_) _filename_ = FILENAME - a_inizio_file(FILENAME) + beginfile(FILENAME) @} -END @{ a_fine_file(_filename_) @} +END @{ endfile(_filename_) @} @c endfile @end example @@ -24120,8 +24200,8 @@ @sidebar Allora perch@'e @command{gawk} ha @code{BEGINFILE} e @code{ENDFILE}? -Ci si chieder@`a, probabilmente: perch@'e, se le funzioni @code{a_inizio_file()} e -@code{a_fine_file()} possono eseguire il compito, @command{gawk} prevede i +Ci si chieder@`a, probabilmente: perch@'e, se le funzioni @code{beginfile()} e +@code{endfile()} possono eseguire il compito, @command{gawk} prevede i criteri di ricerca @code{BEGINFILE} e @code{ENDFILE}? @@ -24394,7 +24474,7 @@ @} BEGIN @{ - if (Disabilita_variabili) + if (No_command_assign) disable_assigns(ARGC, ARGV) @} @c endfile @@ -24403,7 +24483,7 @@ Il programma va poi eseguito in questo modo: @example -awk -v Disabilita_variabili=1 -f noassign.awk -f vostro_programma.awk * +awk -v No_command_assign=1 -f noassign.awk -f vostro_programma.awk * @end example La funzione esegue un ciclo che esamina ogni argomento. @@ -24411,10 +24491,10 @@ qualsiasi argomento che abbia la forma di un assegnamento di variabile, trasformando cos@`{@dotless{i}} quell'argomento in un @value{FN}. -L'uso di @code{Disabilita_variabili} consente di disabilitare assegnamenti di +L'uso di @code{No_command_assign} consente di disabilitare assegnamenti di variabile dati sulla riga di comando al momento dell'invocazione, assegnando alla variabile un valore @dfn{vero}. -Se non viene impostata la variabile @`e inizializzata a zero (cio@`e +Se non viene impostata, la variabile @`e inizializzata a zero (cio@`e @dfn{falso}), e gli argomenti sulla riga di comando non vengono modificati. @@ -24583,7 +24663,7 @@ # # Initial version: March, 1991 # Revised: May, 1993 -# Opzioni lunghe aggiunte da Greg Minshall, Gennaio 2020 +# Long options added by Greg Minshall, January 2020 @c endfile @end ignore @c file eg/lib/getopt.awk @@ -24652,7 +24732,7 @@ Se l'argomento corrente sulla riga di comando non corrisponde a quest'espressione regolare, vuol dire che non si tratta di un'opzione, e quindi viene terminata l'elaborazione delle opzioni. -A questo punto si controlla se stiamo processando un'opzione corta (che +A questo punto si controlla se stiamo elaborando un'opzione corta (che consiste di una sola lettera), oppure un'opzione lunga (indicata da due trattini, p.es. @samp{--filename}). Se si tratta di un'opzione corta, il programma prosegue cos@`{@dotless{i}}: @@ -25383,7 +25463,6 @@ * December 2010, move to ANSI C definition for main(). */ -/* Per OS/2, non fare nulla. */ #if HAVE_CONFIG_H #include #endif @@ -25411,9 +25490,7 @@ @c endfile @ignore @c file eg/lib/grcat.c -#ifdef ZOS_USS - printf("%s:%ld:", g->gr_name, (long) g->gr_gid); -#else +#ifdef HAVE_STRUCT_GROUP_GR_PASSWD @c endfile @end ignore @c file eg/lib/grcat.c @@ -26171,8 +26248,8 @@ @group function sintassi() @{ - print("sintassi: cut [-f lista] [-d c] [-s] [file...]") > "/dev/stderr" - print("sintassi: cut [-c lista] [file...]") > "/dev/stderr" + print("Uso: cut [-f lista] [-d c] [-s] [file...]") > "/dev/stderr" + print(" cut [-c lista] [file...]") > "/dev/stderr" exit 1 @} @end group @@ -26508,41 +26585,58 @@ @c file eg/prog/egrep.awk # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Revised September 2020 @c endfile @end ignore @c file eg/prog/egrep.awk # Opzioni: # -c conta le righe trovate -# -s silenziosa: genera solo il codice di ritorno -# -v inverte test, successo se @dfn{regexp} non presente +# -e l'argomento @`e un'espressione regolare # -i ignora maiuscolo/minuscolo # -l stampa solo nomi file -# -e espressione da ricercare +# -n aggiungi numeri linea in output +# -q quieto - usa solo il codice di ritorno +# -s silenzioso - non stampa messaggi di errore +# -v inverte test, successo se espression non trovata +# -x l'intera linea deve corrispondere # -# Richiede la funzione getopt() e il programma di libreria -# che gestisce il passaggio da un file dati al successivo +# Richiede la funzione getopt() +# Usa IGNORECASE, BEGINFILE ed ENDFILE +# Chiamare immettendo: gawk -f egrep.awk -- opzioni ... BEGIN @{ - while ((c = getopt(ARGC, ARGV, "ce:svil")) != -1) @{ + while ((c = getopt(ARGC, ARGV, "ce:ilnqsvx")) != -1) @{ if (c == "c") conta_e_basta++ - else if (c == "s") - non_stampare++ - else if (c == "v") - inverti_test++ + else if (c == "e") + criterio_di_ricerca = Optarg else if (c == "i") IGNORECASE = 1 else if (c == "l") solo_nomi_file++ - else if (c == "e") - criterio_di_ricerca = Optarg + else if (c == "n") + numero_riga++ + else if (c == "q") + non_stampare++ + else if (c == "s") + non_stampare_errori++ + else if (c == "v") + inverti_test++ + else if (c == "x") + riga_intera++ else sintassi() @} @c endfile @end example +@noindent +Si noti il commento relativo alla chiamata del programma: +Poich@'e parecchie opzioni possono essere sepcificate anche per +@command{gawk}, occorre immettere @option{--} per far s@`@{dotless{i}} che +@command{gawk} non prosegua nell'analisi delle opzioni. + Nel seguito c'@`e il codice che gestisce il comportamento specifico di @command{egrep}. Se non @`e fornito esplicitamente alcun criterio di ricerca tramite l'opzione @option{-e}, si usa il primo argomento sulla riga di @@ -26559,80 +26653,65 @@ if (criterio_di_ricerca == "") criterio_di_ricerca = ARGV[Optind++] + if (criterio_di_ricerca == "") + sintassi() + for (i = 1; i < Optind; i++) ARGV[i] = "" + if (Optind >= ARGC) @{ ARGV[1] = "-" ARGC = 2 @} else if (ARGC - Optind > 1) - servono_nomi_file++ - -# if (IGNORECASE) -# criterio_di_ricerca = tolower(criterio_di_ricerca) + elabora_nomi_file++ @} @c endfile @end example -Le ultime due righe sono solo dei commenti, in quanto non necessarie in -@command{gawk}. Per altre versioni di -@command{awk}, potrebbe essere necessario utilizzarle come istruzioni -effettive (togliendo il "#"). +La regola @code{BEGINFILE} viene eseguita quando si inizia a +elaborare un nuovo file. In questo caso, essa @`e piuttosto semplice; +inizializza la variabile @code{contatore_file} a zero. +@code{contatore_file} viene incrementata ogni volta che una riga +nel file corrente corrisponde all'espressione di ricerca. -Il prossimo insieme di righe dovrebbe essere decommentato -se non si sta usando @command{gawk}. -Questa regola converte in minuscolo tutti i caratteri della riga in input, -se @`e stata specificata l'opzione @option{-i}.@footnote{Inoltre, qui si -introduce un errore subdolo; se una corrispondenza viene trovata, viene -inviata in output la riga tradotta, non quella originale.} -La regola @`e -commentata perch@'e non @`e necessaria se si usa @command{gawk}: +Qui si implementa anche l'opzione @option{-s}. +Si controlla se @code{ERRNO} @`e stato impostato, +e se l'opzione @option{-s} era stata specificata. +In tal caso, @`e necessario passare al file successivo +[di solito, perch@'e questo file non @`e leggibile]. +Altrimenti @command{gawk} termina l'esecuzione +con un messaggio di errore: @example @c file eg/prog/egrep.awk -#@{ -# if (IGNORECASE) -# $0 = tolower($0) -#@} -@c endfile -@end example - -La funzione @code{a_inizio_file()} @`e chiamata dalla regola in @file{ftrans.awk} -quando ogni nuovo file viene elaborato. In questo caso, non c'@`e molto da fare; -ci si limita a inizializzare una variabile @code{contatore_file} a zero. -@code{contatore_file} serve a ricordare quante righe nel file corrente -corrispondono al criterio di ricerca. -Scegliere come nome di parametro @code{da_buttare} indica che sappiamo che -@code{a_inizio_file()} @`e chiamata con un parametro, ma che noi non siamo -interessati al suo valore: - -@example -@c file eg/prog/egrep.awk -function a_inizio_file(da_buttare) -@{ +BEGINFILE @{ contatore_file = 0 + if (ERRNO && nessun_errore) + nextfile @} @c endfile @end example -La funzione @code{endfile()} viene chiamata dopo l'elaborazione di ogni file. -Ha influenza sull'output solo quando l'utente desidera un contatore del -numero di righe che sono state individuate. @code{non_stampare} @`e vero nel -caso si desideri solo il codice di ritorno. -@code{conta_e_basta} @`e vero se si desiderano solo i contatori -delle righe trovate. @command{egrep} -quindi stampa i contatori solo se -sia la stampa che il conteggio delle righe sono stati abilitati. -Il formato di output deve tenere conto del numero di file sui quali si -opera. Per finire, @code{contatore_file} @`e aggiunto a @code{totale}, in -modo da stabilire qual @`e il numero totale di righe che ha soddisfatto il -criterio di ricerca: +La regola @code{ENDFILE} viene eseguita alla fine dell'elaborazione +di ogni file. Genera dell'output solo quando l'utente richiede un +contatore del numero di righe che sono state trovate corrispondere. + +La variabile @code{non_stampare} @`e vera qualora si chieda di +impostare solo il codice di ritorno. +La variabile @code{conta_e_basta} @`e vera qualora si chieda solo +il numero delle righe che sono state trovare corrispondere. +@command{egrep} quindi stampa il contatore delle corrispondenze +trovate solo se sia la stampa che il conteggio righe sono richieste. +Il formato dell'output dev'essere adattato, a seconda del numero di +file da elaborare. Infine @code{contatore_file} @`e aggiunto +a @code{totale}, in modo da poter stabilire il numero totale di +righe corrispondenti all'espressione cercata: @example @c file eg/prog/egrep.awk -function endfile(file) -@{ +ENDFILE @{ if (! non_stampare && conta_e_basta) @{ - if (servono_nomi_file) + if (elabora_nomi_file) print file ":" contatore_file else print contatore_file @@ -26645,18 +26724,18 @@ @c endfile @end example -Si potrebbero usare i criteri di ricerca speciali @code{BEGINFILE} ed -@code{ENDFILE} -(@pxref{BEGINFILE/ENDFILE}), -ma in quel caso il programma funzionerebbe solo usando @command{gawk}. -Inoltre, questo esempio @`e stato scritto prima che a @command{gawk} venissero -aggiunti i criteri speciali @code{BEGINFILE} ed @code{ENDFILE}. - La regola seguente fa il grosso del lavoro per trovare righe corrispondenti al criterio di ricerca fornito. La variabile -@code{corrisponde} @`e vera se la riga @`e individuata dal criterio di ricerca. -Se l'utente chiede invece le righe che non corrispondono, il senso di -@code{corrisponde} @`e invertito, usando l'operatore @samp{!}. +@code{corrisponde} @'e vera (diversa da zero) se la riga @'e individuata +dal criterio di ricerca. +Se l'utente ha specificato che la riga intera deve corrispondere +(con l'opzione @option{-x}), il codice controlla la condizione +verificando i valori delle variabili @code{RSTART} e @code{RLENGTH}. +Se questi indicano che la corrispondenza non coincide con l'intera +riga, la variabile @code{corrisponde} @`e impostata a zero (falsa). + +Se l'utente chiede invece le righe che @emph{non} corrispondono, +il senso di @code{corrisponde} @`e invertito, usando l'operatore @samp{!}. @code{contatore_file} @`e incrementato con il valore di @code{corrisponde}, che vale uno o zero, a seconda che la corrispondenza sia stata trovata oppure no. Se la riga non corrisponde, l'istruzione @@ -26678,6 +26757,9 @@ @c file eg/prog/egrep.awk @{ corrisponde = ($0 ~ criterio_di_ricerca) + if (corrisponde && riga_intera && (RSTART != 1 || RLENGTH != length())) + corrisponde = 0 + if (inverti_test) corrisponde = ! corrisponde @@ -26691,12 +26773,15 @@ nextfile if (solo_nomi_file) @{ - print nome_file + print FILENAME nextfile @} - if (servono_nomi_file) - print nome_file ":" $0 + if (elabora_nomi_file) + if (numero_riga) + print FILENAME ":" FNR ":" $0 + else + print FILENAME ":" $0 else print @} @@ -26705,7 +26790,8 @@ @end example La regola @code{END} serve a produrre il codice di ritorno corretto. Se -non ci sono corrispondenze, il codice di ritorno @`e uno; altrimenti, @`e zero: +non ci sono corrispondenze, il codice di ritorno @`e uno; +altrimenti, @`e zero: @example @c file eg/prog/egrep.awk @@ -26722,15 +26808,14 @@ @c file eg/prog/egrep.awk function sintassi() @{ - print("sintassi: egrep [-csvil] [-e criterio_di_ricerca] [file ...]")\ + print("Uso:\tegrep [-cilnqsvx] [-e criterio_di_ricerca] [file ...]")\ > "/dev/stderr" - print("\n\tegrep [-csvil] criterio_di_ricerca [file ...]") > "/dev/stderr" + print("\tegrep [-cilnqsvx] criterio_di_ricerca [file ...]") > "/dev/stderr" exit 1 @} @c endfile @end example - @node Programma id @subsection Stampare informazioni sull'utente @@ -26758,27 +26843,27 @@ Comunque, il programma di utilit@`a @command{id} fornisce un output pi@`u comprensibile che non una semplice lista di numeri. -Ecco una versione semplice di @command{id} scritta in @command{awk}. +La versione POSIX di @command{id} prevede numerose opzioni che consentono +di controllare il formato dell'output, come stampare solo gli @dfn{id} +reali, o stampare solo numeri o solo nomi. Inoltre, @`e possibile stampare +informazioni riguardo a un dato utente, invece che solo quelle relative +all'utente corrente. + +Quel che segue @`e una versione del comando POSIX @command{id} scritta in +@command{awk}. +Usa la funzione di libreria @code{getopt()} +(@pxref{Funzione getopt}), +le funzioni di libreria del database che descrive gli utenti +(@pxref{Funzioni Passwd}), Usa le funzioni di libreria che riguardano il database degli utenti (@pxref{Funzioni Passwd}) e le funzioni di libreria che riguardano il database dei gruppi -(@pxref{Funzioni Group}) -contenute -@iftex -nel -@end iftex -@ifnottex -in -@end ifnottex -@ref{Funzioni di libreria}. +(@pxref{Funzioni Group}). Il programma @`e abbastanza semplice. Tutto il lavoro @`e svolto nella regola -@code{BEGIN}. I numeri ID di utente e di gruppo sono ottenuti da -@code{PROCINFO}. -Il codice @`e ripetitivo. La riga nel database degli utenti che descrive -l'ID reale dell'utente @`e divisa in parti, separate tra loro da @samp{:}. -Il nome @`e il primo campo. Un codice analogo @`e usato per l'ID effettivo, e -per i numeri che descrivono i gruppi: +@code{BEGIN}. +Inizia com dei commenti di spiegazioni, una lista di opzioni e infine +una funzione @code{sintassi()} function: @cindex @code{id.awk} (programma) @cindex programma @subentry @code{id.awk} @@ -26786,7 +26871,7 @@ @c file eg/prog/id.awk # id.awk --- implement id in awk # -# Richiede funzioni di libreria per utente e gruppo +# Richiede funzioni di libreria per utente e gruppo e getopt @c endfile @ignore @c file eg/prog/id.awk @@ -26796,131 +26881,411 @@ # Revised February 1996 # Revised May 2014 # Revised September 2014 +# Revised September 2020 @c endfile @end ignore @c file eg/prog/id.awk # l'output @`e: # uid=12(pippo) euid=34(pluto) gid=3(paperino) \ -# egid=5(paperina) groups=9(nove),2(due),1(uno) +# egid=5(paperina) groups=9(nove),2(due),1(uno) + +# Opzioni: +# -G Scrive tutti gli id di gruppo come numeri separati da spazi +# (ruid, euid, groups) +# -g Scrive solo euid come numero +# -n Scrive il nome invece del valore numerico (con -g/-G/-u) +# -r Scrive ruid/rguid incece di euid (id effettivo) +# -u Scrive solo euid (id effettivo) dell'utente, come numero @group -BEGIN @{ - uid = PROCINFO["uid"] - euid = PROCINFO["euid"] - gid = PROCINFO["gid"] - egid = PROCINFO["egid"] +function sintassi() +@{ + printf("Uso:\n" \ + "\tid [user]\n" \ + "\tid −G [−n] [user]\n" \ + "\tid −g [−nr] [user]\n" \ + "\tid −u [−nr] [user]\n") > "/dev/stderr" + + exit 1 +@} @end group +@c endfile +@end example + +Il primo passo @`e quello di scandire le opzioni usando @code{getopt()}, +e di impostare varie variabili di tipo flag a seconda delle opzioni +specificate: + +@example +@c file eg/prog/id.awk +BEGIN @{ + # scansione argomenti specificati + while ((c = getopt(ARGC, ARGV, "Ggnru")) != -1) @{ + if (c == "G") + groupset_only++ + else if (c == "g") + egid_only++ + else if (c == "n") + names_not_groups++ + else if (c == "r") + real_ids_only++ + else if (c == "u") + euid_only++ + else + sintassi() + @} +@c endfile +@end example + +Il passo successivo @`e quello di controllare che non siano state +specificate opzioni mutualmente esclusive. +Le opzioni @option{-G} e @option{-r} sono di questo tipo. +Inoltre, non @`e possibile specificare pi@`u di un nome utente +sulla riga di comando: + +@example +@c file eg/prog/id.awk + if (groupset_only && real_ids_only) + sintassi() + else if (ARGC - Optind > 1) + sintassi() +@c endfile +@end example + +I numeri dell'ID di utente e di gruppo sono ottenuti +dal vettore @code{PROCINFO} dell'utente corrente, oppure +dal database degli utenti e delle password, per un +utente il cui nome sia stato specificato nella riga di +comando. +In quest'ultimo caos, viene impostato il flag @code{real_ids_only}, +poich@'e non @`e possibile stampare informazioni riguardo agli +ID di utente e di gruppo effettivi: + +@example +@c file eg/prog/id.awk + if (ARGC - Optind == 0) @{ + # ottieni informazioni for l'utente corrente + uid = PROCINFO["uid"] + euid = PROCINFO["euid"] + gid = PROCINFO["gid"] + egid = PROCINFO["egid"] + for (i = 1; ("group" i) in PROCINFO; i++) + groupset[i] = PROCINFO["group" i] + @} else @{ + scrivi_info_utente(ARGV[ARGC-1]) + real_ids_only++ + @} +@c endfile +@end example + +Il test contenuto nel ciclo @code{for} @`e degno di nota. +Ogni ulteriore gruppo nel vettore @code{PROCINFO} ha come indice +da @code{"group1"} a @code{"group@var{N}"} per qualche valore di +@var{N} (ovvero, il numero totale di gruppi ulteriori). +Peraltro, non sappiamo in anticipo quanti siano questi gruppi +supplementari. + +Questo ciclo funziona, a partire dal valore uno, concatenando il valore +a @code{"group"}, e usando poi l'istruzione @code{in} per verificare se +tale valore @`e presente nel vettore (@pxref{Visitare elementi}). +Dopo alcune iterazioni, @code{i} supera il valore dell'ultimo gruppo +presente nel vettore, e il ciclo termina. + +Il ciclo funziona correttamente anche se @emph{non} ci sono gruppi +ulteriori; in tal caso la condizione non @`e verificata fin dal +primo tentativo di verifica, e il corpo del ciclo non viene mai +eseguito. + +A questo punto, a seconda delle opzioni, si decide quale +informazione stampare. +Per l'opzione @option{-G} (stampare solo l'insieme dei gruppo), occorre +poi scegliere se stampare nomi o numeri. In entrambi i casi, il programma +esce dopo aver eseguito la stampa: + +@example +@c file eg/prog/id.awk + if (groupset_only) @{ + if (names_not_groups) @{ + for (i = 1; i in groupset; i++) @{ + entry = getgrgid(groupset[i]) + name = ottieni_primo_campo(entry) + printf("%s", name) + if ((i + 1) in groupset) + printf(" ") + @} + @} else @{ + for (i = 1; i in groupset; i++) @{ + printf("%u", groupset[i]) + if ((i + 1) in groupset) + printf(" ") + @} + @} + + print "" # a-capo finale + exit 0 + @} +@c endfile +@end example + +Altrimenti, per l'opzione @option{-g} (solo il group ID effettivo), si +controlla se @`e stata anche specificata l'opzione @option{-r}, nel qual +caso bisogna usare il group ID reale. +Occorre poi scegliere, in base all'opzione @option{-n}, se stampare +nomi o numeri. Anche qui il programma esce dopo aver eseguito la stampa: +@example +@c file eg/prog/id.awk + else if (egid_only) @{ + id = real_ids_only ? gid : egid + if (names_not_groups) @{ + entry = getgrgid(id) + name = ottieni_primo_campo(entry) + printf("%s\n", name) + @} else @{ + printf("%u\n", id) + @} + + exit 0 + @} +@c endfile +@end example + +La funzione @code{ottieni_primo_campo()} estrae il nome del gruppo dalla +descrizione del group ID stesso, contenuta nel database dei gruppi. + +Una logica simile viene seguita per l'opzione @option{-u} +(solo user ID effettivo), combinata con le opzioni @option{-r} e @option{-n}: + +@example +@c file eg/prog/id.awk + else if (euid_only) @{ + id = real_ids_only ? uid : euid + if (names_not_groups) @{ + entry = getpwuid(id) + name = ottieni_primo_campo(entry) + printf("%s\n", name) + @} else @{ + printf("%u\n", id) + @} + + exit 0 + @} +@c endfile +@end example + +A questo punto non abbiamo ancora finito, e quindi stampiamo +l'output normale, di default, a riguardo dell'utente corrente +o dell'utente che era stato specificato sulla riga di comando. +Iniziamo a stmpare l'user ID reale: + +@example +@c file eg/prog/id.awk printf("uid=%d", uid) pw = getpwuid(uid) stampa_primo_campo(pw) +@c endfile +@end example -@group - if (euid != uid) @{ +La funzione @code{stampa_primo_campo()} stampa il nome dell'utente +dalla descrizione contenuta nel file password, racchiusa tra +parentesi. Vedere qui sotto. +Poi si stampa l'user ID effettivo: + +@example +@c file eg/prog/id.awk + if (euid != uid && ! real_ids_only) @{ printf(" euid=%d", euid) pw = getpwuid(euid) -@end group -@group stampa_primo_campo(pw) @} -@end group +@c endfile +@end example + +Una logica simile si applica ai group ID reale ed effettivo: +@example +@c file eg/prog/id.awk printf(" gid=%d", gid) pw = getgrgid(gid) stampa_primo_campo(pw) - if (egid != gid) @{ + if (egid != gid && ! real_ids_only) @{ printf(" egid=%d", egid) pw = getgrgid(egid) stampa_primo_campo(pw) @} +@c endfile +@end example - for (i = 1; ("group" i) in PROCINFO; i++) @{ +Per finire, stampiamo l'insieme dei gruppi e l'a-capo finale: + +@example +@c file eg/prog/id.awk + for (i = 1; i in groupset; i++) @{ if (i == 1) printf(" gruppi=") - group = PROCINFO["group" i] + group = groupset[i] printf("%d", group) pw = getgrgid(group) stampa_primo_campo(pw) - if (("group" (i+1)) in PROCINFO) + if ((i + 1) in groupset) printf(",") @} print "" @} +@c endfile +@end example + +La funzione @code{ottieni_primo_campo()} estrae il primo campo +da una riga del file delle password o da quello dei gruppi, +perch@'e venga usato come nome utente o nome del gruppo. +I campi in questi file sono separati da caratteri @samp{:}: -function stampa_primo_campo(str, a) +@example +@c file eg/prog/id.awk +function ottieni_primo_campo(str, a) @{ if (str != "") @{ split(str, a, ":") - printf("(%s)", a[1]) + return a[1] @} @} @c endfile @end example -Il test incluso nel ciclo @code{for} @`e degno di nota. -Ogni ulteriore gruppo nel vettore @code{PROCINFO} ha come indice da -@code{"group1"} a @code{"group@var{N}"} dove il numero -@var{N} @`e il numero totale di gruppi ulteriori). -Tuttavia, non si sa quanti di questi gruppi ci siano per un dato utente. +Questa funzione @`e poi usata dalla funzione @code{stampa_primo_campo()} +per stampare il nome trovato, racchiuso tra parentesi: -Questo ciclo inizia da uno, concatena il valore di ogni iterazione con -@code{"group"}, e poi usando l'istruzione @code{in} verifica se quella -chiave @`e nel vettore (@pxref{Visitare elementi}). Quando @code{i} @`e -incrementato oltre l'ultimo gruppo presente nel vettore, il ciclo termina. +@example +@c file eg/prog/id.awk +function stampa_primo_campo(str) +@{ + first = ottieni_primo_campo(str) + printf("(%s)", first) +@} +@c endfile +@end example + +Queste due funzioni semplicemente contengono delle istruzioni che vengono +usate pi@`u volte, e ci@`o rende il programma pi@`u corto e pi@`u leggibile. +In particolare, l'aver spostato il controllo se una stringa @`e la stringa +nulla nella funzione @code{ottieni_primo_campo()} fa risparmiare parecchie +righe di istruzioni. + +Da ultimo, la funzione @code{scrivi_info_utente()} si procura le +informazioni su utente, gruppo e gruppi di appartenenza per l'utente +indicato nel comando. Il codice @`e abbastanza semplice e si limita +a uscire dal programma se l'utente in questione non esiste: + +@example +@c file eg/prog/id.awk +function scrivi_info_utente(user, + pwent, fields, groupnames, grent, groups, i) +@{ + pwent = getpwnam(user) + if (pwent == "") @{ + printf("id: '%s': utente inesistente\n", user) > "/dev/stderr" + exit 1 + @} + + split(pwent, fields, ":") + uid = fields[3] + 0 + gid = fields[4] + 0 +@c endfile +@end example -Il ciclo funziona correttamente anche se @emph{non} ci sono ulteriori -gruppi; in quel caso la condizione risulta falsa fin dal primo controllo, e -il corpo del ciclo non viene mai eseguito. +Procurarsi l'insieme dei gruppi @`e un po' complicato. +La routine di libreria @code{getgruser()} restituisce una lista +di @emph{nomi} di gruppo. Tali nomi vanno passati in rassegna +e convertiti di nuovo in numeri di gruppo, in modo che il resto +del programma funzioni come ci si aspetta che faccia: -La funzione @code{stampa_primo_campo()} semplicemente incapsula quelle parti di -codice che vengono usate ripetutamente, rendendo il programma pi@`u conciso e -ordinato. -In particolare, inserendo in questa funzione il test per la stringa nulla -consente di risparmiare parecchie righe di programma. +@example +@ignore +@c file eg/prog/id.awk +@c endfile +@end ignore +@c file eg/prog/id.awk + groupnames = getgruser(user) + split(groupnames, groups, " ") + for (i = 1; i in groups; i++) @{ + grent = getgrnam(groups[i]) + split(grent, fields, ":") + groupset[i] = fields[3] + 0 + @} +@} +@c endfile +@end example @node Programma split @subsection Suddividere in pezzi un file grosso -@c FIXME: One day, update to current POSIX version of split - @cindex file @subentry suddividere @cindex @code{split} (programma di utilit@`a) @cindex programma di utilit@`a @subentry @code{split} -Il programma @command{split} divide grossi file di testo in pezzi pi@`u piccoli. -La sua sintassi @`e la seguente:@footnote{Questo @`e la sintassi tradizionale. -La versione POSIX del comando ha una sintassi differente, ma per lo scopo di -questo programma @command{awk} la cosa non ha importanza.} +Il programma di utilit@`a @command{split} divide grossi file di testo +in pezzi pi@`u piccoli. +La sintassi, che @`e quella prevista dallo standard POSIX per +@command{split}, @`e la seguente: @display -@command{split} [@code{-@var{contatore}}] [@var{file}] [@var{prefisso}] +@command{split} [@option{-l} @var{contatore}] [@option{-a} @var{lunghezza-suffisso}] [@var{file} [@var{nome-output-file}]] +@command{split} @option{-b} @var{N}[@code{k}|@code{m}]] [@option{-a} @var{lunghezza-suffisso}] [@var{file} [@var{nome-output-file}]] @end display Per default, -i file di output avranno nome @file{xaa}, @file{xab}, e cos@`{@dotless{i}} via. Ogni file -contiene 1.000 righe, con la probabile -eccezione dell'ultimo file. Per -cambiare il numero di righe in ogni file, va indicato un numero sulla riga -di comando, preceduto da un segno meno (p.es., @samp{-500} per file con 500 -righe ognuno invece che 1.000). Per modificare i nomi dei file di output in -qualcosa del tipo -@file{miofileaa}, @file{miofileab}, e cos@`{@dotless{i}} via, va indicato un argomento -ulteriore che specifica il prefisso del @value{FN}. - -Ecco una versione di @command{split} in @command{awk}. Usa le funzioni -@code{ord()} e @code{chr()} descritte nella -@ref{Funzioni ordinali}. - -Il programma dapprima imposta i suoi valori di default, e poi controlla che -non siano stati specificati troppi argomenti. Quindi esamina gli argomenti -uno alla volta. Il primo -argomento potrebbe essere un segno meno seguito da un numero. Poich@'e il -numero in questione pu@`o apparire negativo, lo si fa diventare positivo, e -viene usato per contare le righe. Il nome del @value{DF} @`e per ora ignorato -e l'ultimo argomento @`e usato come prefisso per i @value{FNS} in output: +i file di output avranno nome @file{xaa}, @file{xab}, e cos@`{@dotless{i}} via. +Ogni file contiene 1.000 righe, con la probabile eccezione dell'ultimo file. + +Il programma @command{split} si @`e evoluto col passare del tempo, e la +corrente versione POSIX @`e pi@`u complessa della version Unix originale. +Le opzioni, e quello che specificano, sono dettagliate di seguito: + +@table @asis +@item @option{-a} @var{lunghezza-suffisso} +Chiede di usare @var{lunghezza-suffisso} caratteri di suffisso. +Per esempio, se @var{lunghezza-suffisso} +vale quattro, i nomi dei file in output andranno da @file{xaaaa} a @file{xzzzz}. + +@item @option{-b} @var{N}[@code{k}|@code{m}]] +Invece di chiedere che un file contenga un dato numero di righe, +ogni file dovrebbe essere lungo (al massimo) @var{N} byte. +Se si specifica la lettera @samp{k}, il numero @var{N} viene +moltiplicato per 1.024, ossia diviene il numero di kilobyte. +Se si specifica la lettera @samp{m}, il numero @var{N} viene +moltiplicato per 1.048.576 (@math{1.024 @value{PER} 1.024}) +ossia diviene il numero di megabyte. +(Quest'opzione @`e mutuamente esclusiva con l'opzione @option{-l}). + +@item @option{-l} @var{contatore} +Ogni file dovrebbe avere al massimo @var{contatore} righe, al posto del +valore di default, che @`e 1.000. +(Quest'opzione @`e mutuamente esclusiva con l'opzione @option{-b}). +@end table + +Se specificato, @var{file} @`e il nome del file in input da leggere. +Altrimenti viene letto lo standard input. +Se specificato, @var{nome-output-file} @`e il prefisso da anteporre +ai nomi dei file in output, invece di usare @samp{x}. + +Per utilizzare l'opzione @option{-b} di @command{split}, +@command{gawk} dovrebbe essere chiamato specificando anche +per @command{gawk} l'opzione @option{-b} (@pxref{Opzioni}), +oppure con la variabile di ambiente @env{LC_ALL} impostata a @samp{C}, +in modo che ogni byte in input sia considerato come un carattere a s@'e +stante.@footnote{Per usare l'opzione @option{-b} due volte occorre +separare le opzioni di @command{gawk} da quelle del programma. +Per esempio: +@samp{gawk -f getopt.awk -f split.awk -b -- -b 42m file-molto-grosso.txt split-}.} + +Ecco un'implementazione di @command{split} in @command{awk}. Viene utilizzata +la funzione @code{getopt()} presentata in @ref{Funzione getopt}. + +Il programma inizia con un commento descrittivo e poi con la +funzione @code{sintassi()} che ne descrive le opzioni: @cindex @code{split.awk} (programma) @cindex programma @subentry @code{split.awk} @@ -26928,7 +27293,7 @@ @c file eg/prog/split.awk # split.awk --- comando split scritto in awk # -# Richiede le funzioni di libreria ord() e chr() +# Richiede la funzione di libreria getopt() @c endfile @ignore @c file eg/prog/split.awk @@ -26936,103 +27301,295 @@ # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 # Revised slightly, May 2014 +# Rewritten September 2020 @c endfile @end ignore @c file eg/prog/split.awk -# sintassi: split [-contatore] [file] [nome_in_output] +function sintassi() +@{ + print("Uso: split [-l contatore] [-a lunghezza-suffisso] [file [nome-output-file]]") > "/dev/stderr" + print(" split [-b N[k|m]] [-a lunghezza-suffisso] [file [nome-output-file]]") > "/dev/stderr" + exit 1 +@} +@c endfile +@end example +Poi, in una regola @code{BEGIN}, si impostano i valore di default e si +analizzano gli argomenti. +In seguito si inizializzano le strutture di dati da usare per generare +il suffisso, da @samp{aa@dots{}} a @samp{zz@dots{}}. Infine si imposta +il nome del primo file di output: + +@example +@c file eg/prog/split.awk BEGIN @{ - outfile = "x" # default - contatore = 1000 - if (ARGC > 4) - sintassi() + # Impostazione valori di default: + Lunghezza_suffisso = 2 + Contatore_righe = 1000 + Contatore_byte = 0 + Outfile = "x" - i = 1 - if (i in ARGV && ARGV[i] ~ /^-[[:digit:]]+$/) @{ - contatore = -ARGV[i] - ARGV[i] = "" - i++ + analizza_argomenti() + + inizializza_suffisso() + + Output_file = (Outfile calcola_suffisso()) +@} +@c endfile +@end example + +L'analisi degli argomenti @`e semplice. Il programma segue la nostra +convenzione (@pxref{Nomi di variabili di libreria}) di far iniziare +con una lettera maiuscola i nomi di importanti variabili globali: + +@example +@c file eg/prog/split.awk +function analizza_argomenti( i, c, l, modificatore) +@{ + while ((c = getopt(ARGC, ARGV, "a:b:l:")) != -1) @{ + if (c == "a") + Lunghezza_suffisso = Optarg + 0 + else if (c == "b") @{ + Contatore_byte = Optarg + 0 + Contatore_righe = 0 + + l = length(Optarg) + modificatore = substr(Optarg, l, 1) + if (modificatore == "k") + Contatore_byte *= 1024 + else if (modificatore == "m") + Contatore_byte *= 1024 * 1024 + @} else if (c == "l") @{ + Contatore_righe = Optarg + 0 + Contatore_byte = 0 + @} else + sintassi() @} - # testa argv nel caso che si legga da stdin invece che da file - if (i in ARGV) - i++ # salta nome file-dati -@group - if (i in ARGV) @{ - outfile = ARGV[i] + + # Togli le opzioni dalla riga di comando + for (i = 1; i < Optind; i++) ARGV[i] = "" + + # Controlla se @`e stato specificato un prefisso + if (ARGV[Optind]) @{ + Optind++ + + # Controlla se il prefisso @`e differente + if (ARGV[Optind]) @{ + Outfile = ARGV[Optind] + ARGV[Optind] = "" + + if (++Optind < ARGC) + sintassi() + @} @} -@end group -@group - s1 = s2 = "a" - out = (outfile s1 s2) @} -@end group @c endfile @end example -La regola seguente fa il grosso del lavoro. @code{contatore_t} -(contatore temporaneo) tiene conto di -quante righe sono state stampate sul file di output finora. Se questo -numero supera il valore di @code{contatore}, @`e ora di chiudere il file -corrente e di iniziare a scriverne uno nuovo. -Le variabili @code{s1} e @code{s2} sono usate per creare i suffissi -da apporre a @value{FN}. Se entrambi arrivano al valore @samp{z}, il file -@`e troppo grosso. Altrimenti, @code{s1} passa alla successiva lettera -dell'alfabeto e @code{s2} ricomincia da @samp{a}: +Gestire il valore del suffisso da apporre a @code{nome-output-file} +@`e un problema interessante. Per un suffisso di una data lunghezza, +diciamo tre, i valori partono da @samp{aaa}, @samp{aab}, @samp{aac}, +etc., fino ad arrivare a @samp{zzx}, @samp{zzy}, e infine @samp{zzz}. +Ci sono due aspetti importanti da considerare qui: + +@itemize @bullet +@item +Si deve essere in grado di generare facilmente tali suffissi e in +particolare di gestire facilmente lo ``scorrimento''; per esempio, +passare da @samp{abz} ad @samp{aca}. + +@item +Si deve poter determinare se abbiamo utilizzato tutti i prefissi, +in modo che, nel caso ci siano ulteriori dati (da suddividere) si +possa stampare un messaggio di errore e terminare il programma. +Il trucco @`e di gestire una tale situazione @emph{dopo} aver usato +l'ultimo suffisso disponibile, e non quando viene generato l'ultimo +suffisso stesso. +@end itemize + +Il calcolo @`e gestito da @code{calcola_suffisso()}. +Tale funzione @`e chiamata ogni volta che si deve aprire un nuovo file. + +Il flusso della funzione @`e piuttosto tortuoso, perch@'e si vuole generare +diciamo fino a @samp{zzzz} e utilizzarlo, ed emettere un messaggio di errore +solo dopo che tutti i suffissi di @code{nome-output-file} sono stati +utilizzati. I passi logici da seguire sono questi: + +@enumerate 1 +@item +Generare il suffisso, salvandolo in @code{risultato} per poi +restituirlo. +Per far ci@`o, si usa il vettore ausiliario @code{Indice_suff} +che contiene un elemento per ogni lettera nel suffisso. +Ogni elemento @`e un numero +compreso fra 1 e 26, che fa da indice in una stringa che contiene +tutte le lettere minuscole dell'alfabeto inglese. +Il vettore @`e inizializzato dalla funzione @code{inizializza_suffisso()}. +Il @code{risultato} @`e costruito una lettera alla volta, usando +la funzione @code{substr()}. + +@item +Preparare le strutture di dati per la prossima volta in cui +@code{calcola_suffisso()} sar@`a chiamato. Per fare ci@`o, +si esegue un ciclo sui valori di @code{Indice_suff}, procedendo +@emph{all'indietro}. +Se l'elemento corrente @`e minore di 26, @`e incrementato, e il ciclo +si interrompe (@samp{abq} diventa @samp{abr}). Altrimenti, all'elemento +viene di nuovo assegnato il valore 1, e si passa all'elemento precedente +nella lista (per passare da @samp{abz} ad @samp{aca}). +Quindi, il vettore @code{Indice_suff} @`e sempre ``un passo avanti'' rispetto +al suffisso di @code{nome-output-file} da restituire. + +@item +Controllare se abbiamo superato l'ultimo dei possibili valori per +il suffisso di @code{nome-output-file}. +Se la variabile @code{Raggiunta_la_fine} @`e impostata a "vero", si stampa +un messaggio e si termina il programma. +Altrimenti, si controlla se @code{Indice_suff} descrive un suffisso in cui +tutte le lettere sono delle @samp{z}. +Se @`e questo il caso, stiamo per restituire l'ultimo suffisso possibile, +si deve impostare a "vero" la variabile @code{Raggiunta_la_fine}, in modo che +la @emph{prossima} chiamata a @code{calcola_suffisso()} faccia terminare +il programma con un errore. +@end enumerate + +Fisicamente, questi passi nella funzione sono nell'ordine 3, 1, 2: -@c else on separate line here for page breaking @example @c file eg/prog/split.awk +function calcola_suffisso( i, risultato, alfabeto) @{ - if (++contatore_t > contatore) @{ - close(out) - if (s2 == "z") @{ - if (s1 == "z") @{ - printf("split: %s @`e troppo grosso da suddividere\n", - nome_file) > "/dev/stderr" - exit 1 - @} - s1 = chr(ord(s1) + 1) - s2 = "a" - @} -@group - else - s2 = chr(ord(s2) + 1) -@end group - out = (outfile s1 s2) - contatore_t = 1 + # Passo logico 3 + if (Raggiunta_la_fine) @{ + printf("split: troppi file!\n") > "/dev/stderr" + exit 1 + @} else if (all_ultimo_file()) + Raggiunta_la_fine = 1 # Errore quando si vuol superare 'zzz' + + # Passo logico 1 + risultato = "" + alfabeto = "abcdefghijklmnopqrstuvwxyz" + for (i = 1; i <= Lunghezza_suffisso; i++) + risultato = risultato substr(alfabeto, Indice_suff[i], 1) + + # Passo logico 2 + for (i = Lunghezza_suffisso; i >= 1; i--) @{ + if (++Indice_suff[i] > 26) @{ + Indice_suff[i] = 1 + @} else + break @} - print > out + + return risultato @} @c endfile @end example -@noindent -La funzione @code{sintassi()} stampa solo un messaggio di errore ed esce: +Il vettore @code{Indice_suff} e la variabile @code{Raggiunta_la_fine} +sono inizializzate da @code{inizializza_suffisso()}: @example @c file eg/prog/split.awk -function sintassi() +function inizializza_suffisso( i) @{ - print("sintassi: split [-num] [file] [nome_in_output]") > "/dev/stderr" - exit 1 + for (i = 1; i <= Lunghezza_suffisso; i++) + Indice_suff[i] = 1 + + Raggiunta_la_fine = 0 @} @c endfile @end example -Questo programma @`e un po' approssimativo; conta sul fatto che @command{awk} chiuda -automaticamente l'ultimo file invece di farlo in una regola @code{END}. -Un altro presupposto del programma @`e che le lettere dell'alfabeto siano -in posizioni consecutive nella codifica in uso, il che non @`e vero per i -sistemi che usano la codifica EBCDIC. +La funzione @code{all_ultimo_file()} restituisce "vero" se @code{Indice_suff} +descrive un suffisso in cui tutti i caratteri sono @samp{z}, e lo fa +controllando che tutti gli elementi del vettore valgano 26: -@ifset FOR_PRINT -Si potrebbe pensare a come eliminare l'uso di -@code{ord()} e @code{chr()}; la cosa si pu@`o fare in modo tale da risolvere -anche il problema posto dalla codifica EBCDIC. -@end ifset +@example +@c file eg/prog/split.awk +function all_ultimo_file( i, se_ultimo) +@{ + se_ultimo = 1 + for (i = 1; i <= Lunghezza_suffisso; i++) @{ + se_ultimo = se_ultimo && (Indice_suff[i] == 26) + @} + + return se_ultimo +@} +@c endfile +@end example +Il lavoro vero e proprio di dividere il file in input @`e fatto dalle due +regole seguenti. +Poich@'e dividere contando le righe e dividere contando i byte sono due +opzioni mutuamente esclusive, lo si fa semplicemente usando due regole, +una per quando @code{Contatore_righe} @`e maggiore di zero, e l'altra +per quando @code{Contatore_byte} @`e maggiore di zero. + +La variabile @code{righe_totali} conta quante righe sono state elaborate +finora. Quando il suo valore supera @code{Contatore_righe}, occorre +chiudere il file precedente e passare ad uno nuovo: + +@example +@c file eg/prog/split.awk +Contatore_righe > 0 @{ + if (++righe_totali > Contatore_righe) @{ + close(Output_file) + Output_file = (Outfile calcola_suffisso()) + righe_totali = 1 + @} + print > Output_file +@} +@c endfile +@end example + +La regola per elaborare i byte @`e pi@`u complessa. Poich@'e @`e molto +probabile che le righe siano di lunghezza variabile, il limite indicato +da @code{Contatore_byte} pu@`o essere raggiunto all'interno di uno dei +record in input. In tal caso @command{split} deve scrivere la parte +iniziale del record in input, fino a @code{Contatore_byte} +byte, chiudere il file, aprirne uno nuovo e scrivere il resto del record +sul file nuovo. +Il codice che segue fa esattamente tutto ci@`o: + +@example +@c file eg/prog/split.awk +Contatore_byte > 0 @{ + # `+ 1' @`e per il carattere di fine riga che va aggiunto + if (righe_totali + length($0) + 1 > Contatore_byte) @{ # Supera il limite + # Calcola byte a inizio record + byte_iniziali = Contatore_byte - righe_totali + + # Scrivi i byte iniziali + printf("%s", substr($0, 1, byte_iniziali)) > Output_file + + # Chiudi il vecchio file, aprine uno nuovo + close(Output_file) + Output_file = (Outfile calcola_suffisso()) + + # Prepara i primi byte per il nuovo file + $0 = substr($0, byte_iniziali + 1) # Byte finali del record + righe_totali = 0 + @} + + # Scrivi record intero o la parte finale restante + righe_totali += length($0) + 1 + print > Output_file +@} +@c endfile +@end example + +Infine, la regola @code{END} fa la manutenzione finale, chiudendo l'ultimo +file in output: + +@example +@c file eg/prog/split.awk +END @{ + close(Output_file) +@} +@c endfile +@end example @node Programma tee @subsection Inviare l'output su pi@`u di un file @@ -27099,7 +27656,7 @@ ARGC-- @} if (ARGC < 2) @{ - print "sintassi: tee [-a] file ..." > "/dev/stderr" + print "Uso: tee [-a] file ..." > "/dev/stderr" exit 1 @} ARGV[1] = "-" @@ -27166,8 +27723,6 @@ @node Programma uniq @subsection Stampare righe di testo non duplicate -@c FIXME: One day, update to current POSIX version of uniq - @cindex stampare @subentry righe di testo non duplicate @cindex testo @subentry stampare @subentry righe non duplicate di @cindex @command{uniq} (programma di utilit@`a) @@ -27178,7 +27733,7 @@ nome. @command{uniq} ha diverse opzioni. La sintassi @`e la seguente: @display -@command{uniq} [@option{-udc} [@code{-@var{n}}]] [@code{+@var{n}}] [@var{file_input} [@var{file_output}]] +@command{uniq} [@option{-udc} [@code{-f @var{n}}] [@code{-s @var{n}}]] [@var{file_input} [@var{file_output}]] @end display Le opzioni per @command{uniq} sono: @@ -27194,14 +27749,14 @@ Contatore righe. Quest'opzione annulla le opzioni @option{-d} e @option{-u}. Sia le righe ripetute che quelle non ripetute vengono contate. -@item -@var{n} +@item -f @var{n} Salta @var{n} campi prima di confrontare le righe. La definizione di campo @`e simile al default di @command{awk}: caratteri non bianchi, separati da sequenze di spazi e/o TAB. -@item +@var{n} +@item -s @var{n} Salta @var{n} caratteri prima di confrontare le righe. Eventuali campi -specificati con @samp{-@var{n}} sono saltati prima. +specificati con @option{-f} sono saltati prima. @item @var{file_input} I dati sono letti dal file in input specificato sulla riga di comando, invece @@ -27222,23 +27777,7 @@ (@pxref{Funzione join}). Il programma inizia con una funzione @code{sintassi()} e poi con una breve -spiegazione delle opzioni e del loro significato, sotto forma di commenti. -La regola @code{BEGIN} elabora gli argomenti della riga di comando e le -opzioni. Viene usato un artificio per poter impiegare @code{getopt()} con -opzioni della forma @samp{-25}, -trattando quest'opzione come la lettera di opzione @samp{2} con -l'argomento @samp{5}. Se si specificano due o pi@`u cifre (@code{Optarg} -sembra essere numerico), @code{Optarg} @`e concatenato con la cifra che -costituisce l'opzione e poi al risultato @`e addizionato zero, per trasformarlo -in un numero. Se c'@`e solo una cifra nell'opzione, @code{Optarg} non @`e -necessario. In tal caso, @code{Optind} dev'essere decrementata, in modo che -@code{getopt()} la elabori quando viene nuovamente richiamato. Questo codice -@`e sicuramente un po' intricato. - -Se non sono specificate opzioni, per default si stampano sia le righe -ripetute che quelle non ripetute. Il file di output, se specificato, @`e -assegnato a @code{file_output}. In precedenza, @code{file_output} @`e -inizializzato allo standard output, @file{/dev/stdout}: +spiegazione delle opzioni e del loro significato, sotto forma di commenti: @cindex @code{uniq.awk} (programma) @cindex programma @subentry @code{uniq.awk} @@ -27255,26 +27794,67 @@ # # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Updated August 2020 to current POSIX @c endfile @end ignore @c file eg/prog/uniq.awk function sintassi() @{ - print("sintassi: uniq [-udc [-n]] [+n] [ in [ out ]]") > "/dev/stderr" + print("Uso: uniq [-udc [-f campi]] [-s caratteri] [ in [ out ]]") > "/dev/stderr" exit 1 @} # -c contatore di righe. prevale su -d e -u # -d solo righe ripetute # -u solo righe non ripetute -# -n salta n campi -# +n salta n caratteri, salta prima eventuali campi +# -f -n salta n campi +# -s -n salta n caratteri, salta prima eventuali campi +@c endfile +@end example + +Lo standard POSIX per il comando @command{uniq} consente che le opzioni +inizino con @samp{+} come pure con @samp{-}. Una regola iniziale +@code{BEGIN} scorre gli argomenti della riga di comando e sostituisce +ogni @samp{+} iniziale con @samp{-} in modo che la funzione @code{getopt()} +possa scandire le opzioni: + +@example +@c file eg/prog/uniq.awk +# Dal 2020, '+' pu@`o essere usato come carattere iniziale per +# specificare un'opzione, in aggiunta a '-'. +# L'utilizzo, precedentemente consentito, di -N per saltare dei campi +# e di +N per saltare dei caratteri, non @`e pi@`u ammesso, e non @`e +# supportato da questa versione. BEGIN @{ + # Converte + a - in modo che getopt possa gestire le opzioni + for (i = 1; i < ARGC; i++) @{ + first = substr(ARGV[i], 1, 1) + if (ARGV[i] == "--" || (first != "-" && first != "+")) + break + else if (first == "+") + # Rimpiazza "+" con "-" + ARGV[i] = "-" substr(ARGV[i], 2) + @} +@} +@c endfile +@end example + +La successiva regola @code{BEGIN} gestisce gli argomenti e le opzioni +specificate sulla riga di comando. +Se non @`e specificata alcuna opzione, vengono usate quelle di default, +che stampano sia le righe ripetute che quelle non ripetute. +Il file di output, se specificato, @`e assegnato alla variabile +@code{g}. In precedenza, @code{file_output} viene inizializzata +allo standard output, @file{/dev/stdout}: + +@example +@c file eg/prog/uniq.awk +BEGIN @{ contatore = 1 file_output = "/dev/stdout" - opts = "udc0:1:2:3:4:5:6:7:8:9:" + opts = "udcf:s:" while ((c = getopt(ARGC, ARGV, opts)) != -1) @{ if (c == "u") solo_non_ripetute++ @@ -27282,26 +27862,14 @@ solo_ripetute++ else if (c == "c") conta_record++ - else if (index("0123456789", c) != 0) @{ - # getopt() richiede argomenti per le opzioni - # questo consente di gestire cose come -5 - if (Optarg ~ /^[[:digit:]]+$/) - contatore_file = (c Optarg) + 0 - else @{ - contatore_file = c + 0 - Optind-- - @} - @} else + else if (c == "f") + contatore_file = Optarg + 0 + else if (c == "s") + contatore_caratteri = Optarg + 0 + else sintassi() @} -@group - if (ARGV[Optind] ~ /^\+[[:digit:]]+$/) @{ - conta_caratteri = substr(ARGV[Optind], 2) + 0 - Optind++ - @} -@end group - for (i = 1; i < Optind; i++) ARGV[i] = "" @@ -27440,39 +28008,101 @@ sarebbe stato un po' pi@`u semplice da comprendere. @ifset FOR_PRINT -La logica per scegliere quali righe stampare rappresenta una @dfn{macchina a -stati}, che @`e ``un dispositivo che pu@`o trovarsi in una tra un dato numero di -condizioni stabili, a seconda della sua condizione precedente e del valore -corrente dei suoi input.''@footnote{Questa @`e la definizione trovata -cercando @code{define: state machine} in Google.} +@cindex Kernighan, Brian @subentry citazioni di +La logica per scegliere quali righe stampare rappresenta una +@dfn{macchina a stati}, +che @`e ``un dispositivo che pu@`o trovarsi in una tra un dato numero +di condizioni stabili, a seconda della sua condizione precedente e del valore +corrente dei suoi input.''@footnote{Questa @`e la definizione data in +@uref{https://www.lexico.com/en/definition/state_machine}.} Brian Kernighan suggerisce che -``un approccio alternativo alle macchine a stati @`e quello di mettere l'input -in un vettore, e poi usare gli indici. @`E quasi sempre pi@`u facile da -programmare e, per molti input in cui si pu@`o usare questo metodo, -altrettanto veloce.'' Si consideri come riscrivere la logica di questo -programma per seguite questo suggerimento. +``un approccio alternativo alle macchine a stati @`e di leggere tutto l'input +e metterlo in un vettore, e poi usare l'indicizzazione. @`E quasi sempre pi@`u +facile da programmare e, per la maggior parte degli input in cui si pu@`o +usare, altrettanto veloce in esecuzione.'' Riscrivere la logica del +programma seguendo questa indicazione. @end ifset - @node Programma wc @subsection Contare cose -@c FIXME: One day, update to current POSIX version of wc - -@cindex contare -@cindex input @subentry contare elementi nel +@cindex contare parole, righe, caratteri e byte +@cindex input @subentry contare elementi in @cindex parole @subentry contare le @cindex caratteri @subentry contare i @cindex righe @subentry contare le +@cindex byte @subentry contare i @cindex @command{wc} (programma di utilit@`a) @cindex programma di utilit@`a @subentry @command{wc} Il programma di utilit@`a @command{wc} (@dfn{word count}, contatore di parole) -conta righe, parole, e caratteri in uno o pi@`u file in input. La sua sintassi -@`e la seguente: +conta righe, parole, caratteri e byte in uno o pi@`u file in input. + +@menu +* Byte vs. Caratteri:: Moderni insiemi di caratteri. +* Usare le estensioni:: Una breve introduzione alle estensioni. +* Programmma @command{wc}:: Codice per @file{wc.awk}. +@end menu + +@node Byte vs. Caratteri +@subsubsection Moderni insiemi di caratteri + +Agli inizi dell'era dei computer, un solo byte era usato per contenere +un carattere. Gli insiemi di caratteri pi@`u comuni erano ASCII ed EBCDIC, +ognuno dei quali permetteva di rappresentare tutte le lettere della lingua +inglese, maiuscole e minuscole, i 10 numeri indo-arabi, da 0 a 9, e un +certo numero di altri caratteri di controllo e di interpunzione. + +Oggi, l'insieme di caratteri pi@`u utilizzato @`e Unicode (di cui l'originale +ASCII @`e un piccolo sottoinsieme). Unicode permette di rappresentare +decine di migliaia di caratteri differenti (chiamati @dfn{code points}, +punti di codice), che sono usati nella maggior parte dei linguaggi umani +esistenti (vivi e morti) e in un certo numero di linguaggi non umani (come il +Klingon e il linguaggio degli elfi di J.R.R.@: Tolkien). + +Per risparmiare spazio nei file, i @dfn{code points} Unicode sono +@dfn{codificati}, e la rappresentazione di ogni carattere pu@`o richiedere +da uno a quattro byte nel file. UTF-8 @`e verosimilmente la pi@`u diffusa +fra queste codifiche multi-byte (@dfn{multibyte encodings}). + +Lo standard POSIX richiede che @command{awk} gestisca dei caratteri, +non dei byte. Per questo motivo, in @command{gawk}, le funzioni +@code{length()}, @code{substr()}, @code{split()}, @code{match()} e +le altre funzioni di manipolazione di stringhe +(@pxref{Funzioni per stringhe}) funzionano tutte elaborando dei caratteri, +come definiti dall'insieme di caratteri locale [a una determinata lingua] +e non elaborando dei byte. (Incidentalmente, non tutte le implementazioni +di @command{awk} si comportano cos@`{@dotless{i}}). + +Non esiste una maniera standard, internamente definita, per distinguere +i byte dai caratteri in un programma @command{awk}. Per una implementazione +con @command{awk} del comando @command{wc}, che necessita di utilizzare +una tale distinzione, sar@`a quindi necessario usare un'estensione esterna. + +@node Usare le estensioni +@subsubsection Una breve introduzione alle estensioni + +Le estensioni che si possono caricare in @command{gawk} sono presentate +in maniera completa in @ref{Estensioni dinamiche}. +Le estensioni consentono di aggiungere funzioni a @command{gawk}, e queste +possono anche essere dei codici scritti nei linguaggi C o C++. + +Per quanto riguarda +@file{wc.awk}, @`e sufficiente sapere che l'estensione viene caricata +con la direttiva @code{@@load}, e la funzione ulteriore che dovr@`a essere +usata si chiama @code{mbs_length()}. Questa funzione restiuisce il numero +di byte in una stringa, e non il numero di caratteri. + +L'estensione @code{"mbs"} fa parte del progetto @code{gawkextlib}. +@xref{gawkextlib} for ulteriori informazioni. + +@node Programmma @command{wc} +@subsubsection Codice per @file{wc.awk} + +La sintassi per @command{wc} @`e la seguente: @display -@command{wc} [@option{-lwc}] [@var{file} @dots{}] +@command{wc} [@option{-lwcm}] [@var{file} @dots{}] @end display Se nessun file @`e specificato sulla riga di comando, @command{wc} legge il suo @@ -27490,13 +28120,20 @@ separa i campi nei suoi record in input. @item -c -Conta solo i caratteri. +Conta solo i byte. +Un tempo, la lettera @samp{c} di questa opzione stava per ``caratteri.'' +Ma, come spiegato pi@`u sopra, byte e carattere non sono pi@`u sinonimi +tra loro. + +@item -m +Conta solo caratteri. @end table -Implementare @command{wc} in @command{awk} @`e particolarmente elegante, -perch@'e @command{awk} fa molto lavoro al posto nostro; divide le righe in -parole (cio@`e, campi) e le conta, conta le righe (cio@`e, i record), -e pu@`o facilmente dire quanto @`e lunga una riga. +L'implementazione di @command{wc} in @command{awk} @`e particolarmente +elegante, perch@'e @command{awk} fa molto lavoro al posto nostro; +divide le righe in parole (cio@`e, campi) e le conta, conta le righe +(cio@`e, i record), e pu@`o facilmente dire quanto @`e lunga una riga, +misurata in caratteri. Questo programma usa la funzione di libreria @code{getopt()} (@pxref{Funzione getopt}) @@ -27504,12 +28141,13 @@ (@pxref{Funzione filetrans}). Questa versione ha una differenza significativa rispetto alle versioni -tradizionali di @command{wc}: stampa sempre i contatori rispettando l'ordine -righe, parole e caratteri. Le versioni tradizionali rilevano l'ordine in cui -sono specificate le opzioni @option{-l}, @option{-w} e @option{-c} sulla riga -di comando, e stampano i contatori in quell'ordine. +meno recenti di @command{wc}: stampa sempre i contatori rispettando l'ordine +righe, parole, caratteri e byte. Le versioni meno recenti rilevano l'ordine +in cui sono specificate le opzioni @option{-l}, @option{-w} e @option{-c} +sulla riga di comando, e stampano i contatori in quell'ordine. +Lo standard POSIX, peraltro, non impone di fare cos@`{@dotless{i}}. -La regola @code{BEGIN} si occupa degli argomenti. La variabile +La regola @code{BEGIN} elabora gli argomenti. La variabile @code{stampa_totale} @`e vera se pi@`u di un file @`e presente sulla riga di comando: @@ -27517,13 +28155,14 @@ @cindex programma @subentry @code{wc.awk} @example @c file eg/prog/wc.awk -# wc.awk --- conta righe, parole, caratteri +# wc.awk --- conta righe, parole, caratteri, byte @c endfile @ignore @c file eg/prog/wc.awk # # Arnold Robbins, arnold@@skeeve.com, Public Domain # May 1993 +# Revised September 2020 @c endfile @end ignore @c file eg/prog/wc.awk @@ -27531,63 +28170,71 @@ # Opzioni: # -l conta solo righe # -w conta solo parole -# -c conta solo caratteri +# -c conta solo byte +# -m conta solo caratteri # -# Il default @`e di contare righe, parole, caratteri +# Il default @`e di contare righe, parole, byte # # Richiede le funzioni di libreria getopt() # e il programma di libreria che gestisce # il passaggio da un file dati al successivo +# Richiede l'estensione mbs di gawkextlib + +@@load "mbs" BEGIN @{ # consente a getopt() di stampare un messaggio se si specificano # opzioni non valide. Noi le ignoriamo - while ((c = getopt(ARGC, ARGV, "lwc")) != -1) @{ + while ((c = getopt(ARGC, ARGV, "lwcm")) != -1) @{ if (c == "l") conta_righe = 1 else if (c == "w") conta_parole = 1 else if (c == "c") + conta_byte = 1 + else if (c == "m") conta_caratteri = 1 @} for (i = 1; i < Optind; i++) ARGV[i] = "" - # se nessuna opzione @`e specificata, conta tutto - if (! conta_righe && ! conta_parole && ! conta_caratteri) - conta_righe = conta_parole = conta_caratteri = 1 + # se nessuna opzione @`e specificata, + # conta righe, parole, byte + if (! conta_righe && ! conta_parole && ! conta_caratteri && ! conta_byte) + conta_righe = conta_parole = conta_byte = 1 stampa_totale = (ARGC - i > 1) @} @c endfile @end example -La funzione @code{a_inizio_file()} @`e semplice; si limita ad azzerare i contatori -di righe, parole e caratteri, e salva il valore corrente di @value{FN} in +La funzione @code{beginfile()} @`e semplice; si limita ad azzerare i contatori +di righe, parole, caratteri e byte, e salva il valore corrente di @value{FN} in @code{nome_file}: @example @c file eg/prog/wc.awk -function a_inizio_file(file) +function beginfile(file) @{ - righe = parole = caratteri = 0 + righe = parole = caratteri = byte = 0 nome_file = FILENAME @} @c endfile @end example -La funzione @code{a_fine_file()} aggiunge i numeri del file corrente al totale +La funzione @code{endfile()} aggiunge i numeri del file corrente al totale di righe, parole, e caratteri. Poi stampa i numeri relativi al file appena letto. La funzione -@code{a_inizio_file()} azzera i numeri relativi al @value{DF} seguente: +@code{beginfile()} azzera i numeri relativi al @value{DF} seguente: @example @c file eg/prog/wc.awk -function a_fine_file(file) +function endfile(file) @{ totale_righe += righe totale_parole += parole totale_caratteri += caratteri + totale_byte += byte if (conta_righe) printf "\t%d", righe @group @@ -27596,27 +28243,29 @@ @end group if (conta_caratteri) printf "\t%d", caratteri + if (conta_byte) + printf "\t%d", byte printf "\t%s\n", nome_file @} @c endfile @end example -C'@`e una regola che viene eseguita per ogni riga. Aggiunge la lunghezza del record -pi@`u uno, a @code{caratteri}.@footnote{Poich@'e @command{gawk} gestisce le -localizzazioni in cui un carattere pu@`o occupare pi@`u di un byte, questo codice -conta i caratteri, non i byte.} -Aggiungere uno alla lunghezza del record -@`e necessario, perch@'e il carattere di ritorno a capo, che separa i record -(il valore di @code{RS}) non @`e parte del record stesso, e quindi non @`e -incluso nella sua lunghezza. Poi, @code{righe} @`e incrementata per ogni riga -letta, e @code{parole} @`e incrementato con il valore @code{NF}, che @`e il -numero di ``parole'' su questa riga: +C'@`e una regola che viene eseguita per ogni riga. Aggiunge la lunghezza +del record pi@`u uno, a @code{caratteri}. Aggiungere uno alla lunghezza +del record @`e necessario, perch@'e il carattere a-capo, che separa i record +tra loro (il valore della variabile @code{RS}) non fa parte del record +stesso, e quindi non @`e incluso nella sua lunghezza. Analogamente, si +aggiunge la lunghezza del record in byte, pi@`u uno, a @code{byte}. +Poi, @code{righe} @`e incrementata per ogni riga letta, e @code{parole} +@`e incrementata con il valore di @code{NF}, che @`e il numero di ``parole'' +su questa riga: @example @c file eg/prog/wc.awk # per ogni riga... @{ - caratteri += length($0) + 1 # aggiunge un ritorno a capo + caratteri += length($0) + 1 # aggiunge il ritorno a capo + byte += mbs_length($0) + 1 righe++ parole += NF @} @@ -27635,6 +28284,8 @@ printf "\t%d", totale_parole if (conta_caratteri) printf "\t%d", totale_caratteri + if (conta_byte) + printf "\t%d", totale_byte print "\ttotale" @} @} @@ -27675,11 +28326,8 @@ @cindex documenti @subentry ricerca in Un errore comune quando si scrive un testo lungo @`e quello di ripetere accidentalmente delle parole. Tipicamente lo si pu@`o vedere in testi del tipo -``questo questo programma fa quanto segue@dots{}'' Quando il testo @`e pubblicato in rete, spesso +``questo programma fa quanto segue segue@dots{}'' Quando il testo @`e pubblicato in rete, spesso le parole duplicate sono poste tra il termine di -@iftex -di -@end iftex una riga e l'inizio di un'altra, il che rende difficile scoprirle. @c as here! @@ -27813,6 +28461,7 @@ # alarm.awk --- impostare una sveglia # # Richiede la funzione di libreria getlocaltime() +# che si trova in gettime.awk @c endfile @ignore @c file eg/prog/alarm.awk @@ -27824,11 +28473,11 @@ @c endfile @end ignore @c file eg/prog/alarm.awk -# sintassi: alarm a_che_ora [ "messaggio" [ contatore [ ritardo ] ] ] +# Uso: alarm a_che_ora [ "messaggio" [ contatore [ ritardo ] ] ] BEGIN @{ # Controllo iniziale congruit@`a argomenti - sintassi1 = "sintassi: alarm a_che_ora ['messaggio' [contatore [ritardo]]]" + sintassi1 = "Uso: alarm a_che_ora ['messaggio' [contatore [ritardo]]]" sintassi2 = sprintf("\t(%s) formato ora: ::= hh:mm", ARGV[1]) if (ARGC < 2) @{ @@ -27890,15 +28539,15 @@ # (p.es., impostare `alarm 5:30' alle 9 del mattino # vuol dire far suonare la sveglia alle 5:30 pomeridiane) # aggiungere 12 all'ora richiesta - if (hour < 12 && adesso["hour"] > ora) + if (ora < 12 && adesso["hour"] > ora) ora += 12 # imposta l'ora in secondi dalla mezzanotte sveglia = (ora * 60 * 60) + (minuto * 60) # ottieni l'ora corrente in secondi dalla mezzanotte - corrente = (now["hour"] * 60 * 60) + \ - (now["minute"] * 60) + now["second"] + corrente = (adesso["hour"] * 60 * 60) + \ + (adesso["minute"] * 60) + adesso["second"] # quanto restare appisolati sonno = sveglia - corrente @@ -28063,7 +28712,7 @@ BEGIN @{ @group if (ARGC < 3) @{ - print "sintassi: translate da a" > "/dev/stderr" + print "Uso: translate da a" > "/dev/stderr" exit @} @end group @@ -28700,6 +29349,26 @@ print riga > file_corrente continue @} + # gestisci istruzioni che convertono caratteri accentati + if (index(riga, "gsub(\"@@@@") > 0) @{ + gsub("@@@{","@{",riga) + gsub("@@@}","@}",riga) + gsub("@@@@","@@",riga) + print riga > file_corrente + continue + @} + # istruzioni che convertono caratteri accentati + gsub("@@`a","à",riga) + gsub("@@`e","è",riga) + gsub("@@'e","é",riga) + gsub("@@`@{@@dotless@{i@}@}","ì",riga) + gsub("@@`o","ò",riga) + gsub("@@`u","ù",riga) + # riga contiene ancora caratteri @@? + if (index(riga, "@@") == 0) { + print riga > file_corrente + continue + @} n = split(riga, a, "@@") # if a[1] == "", vuol dire riga che inizia per @@, # non salvare un @@ @@ -28819,7 +29488,7 @@ function sintassi() @{ - print "sintassi: awksed espressione rimpiazzo [file...]" > "/dev/stderr" + print "Uso: awksed espressione rimpiazzo [file...]" > "/dev/stderr" exit 1 @} @@ -28942,7 +29611,7 @@ e la capacit@`a di mescolare istruzioni da riga di comando e file di sorgenti di libreria. -Il programma @`e scritto usando il linguaggio della Shell POSIX +Il programma @`e scritto usando il linguaggio della shell POSIX (@command{sh}).@footnote{Una spiegazione dettagliata del linguaggio della @command{sh} non rientra negli intenti di questo libro. Qualche spiegazione sommaria viene fornita, ma se si desidera una comprensione pi@`u dettagliata, si @@ -29063,6 +29732,7 @@ # Arnold Robbins, arnold@@skeeve.com, Public Domain # July 1993 # December 2010, minor edits +# Antonio Colombo, October 2020, test for Italian accented letters @c endfile @end ignore @c file eg/prog/igawk.sh @@ -29711,17 +30381,18 @@ senza appoggiarsi sulle funzioni @code{ord()} e @code{chr()}.) @item +@cindex Kernighan, Brian @subentry citazioni di Nel programma @file{uniq.awk} (@pxref{Programma uniq}, la logica per scegliere quali righe stampare rappresenta una @dfn{macchina a stati}, ossia ``un dispositivo che pu@`o essere in uno di un insieme di stati stabili, a seconda dello stato in cui si trovava in precedenza, e del valore corrente dei suoi -input.''@footnote{Questo @`e la definizione trovata usando -@code{define: state machine} come chiave di ricerca in Google.} +input.''@footnote{Questo @`e la definizione trovata in +@uref{https://www.lexico.com/en/definition/state_machine}.} Brian Kernighan suggerisce che ``un approccio alternativo alle macchine a stati @`e di leggere tutto l'input -e metterlo in un vettore, e quindi usare gli indici. @`E quasi sempre pi@`u +e metterlo in un vettore, e po usare l'indicizzazione. @`E quasi sempre pi@`u semplice da programmare, e per la maggior parte degli input in cui si pu@`o usare, altrettanto veloce in esecuzione.'' Riscrivere la logica del programma seguendo questa indicazione. @@ -29729,7 +30400,7 @@ @item Perch@'e il programma @file{wc.awk} (@pxref{Programma wc}) non pu@`o -limitarsi a usare il valore di @code{FNR} nella funziona @code{a_fine_file()}? +limitarsi a usare il valore di @code{FNR} nella funzione @code{endfile()}? Suggerimento: Esaminare il codice @iftex nella @@ -30908,7 +31579,7 @@ Stampa poi il risultato e chiude la connessione. Poich@'e questo tema @`e molto ampio, l'uso di @command{gawk} per -la programmazione TCP/IP viene documentata separatamente. +la programmazione TCP/IP viene documentato separatamente. @ifinfo Si veda @inforef{Top, , General Introduction, gawkinet, @value{GAWKINETTITLE}}, @@ -31145,6 +31816,14 @@ alle regole @code{BEGINFILE} ed @code{ENDFILE}, alle regole criterio_di_ricerca--azione e alle funzioni. +@item +Le funzioni sono elencate in ordine alfabetico. Per prime sono elencate +in ordine alfabetico le funzioni che appartengono allo spazio-dei-nomi +@code{awk}. Poi sono elencate le funzioni contenute negli altri +spazi-dei-nomi. Ogni spazio-dei-nomi @`e elencato in ordine alfabetico +e le funzioni in esso contenute sono anch'esse elencate in ordine +alfabetico. + @end itemize La versione profilata del proprio programma potrebbe non apparire esattamente @@ -31329,8 +32008,8 @@ istruzione. Questo pu@`o essere d'aiuto nel determinare quali parti del programma potrebbero portar via la maggior parte del tempo, consentendo cos@`{@dotless{i}} di aggiustarli pi@`u agevolmente. Inviando il segnale @code{USR1} durante la -profilazione @command{gawk} scrive il profilo, includendo la -stack della chiamata alla funzione e prosegue nell'elaborazione. +profilazione @command{gawk} scrive il profilo, includendo lo +@dfn{stack} della chiamata alla funzione e prosegue nell'elaborazione. @item Si pu@`o anche fare solo una ``stampa elegante'' del programma. @@ -32218,7 +32897,7 @@ @end example @noindent -Il passo succesivo @`e creare le directory: +Il passo successivo @`e creare le directory: @example $ @kbd{mkdir en_US.UTF-8 en_US.UTF-8/LC_MESSAGES} @@ -32435,7 +33114,7 @@ @cindex debugger @subentry pila di chiamata @cindex @dfn{stack frame} (debugger) @cindex debugger @subentry @dfn{stack frame} -@item Stack frame +@item @dfn{Stack frame} Durante la loro esecuzione i programmi normalmente chiamano delle funzioni. Una funzione pu@`o a sua volta chiamarne un'altra, o pu@`o richiamare se stessa (ricorsione). La @@ -32900,7 +33579,7 @@ * Controllo dei breakpoint:: Controllo dei punti d'interruzione. * Controllo esecuzione debugger:: Controllo di esecuzione. * Vedere e modificare dati:: Vedere e modificare dati. -* Stack di esecuzione:: Lavorare con le pile. +* Stack di esecuzione:: Lavorare con lo @dfn{stack}. * Informazioni sul debugger:: Ottenere informazioni sullo stato del programma e del debugger. * Comandi vari del debugger:: Comandi vari del debugger. @@ -33117,7 +33796,7 @@ @cindex comando del debugger @subentry @code{finish} @cindex @code{finish} (comando del debugger) @item @code{finish} -Esegue fino a quando lo stack frame selezionato completa l'esecuzione. +Esegue fino a quando lo @dfn{stack frame} selezionato completa l'esecuzione. Stampa il valore restituito. @cindex comando del debugger @subentry @code{n} (alias per @code{next}) @@ -33337,8 +34016,8 @@ @end table -@node Stack di esecuzione -@subsection Lavorare con lo stack +@node @dfn{Stack} di esecuzione +@subsection Lavorare con lo @dfn{stack} Ogni volta che si esegue un programma che contiene chiamate di funzione, @command{gawk} mantiene una pila contenente la lista delle chiamate di funzione @@ -33357,11 +34036,11 @@ @cindex descrizione di @subentry @dfn{stack}, pila delle @subentry nel debugger @cindex @dfn{stack} (pila) delle chiamate @subentry visualizzare nel debugger @cindex pila (@dfn{stack}) delle chiamate @subentry visualizzare nel debugger -@cindex tracciatura a ritroso @subentry mostrare nel debugger +@cindex tracciatura @subentry a ritroso @subentry mostrare nel debugger @item @code{backtrace} [@var{contatore}] @itemx @code{bt} [@var{contatore}] @itemx @code{where} [@var{contatore}] -Stampa a ritroso una traccia di tutte le chiamate di funzione (stack frame), o +Stampa a ritroso una traccia di tutte le chiamate di funzione (@dfn{stack frame}), o i dei @var{contatore} frame pi@`u interni se @var{contatore} > 0. Stampa i @var{contatore} frame pi@`u esterni se @var{contatore} < 0. La tracciatura a ritroso mostra il nome e gli argomenti di ciascuna funzione, il sorgente @@ -33582,7 +34261,6 @@ dimostra il seguente riversamento parziale del codice offuscato di Davide Brini (@pxref{Programma signature}): -@c FIXME: This will need updating if num-handler branch is ever merged in. @smallexample @group gawk> @kbd{dump} @@ -33666,7 +34344,7 @@ @c nested table @table @asis -@item @code{-} (Meno) +@item @code{-} (meno) Stampa righe prima delle ultime righe stampate. @item @code{+} @@ -33828,7 +34506,7 @@ Il debugger di @command{gawk} accetta solo codice sorgente fornito con l'opzione @option{-f}. Se si sta usando uno @dfn{script} di shell che contiene un programma -@command{awk} che fa parte della riga di comando, e si deve usare il debugge, +@command{awk} che fa parte della riga di comando, e si deve usare il debugger, si pu@`o scrivere lo @dfn{script} in un file temporaneo, e quindi usarlo come programma, tramite l'opzione @option{-f}. Ci@`o si potrebbe fare nel modo seguente: @@ -33930,7 +34608,7 @@ @item Come la maggior parte dei debugger, il debugger di @command{gawk} funziona in -termini di stack frame, e si possono inserire sia punti d'interruzione +termini di @dfn{stack frame}, e si possono inserire sia punti d'interruzione (interruzioni a un certo punto del codice) sia punti d'osservazione (interruzioni quando il valore di un dato cambia). @@ -34436,7 +35114,7 @@ codice scritto in C e del codice @command{awk}, che collaborano fra loro. -@node Sommario dello Spazio-dei-nomi +@node Sommario sugli spazi-dei-nomi @section Sommario @itemize @value{BULLET} @@ -36048,6 +36726,7 @@ * Tipi di dati generali:: I tipi di dati. * Funzioni di allocazione memoria:: Funzioni per allocare memoria. * Funzioni di costruzione:: Funzioni per creare valori. +* API e gestione valori MPFR e GMP:: Gestione valori MPFR e GMP. * Funzioni di registrazione:: Funzioni per registrare cose con @command{gawk}. * Stampare messaggi:: Funzioni per stampare messaggi. @@ -36201,11 +36880,22 @@ @item Tutti i puntatori messi a disposizione da @command{gawk} puntano ad aree di memoria gestite da @command{gawk} e dovrebbero essere trattati -dall'estensione come in sola lettura. Le aree di memoria che contengono @emph{tutte} le stringhe passate a +dall'estensione come in sola lettura. + +Le aree di memoria che contengono @emph{tutte} le stringhe passate a @command{gawk} dall'estensione @emph{devono} provenire da una chiamata a @code{gawk_malloc()}, @code{gawk_calloc()} o @code{gawk_realloc()}, e sono gestite da @command{gawk} da quel punto in avanti. +La memoria che contiene valori MPFR/GMP provenienti da @command{gawk} +dovrebbe anche essere trattata come in sola lettura. +Inoltre, a differenza di quel che succede per le stringhe, +la memoria che contiene valori MPFR/GMP allocati da un'estensione +e passati in seguito a @command{gawk} @`e @emph{copiata} da @command{gawk}; +@`e quindi l'estensione che dovrebbe liberare quelle aree di memoria, +per evitare perdite di memoria. Ulteriori dettagli a questo +riguardo si possono trovare in @ref{API e gestione valori MPFR e GMP}. + @item L'API definisce parecchie semplici strutture @code{struct} che mappano dei valori come sono visti da @command{awk}. Un valore pu@`o essere un numero @code{double} @@ -36400,6 +37090,15 @@ MPFR in virgola mobile (tipo @code{mpfr_ptr_t}), e trasformarlo a seconda delle necessit@`a. +@quotation ATTENZIONE +Ogni valore MPFR o MPZ da voi creato e poi passato a @command{gawk} +per essere salvato viene @emph{copiato}. Ci@`o significa che la +responsabilit@`a di liberare la memoria una volta che non serva pi@`u +@`e a carico di chi scrive l'estensione. Vedere il codice +dell'estensione di esempio @code{intdiv} per un esempio di questo +tipo. +@end quotation + @item typedef void *awk_scalar_t; La variabili scalari possono essere rappresentate da un tipo opaco. Questi valori sono ottenuti da @command{gawk} e in seguito gli vengono restituiti. @@ -36636,7 +37335,17 @@ Due ulteriori funzioni allocano oggetti MPFR e GMP per essere usati da funzioni di estensione che necessitino di creare e di -restituire valori di questo tipo: +restituire valori di questo tipo. + +@quotation NOTA +Queste funzioni sono obsolete. Funzioni di estensione che intendano +usare valori MPFR e GMP locali dovrebbero semplicemente allocarli +sullo @dfn{stack} e in seguito liberarli come farebbe qualsiasi altro +pezzo di codice. +@end quotation + +@noindent +Le funzioni sono: @table @code @item void *get_mpfr_ptr(); @@ -36660,6 +37369,9 @@ e si dovrebbero assegnare in maniera appropriata questi codici di ritorno prima di assegnare i risultati a variabili del tipo corretto. +La memoria allocata da queste funzioni dovrebbe essere liberata a fine +utilizzo, richiamando @code{gawk_free()}. + @node Funzioni di costruzione @subsection Funzioni per creare valori @@ -36712,14 +37424,11 @@ Questa funzione crea un valore di numero GMP in @code{result}. @code{mpz} deve provenire da una chiamata a @code{get_mpz_ptr()} (e quindi essere veramente del corrispondente tipo @code{mpz_ptr}). -@command{gawk} assume la propriet@`a di questa memoria. @item static inline awk_value_t * @itemx make_number_mpfr(void *mpfr, awk_value_t *result); Questa funzione crea un valore di numero MPFR in @code{result}. -@code{mpz} deve provenire da una chiamata a @code{get_mpfr_ptr()} -(e quindi essere veramente del corrispondente tipo @code{mpfr_ptr}). -@command{gawk} assume la propriet@`a di questa memoria. +@code{mpz} deve provenire da una chiamata a @code{get_mpfr_ptr()}. @item static inline awk_value_t * @itemx make_const_user_input(const char *stringa, size_t lunghezza, awk_value_t *risultato); @@ -36749,6 +37458,49 @@ @end table +@node API e gestione valori MPFR e GMP +@subsection Gestione valori MPFR e GMP +@cindex MPFR @subentry gestione valori nell'API +@cindex GMP @subentry gestione valori nell'API +@cindex API (estensione) @subentry gestione valori MPFR e GMP + +I valori MPFR e GMP sono differenti dai valori di tipo stringa, +nei quali @`e possibile ``prendere possesso'' del valore semplicemente +assegnandogli dei puntatori. Per esempio: + +@example +char *p = gawk_malloc(42); p @ii{``possiede'' la memoria} +char *q = p; +p = NULL; @ii{ora} q @ii{la ``possiede''} +@end example + +Gli oggetti MPFR e GMP sono certamente allocati sullo @dfn{stack} +oppure dinamicamente, ma le librerie MPFR e GMP trattano questi +oggetti come valori, allo stesso modo in cui si passa normalmente +un valore intero (@code{int}) o uno a virgola mobile a doppia +precisione (@code{double}) per valore. Non c'@`e modo di +``trasferire il possesso'' di oggetti MPFR e GMP. +Per questo motivo, il codice in un'estensione dovrebbe essere +simile a questo: + +@example +mpz_t part1, part2, risposta; @ii{dichiarare valori locali} + +mpz_set_si(part1, 21); @ii{fare alcuni calcoli} +mpz_set_si(part2, 21); +mpz_add(risposta, part1, part2); +@dots{} +/* si suppone che il risultato sia un parametro */ +/* di tipo (awk_value_t *). */ +make_number_mpz(risposta, & risultato); @ii{assegnare valore finale GMP} + +mpz_clear(part1); @ii{rilasciare valori intermedi} +mpz_clear(part2); +mpz_clear(risposta); + +return result; +@end example + @node Funzioni di registrazione @subsection Funzioni di registrazione @cindex registrazione di estensione @@ -37823,8 +38575,9 @@ Se vale @code{""} o @code{"awk"}, allora @code{nome} @`e cercato nello spazio-di-nomi di default, ossia @code{awk}. -Note that @code{namespace} is a C++ keyword. For interoperability with C++, -you should avoid using that identifier in C code. +Si noti che @code{namespace} @`e una parola chiave di C++. Per ragioni di +interoperabilit@`a con C++, si dovrebbe evitare di usare questo identificativo +nel codice C. @item awk_bool_t sym_update(const char *nome, awk_value_t *valore); Aggiorna la variabile il cui nome @`e contenuto nella stringa @code{nome}, @@ -38824,7 +39577,7 @@ @node Versione dell'estensione @subsubsection Costanti e variabili della versione dell'API -@cindex API @subentry versione dell'estensione +@cindex API (estensione) @subentry versione @cindex versione @subentry dell'estensione API @command{gawk} @cindex estensione API @subentry @command{gawk}, versione API @@ -38944,7 +39697,7 @@ @node Variabili informative di estens. API @subsubsection Variabili informative -@cindex API @subentry variabili informative dell'estensione +@cindex API (estensione) @subentry variabili informative @cindex variabili @subentry informative dell'API @cindex estensione API @subentry variabili informative @@ -40332,13 +41085,14 @@ @value{FN} originario. Si noti che l'uso di questa funzionalit@`a pu@`o essere controllato -specificando @samp{inplace=0} sulla riga di comando, prima del nome del file -che non dovrebbe essere elaborato come appena descritto. Si pu@`o richiedere -ancora l'aggiornamento diretto di un file, specificando l'argomento -@samp{inplace=1} davanti al nome del file da elaborare in maniera diretta. +specificando @samp{inplace::enable=0} sulla riga di comando, prima del nome +del file che non dovrebbe essere elaborato come appena descritto. +Si pu@`o richiedere ancora l'aggiornamento diretto di un file, specificando +l'argomento @samp{inplace::enable=1} davanti al nome del file da elaborare +in maniera diretta. -La variabile @code{_inplace_filename} serve per tener traccia del nome del -file corrente, in modo da non eseguire la funzione @code{inplace_end()} prima +La variabile @code{inplace::filename} serve per tener traccia del nome del +file corrente, in modo da non eseguire la funzione @code{inplace::end()} prima di aver elaborato il primo file. Se si verifica un errore, l'estensione emette un messaggio di errore fatale @@ -40452,7 +41206,7 @@ Per default, se non @`e possibile aprire una directory (p.es. per problemi di autorizzazione), @command{gawk} termina l'esecuzione. -Come @`e il caso per i file normali, questa situazione pu@`o +Come per i file normali, questa situazione pu@`o essere gestita usando una regola @code{BEGINFILE} che controlli il contenuto della variabile @code{ERRNO} e stampi un messaggio di errore oppure gestisca il problema in qualche altro modo. @@ -42351,7 +43105,7 @@ @item Il comando @code{where} @`e stato aggiunto al debugger -(@pxref{Stack di esecuzione}). +(@pxref{@dfn{Stack} di esecuzione}). @item Il supporto per Ultrix @`e stato rimosso. @@ -42961,7 +43715,7 @@ @item @cindex Guerrero, Juan Manuel -Juan Manuel Guerrero ha preso in carico la manutenzione dellla +Juan Manuel Guerrero ha preso in carico la manutenzione della versione DJGPP di @command{gawk}. @item @@ -43896,7 +44650,7 @@ aspetta. @cindex installare @command{gawk} @subentry su Cygwin -SI pu@`o anche installare @command{gawk} con la procedura di installazione +Si pu@`o anche installare @command{gawk} con la procedura di installazione normalmente usata per tutto il software Cygwin. In generale, Cygwin fornisce l'ultima versione rilasciata di @command{gawk}. @@ -45080,7 +45834,7 @@ Fornire un commento descrittivo di una riga per ogni funzione. @item -Non usare la funzione @code{alloca()} per allocare memoria dalla @dfn{stack}. +Non usare la funzione @code{alloca()} per allocare memoria dallo @dfn{stack}. Il farlo genera dei problemi di portabilit@`a che non giustificano il vantaggio secondario di non doversi preoccupare di liberare la memoria. Usare invece @code{malloc()} e @code{free()}. @@ -45548,18 +46302,18 @@ @multitable @columnfractions .40 .60 @headitem Caratteristica @tab Limiti @item Caratteri in una classe di caratteri @tab 2^(numero di bit per byte) -@item Lunghezza di un record in input @tab @code{MAX_INT} +@item Lunghezza di un record in input @tab @code{ULONG_MAX} @item Lunghezza di un record in output @tab Illimitata @item Lunghezza di una riga di codice sorgente @tab Illimitata -@item Numero di campi in un record @tab @code{MAX_LONG} +@item Numero di campi in un record @tab @code{ULONG_MAX} @item Numero di ridirezioni di file @tab Illimitata @item Numero di record in input in un singolo file @tab @code{MAX_LONG} @item Numero totale di record in input @tab @code{MAX_LONG} @item Numero di ridirezioni via @dfn{pipe} @tab min(numero processi per utente, numero di file aperti) @item Valori numerici @tab Numeri in virgola mobile in doppia precisione (se non si usa la funzionalit@`a MPFR) -@item Dimensione di un campo @tab @code{MAX_INT} -@item Dimensione di una stringa letterale @tab @code{MAX_INT} -@item Dimensione di una stringa di @dfn{printf} @tab @code{MAX_INT} +@item Dimensione di un campo @tab @code{ULONG_MAX} +@item Dimensione di una stringa letterale @tab @code{ULONG_MAX} +@item Dimensione di una stringa di @dfn{printf} @tab @code{ULONG_MAX} @end multitable @node Progetto delle estensioni @@ -46678,7 +47432,7 @@ @command{gawk} fornisce funzioni per la gestione di data e ora, le operazioni a livello di bit, l'ordinamento di vettori, il controllo di tipo [di variabile] e la traduzione di stringhe -in fase di esecuzione di progranna. +in fase di esecuzione di programma. (@xref{Funzioni predefinite}). @item @command{gawk} @@ -48647,7 +49401,3 @@ which sorta sucks. TODO: -Add a section explaining recursion from ground zero. Probably -easiest to do it with factorial as the example. Explain that -recursion needs a stopping condition. Thanks to -Bill Duncan for the suggestion. diff -urN gawk-5.1.0/doc/it/texinfo.tex gawk-5.1.1/doc/it/texinfo.tex --- gawk-5.1.0/doc/it/texinfo.tex 2020-03-18 22:23:28.000000000 +0200 +++ gawk-5.1.1/doc/it/texinfo.tex 2021-10-25 19:18:13.000000000 +0300 @@ -3,9 +3,9 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2020-02-11.09} +\def\texinfoversion{2020-10-24.12} % -% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. +% Copyright 1985, 1986, 1988, 1990-2020 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -33,7 +33,7 @@ % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % -% Send bug reports to bug-texinfo@gnu.org. Please include including a +% Send bug reports to bug-texinfo@gnu.org. Please include a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % @@ -365,34 +365,19 @@ \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % + \checkchapterpage + % % Retrieve the information for the headings from the marks in the page, % and call Plain TeX's \makeheadline and \makefootline, which use the % values in \headline and \footline. % - % This is used to check if we are on the first page of a chapter. - \ifcase1\the\savedtopmark\fi - \let\prevchaptername\thischaptername - \ifcase0\firstmark\fi - \let\curchaptername\thischaptername - % - \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi - % - \ifx\curchaptername\prevchaptername - \let\thischapterheading\thischapter - \else - % \thischapterheading is the same as \thischapter except it is blank - % for the first page of a chapter. This is to prevent the chapter name - % being shown twice. - \def\thischapterheading{}% - \fi - % % Common context changes for both heading and footing. % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% - % \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% % @@ -439,6 +424,22 @@ \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } +% Check if we are on the first page of a chapter. Used for printing headings. +\newif\ifchapterpage +\def\checkchapterpage{% + % Get the chapter that was current at the end of the last page + \ifcase1\the\savedtopmark\fi + \let\prevchaptername\thischaptername + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \let\curchaptername\thischaptername + % + \ifx\curchaptername\prevchaptername + \chapterpagefalse + \else + \chapterpagetrue + \fi +} % Argument parsing @@ -1026,7 +1027,7 @@ \let\setfilename=\comment % @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} +\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} \message{pdf,} @@ -1153,6 +1154,45 @@ \fi +% Output page labels information. +% See PDF reference v.1.7 p.594, section 8.3.1. +\ifpdf +\def\pagelabels{% + \def\title{0 << /P (T-) /S /D >>}% + \edef\roman{\the\romancount << /S /r >>}% + \edef\arabic{\the\arabiccount << /S /D >>}% + % + % Page label ranges must be increasing. Remove any duplicates. + % (There is a slight chance of this being wrong if e.g. there is + % a @contents but no @titlepage, etc.) + % + \ifnum\romancount=0 \def\roman{}\fi + \ifnum\arabiccount=0 \def\title{}% + \else + \ifnum\romancount=\arabiccount \def\roman{}\fi + \fi + % + \ifnum\romancount<\arabiccount + \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax + \else + \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax + \fi +} +\else + \let\pagelabels\relax +\fi + +\newcount\pagecount \pagecount=0 +\newcount\romancount \romancount=0 +\newcount\arabiccount \arabiccount=0 +\ifpdf + \let\ptxadvancepageno\advancepageno + \def\advancepageno{% + \ptxadvancepageno\global\advance\pagecount by 1 + } +\fi + + % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be @@ -1443,7 +1483,13 @@ % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. \def\numchapentry##1##2##3##4{% + \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\unnchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% @@ -1685,9 +1731,13 @@ % Therefore, we read toc only once. % % We use node names as destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% - \dopdfoutline{##1}{1}{##3}{##4}}% + \dopdfoutline{##2 ##1}{1}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{2}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% @@ -1699,7 +1749,8 @@ \let\appsecentry\numsecentry% \let\appsubsecentry\numsubsecentry% \let\appsubsubsecentry\numsubsubsecentry% - \let\unnchapentry\numchapentry% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{1}{##3}{##4}}% \let\unnsecentry\numsecentry% \let\unnsubsecentry\numsubsecentry% \let\unnsubsubsecentry\numsubsubsecentry% @@ -2512,7 +2563,7 @@ \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} -\def\tt{\fam=\ttfam \setfontstyle{tt}} +\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. @@ -3003,10 +3054,18 @@ % arg (if given), and not the url (which is then just the link target). \newif\ifurefurlonlylink +% The default \pretolerance setting stops the penalty inserted in +% \urefallowbreak being a discouragement to line breaking. Set it to +% a negative value for this paragraph only. Hopefully this does not +% conflict with redefinitions of \par done elsewhere. +\def\nopretolerance{% +\pretolerance=-1 +\def\par{\endgraf\pretolerance=100 \let\par\endgraf}% +} + % The main macro is \urefbreak, which allows breaking at expected -% places within the url. (There used to be another version, which -% didn't support automatic breaking.) -\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +% places within the url. +\def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak % \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} @@ -3117,14 +3176,14 @@ % Allow a ragged right output to aid breaking long URL's. There can % be a break at the \allowbreak with no extra glue (if the existing stretch in -% the line is sufficent), a break at the \penalty100 with extra glue added +% the line is sufficient), a break at the \penalty with extra glue added % at the end of the line, or no break at all here. % Changing the value of the penalty and/or the amount of stretch affects how -% preferrable one choice is over the other. +% preferable one choice is over the other. \def\urefallowbreak{% - \allowbreak + \penalty0\relax \hskip 0pt plus 2 em\relax - \penalty300 + \penalty1000\relax \hskip 0pt plus -2 em\relax } @@ -3321,6 +3380,25 @@ \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} \def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% +% provide this command from LaTeX as it is very common +\def\frac#1#2{{{#1}\over{#2}}} + +% @displaymath. +% \globaldefs is needed to recognize the end lines in \tex and +% \end tex. Set \thisenv as @end displaymath is seen before @end tex. +{\obeylines +\globaldefs=1 +\envdef\displaymath{% +\tex +\def\thisenv{\displaymath}% +$$% +} + +\def\Edisplaymath{$$ +\def\thisenv{\tex}% +\end tex +}} + % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. @@ -3525,7 +3603,7 @@ % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % -\def\pounds{{\it\$}} +\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik @@ -3674,11 +3752,19 @@ \fi % Quotes. -\chardef\quotedblleft="5C -\chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' +% only change font for tt for correct kerning and to avoid using +% \ecfont unless necessary. +\def\quotedblleft{% + \ifmonospace{\ecfont\char"10}\else{\char"5C}\fi +} + +\def\quotedblright{% + \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi +} + \message{page headings,} @@ -3800,12 +3886,19 @@ \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages +\newtoks\evenchapheadline% headline on even pages with a new chapter +\newtoks\oddchapheadline % headline on odd pages with a new chapter \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make \makeheadline and \makefootline in Plain TeX use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} +\headline={{\textfonts\rm + \ifchapterpage + \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi + \else + \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi + \fi}} + \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax @@ -3821,12 +3914,14 @@ \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} + \global\evenchapheadline=\evenheadline} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% + \global\oddchapheadline=\oddheadline} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% @@ -3893,37 +3988,34 @@ \parseargdef\headings{\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination - \evenheadline={\hfil}\evenfootline={\hfil}% - \oddheadline={\hfil}\oddfootline={\hfil}% + \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. +\def\pageone{ + \global\pageno=1 + \global\arabiccount = \pagecount +} + % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage +\pageone +\HEADINGSdoublex } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chappager +\pageone +\HEADINGSsinglex } \def\HEADINGSon{\HEADINGSdouble} @@ -3933,7 +4025,9 @@ \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\folio\hfil}} +\global\oddchapheadline={\line{\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } @@ -3941,8 +4035,22 @@ \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\hfil\folio}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% for @setchapternewpage off +\def\HEADINGSsinglechapoff{% +\pageone +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline=\evenheadline +\global\oddchapheadline=\oddheadline \global\let\contentsalignmacro = \chappager } @@ -4857,7 +4965,7 @@ % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} -\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} +\def\docodeindexxxx #1{\docind{\indexname}{#1}} % Used for the aux, toc and index files to prevent expansion of Texinfo @@ -5133,64 +5241,66 @@ \let\lbracechar\{% \let\rbracechar\}% % + % + \let\do\indexnofontsdef + % % Non-English letters. - \def\AA{AA}% - \def\AE{AE}% - \def\DH{DZZ}% - \def\L{L}% - \def\OE{OE}% - \def\O{O}% - \def\TH{TH}% - \def\aa{aa}% - \def\ae{ae}% - \def\dh{dzz}% - \def\exclamdown{!}% - \def\l{l}% - \def\oe{oe}% - \def\ordf{a}% - \def\ordm{o}% - \def\o{o}% - \def\questiondown{?}% - \def\ss{ss}% - \def\th{th}% - % - \def\LaTeX{LaTeX}% - \def\TeX{TeX}% - % - % Assorted special characters. \defglyph gives the control sequence a - % definition that removes the {} that follows its use. - \defglyph\atchar{@}% - \defglyph\arrow{->}% - \defglyph\bullet{bullet}% - \defglyph\comma{,}% - \defglyph\copyright{copyright}% - \defglyph\dots{...}% - \defglyph\enddots{...}% - \defglyph\equiv{==}% - \defglyph\error{error}% - \defglyph\euro{euro}% - \defglyph\expansion{==>}% - \defglyph\geq{>=}% - \defglyph\guillemetleft{<<}% - \defglyph\guillemetright{>>}% - \defglyph\guilsinglleft{<}% - \defglyph\guilsinglright{>}% - \defglyph\leq{<=}% - \defglyph\lbracechar{\{}% - \defglyph\minus{-}% - \defglyph\point{.}% - \defglyph\pounds{pounds}% - \defglyph\print{-|}% - \defglyph\quotedblbase{"}% - \defglyph\quotedblleft{"}% - \defglyph\quotedblright{"}% - \defglyph\quoteleft{`}% - \defglyph\quoteright{'}% - \defglyph\quotesinglbase{,}% - \defglyph\rbracechar{\}}% - \defglyph\registeredsymbol{R}% - \defglyph\result{=>}% - \defglyph\textdegree{o}% + \do\AA{AA}% + \do\AE{AE}% + \do\DH{DZZ}% + \do\L{L}% + \do\OE{OE}% + \do\O{O}% + \do\TH{TH}% + \do\aa{aa}% + \do\ae{ae}% + \do\dh{dzz}% + \do\exclamdown{!}% + \do\l{l}% + \do\oe{oe}% + \do\ordf{a}% + \do\ordm{o}% + \do\o{o}% + \do\questiondown{?}% + \do\ss{ss}% + \do\th{th}% + % + \do\LaTeX{LaTeX}% + \do\TeX{TeX}% + % + % Assorted special characters. + \do\atchar{@}% + \do\arrow{->}% + \do\bullet{bullet}% + \do\comma{,}% + \do\copyright{copyright}% + \do\dots{...}% + \do\enddots{...}% + \do\equiv{==}% + \do\error{error}% + \do\euro{euro}% + \do\expansion{==>}% + \do\geq{>=}% + \do\guillemetleft{<<}% + \do\guillemetright{>>}% + \do\guilsinglleft{<}% + \do\guilsinglright{>}% + \do\leq{<=}% + \do\lbracechar{\{}% + \do\minus{-}% + \do\point{.}% + \do\pounds{pounds}% + \do\print{-|}% + \do\quotedblbase{"}% + \do\quotedblleft{"}% + \do\quotedblright{"}% + \do\quoteleft{`}% + \do\quoteright{'}% + \do\quotesinglbase{,}% + \do\rbracechar{\}}% + \do\registeredsymbol{R}% + \do\result{=>}% + \do\textdegree{o}% % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. @@ -5205,7 +5315,10 @@ \macrolist \let\value\indexnofontsvalue } -\def\defglyph#1#2{\def#1##1{#2}} % see above + +% Give the control sequence a definition that removes the {} that follows +% its use, e.g. @AA{} -> AA +\def\indexnofontsdef#1#2{\def#1##1{#2}}% @@ -5224,6 +5337,20 @@ \fi } +% Same as \doind, but for code indices +\def\docind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\docindwrite + }% + \fi +} + % Check if an index file has been opened, and if not, open it. \def\requireopenindexfile#1{% \ifnum\csname #1indfile\endcsname=0 @@ -5293,6 +5420,9 @@ % trim spaces. \edef\trimmed{\segment}% \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \ifincodeindex + \edef\trimmed{\noexpand\code{\trimmed}}% + \fi % \xdef\bracedtext{\bracedtext{\trimmed}}% % @@ -5358,7 +5488,12 @@ % Write the entry in \indextext to the index file. % -\def\doindwrite{% + +\newif\ifincodeindex +\def\doindwrite{\incodeindexfalse\doindwritex} +\def\docindwrite{\incodeindextrue\doindwritex} + +\def\doindwritex{% \maybemarginindex % \atdummies @@ -5578,7 +5713,11 @@ \else \begindoublecolumns \catcode`\\=0\relax - \catcode`\@=12\relax + % + % Make @ an escape character to give macros a chance to work. This + % should work because we (hopefully) don't otherwise use @ in index files. + %\catcode`\@=12\relax + \catcode`\@=0\relax \input \jobname.\indexname s \enddoublecolumns \fi @@ -6420,18 +6559,16 @@ \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} +\global\def\HEADINGSon{\HEADINGSsinglechapoff}} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon @@ -6796,9 +6933,7 @@ % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund + % start on an odd page, unlike chapters. \contentsalignmacro \immediate\closeout\tocfile % @@ -6813,6 +6948,9 @@ % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi + \def\thistitle{}% no title in double-sided headings + % Record where the Roman numerals started. + \ifnum\romancount=0 \global\romancount=\pagecount \fi } % redefined for the two-volume lispref. We always output on @@ -6835,8 +6973,7 @@ \fi \closein 1 \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno + \contentsendroman } % And just the chapters. @@ -6871,10 +7008,20 @@ \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup + \contentsendroman +} +\let\shortcontents = \summarycontents + +% Get ready to use Arabic numerals again +\def\contentsendroman{% \lastnegativepageno = \pageno \global\pageno = \savepageno + % + % If \romancount > \arabiccount, the contents are at the end of the + % document. Otherwise, advance where the Arabic numerals start for + % the page numbers. + \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi } -\let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. @@ -7463,13 +7610,9 @@ \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle -% tabs. The \global is in case the verbatim line starts with an accent, -% or some other command that starts with a begin-group. Otherwise, the -% entire \verbbox would disappear at the corresponding end-group, before -% it is typeset. Meanwhile, we can't have nested verbatim commands -% (can we?), so the \global won't be overwriting itself. +% tabs. \newbox\verbbox -\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} +\def\starttabbox{\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active @@ -7480,7 +7623,8 @@ \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw - \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + \wd\verbbox=\dimen\verbbox + \leavevmode\box\verbbox \starttabbox }% } \endgroup @@ -7490,9 +7634,7 @@ \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim - % The \leavevmode here is for blank lines. Otherwise, we would - % never \starttabbox and the \egroup would end verbatim mode. - \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, @@ -7500,7 +7642,6 @@ % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique @@ -7535,13 +7676,16 @@ % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. - \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + \xdef\doverbatim#1^^M#2@end verbatim{% + \starttabbox#2\egroup\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. + % The \egroup ends the \verbbox started at the end of the last line in + % the block. \endgroup % \envdef\verbatim{% - \setupverbatim\doverbatim + \setnormaldispenv\setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak @@ -7559,7 +7703,7 @@ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \edef\tmp{\noexpand\input #1 } \expandafter - }\tmp + }\expandafter\starttabbox\tmp\egroup \afterenvbreak }% } @@ -10725,6 +10869,8 @@ \DeclareUnicodeCharacter{0233}{\=y}% \DeclareUnicodeCharacter{0237}{\dotless{j}}% % + \DeclareUnicodeCharacter{02BC}{'}% + % \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% % % Greek letters upper case @@ -11359,6 +11505,18 @@ \globaldefs = 0 }} +\def\bsixpaper{{\globaldefs = 1 + \afourpaper + \internalpagesizes{140mm}{100mm}% + {-6.35mm}{-12.7mm}% + {\bindingoffset}{14pt}% + {176mm}{125mm}% + \let\SETdispenvsize=\smallword + \lispnarrowing = 0.2in + \globaldefs = 0 +}} + + % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. @@ -11372,12 +11530,12 @@ \setleading{\textleading}% % \dimen0 = #1\relax - \advance\dimen0 by \voffset - \advance\dimen0 by 1in % reference point for DVI is 1 inch from top of page + \advance\dimen0 by 2.5in % default 1in margin above heading line + % and 1.5in to include heading, footing and + % bottom margin % \dimen2 = \hsize - \advance\dimen2 by \normaloffset - \advance\dimen2 by 1in % reference point is 1 inch from left edge of page + \advance\dimen2 by 2in % default to 1 inch margin on each side % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% diff -urN gawk-5.1.0/doc/Makefile.am gawk-5.1.1/doc/Makefile.am --- gawk-5.1.0/doc/Makefile.am 2020-03-06 11:36:06.000000000 +0200 +++ gawk-5.1.1/doc/Makefile.am 2021-10-28 20:21:57.000000000 +0300 @@ -1,7 +1,8 @@ # # doc/Makefile.am --- automake input file for gawk # -# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2007, 2010, 2011, 2016, 2017 +# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2007, 2010, 2011, 2016, 2017, +# 2021, # the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the @@ -48,8 +49,8 @@ macros colors no.colors $(man_MANS) \ lflashlight-small.xpic lflashlight.eps lflashlight.pdf \ rflashlight-small.xpic rflashlight.eps rflashlight.pdf \ - statist.jpg statist.eps statist.pdf \ - wordlist wordlist2 wordlist3 \ + statist.jpg statist.eps statist.pdf statist.txt \ + wordlist wordlist2 wordlist3 wordlist4 \ bc_notes # Get rid of generated files when cleaning @@ -110,7 +111,7 @@ awkcard.pdf: awkcard.ps ps2pdf awkcard.ps awkcard.pdf -spell: spellmanual spellworkflow spellmanpage +spell: spellmanual spellworkflow spellmanpage spellinet spellmanual: @echo ==== gawktexi.in ====; @@ -126,3 +127,8 @@ @echo ==== gawk.1 ==== export LC_ALL=C ; spell "$(srcdir)"/gawk.1 | \ sort -u | comm -23 - "$(srcdir)"/wordlist3 + +spellinet: + @echo ==== gawkinet.texi ==== + export LC_ALL=C ; spell "$(srcdir)"/gawkinet.texi | \ + sort -u | comm -23 - "$(srcdir)"/wordlist4 diff -urN gawk-5.1.0/doc/Makefile.in gawk-5.1.1/doc/Makefile.in --- gawk-5.1.0/doc/Makefile.in 2020-04-14 14:44:52.000000000 +0300 +++ gawk-5.1.1/doc/Makefile.in 2021-10-28 20:22:06.000000000 +0300 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -17,7 +17,8 @@ # # doc/Makefile.am --- automake input file for gawk # -# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2007, 2010, 2011, 2016, 2017 +# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2007, 2010, 2011, 2016, 2017, +# 2021, # the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the @@ -115,20 +116,20 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libsigsegv.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \ - $(top_srcdir)/m4/socket.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \ $(top_srcdir)/m4/triplet-transformation.m4 \ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @@ -176,7 +177,8 @@ am__v_texidevnull_1 = INFO_DEPS = $(srcdir)/gawk.info $(srcdir)/gawkinet.info \ $(srcdir)/gawkworkflow.info -am__TEXINFO_TEX_DIR = $(srcdir) +TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex +am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux DVIS = gawk.dvi gawkinet.dvi gawkworkflow.dvi PDFS = gawk.pdf gawkinet.pdf gawkworkflow.pdf PSS = gawk.ps gawkinet.ps gawkworkflow.ps @@ -224,12 +226,13 @@ NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ - ChangeLog texinfo.tex +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/texinfo.tex ChangeLog texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -239,6 +242,8 @@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -246,6 +251,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GAWKLIBEXT = @GAWKLIBEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ @@ -277,8 +283,8 @@ MAKEINFO = @MAKEINFO@ --no-split --force MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -307,6 +313,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ acl_shlibext = @acl_shlibext@ am__include = @am__include@ @@ -379,8 +386,8 @@ macros colors no.colors $(man_MANS) \ lflashlight-small.xpic lflashlight.eps lflashlight.pdf \ rflashlight-small.xpic rflashlight.eps rflashlight.pdf \ - statist.jpg statist.eps statist.pdf \ - wordlist wordlist2 wordlist3 \ + statist.jpg statist.eps statist.pdf statist.txt \ + wordlist wordlist2 wordlist3 wordlist4 \ bc_notes @@ -634,7 +641,6 @@ cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -930,7 +936,7 @@ awkcard.pdf: awkcard.ps ps2pdf awkcard.ps awkcard.pdf -spell: spellmanual spellworkflow spellmanpage +spell: spellmanual spellworkflow spellmanpage spellinet spellmanual: @echo ==== gawktexi.in ====; @@ -947,6 +953,11 @@ export LC_ALL=C ; spell "$(srcdir)"/gawk.1 | \ sort -u | comm -23 - "$(srcdir)"/wordlist3 +spellinet: + @echo ==== gawkinet.texi ==== + export LC_ALL=C ; spell "$(srcdir)"/gawkinet.texi | \ + sort -u | comm -23 - "$(srcdir)"/wordlist4 + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -urN gawk-5.1.0/doc/statist.txt gawk-5.1.1/doc/statist.txt --- gawk-5.1.0/doc/statist.txt 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/doc/statist.txt 2020-04-26 17:07:19.000000000 +0300 @@ -0,0 +1,23 @@ + 0.4 ,------------.------------_------------.------------, + | : : sample 1 :::: | + | : : sample 2 ---- | + 0.3 |- : :_ -| + | : ,: `, | + | : / : \ | + 0.2 |- : / : \ -| + | : / : \ | + | : / : \ | + 0.1 |- : / : \ -| + | : / : \ | + | : ,' : `, | + 0 |----------------'-' `-----`----------| + | | + | | +-0.1 |- p(m1=m2) =0.0863798346775753 -| + | | + | | +-0.2 |- p(v1=v2) =0.31647637745891 -| + | | + | | +-0.3 `------------'------------'------------'------------' + -10 5 0 5 10 \ No newline at end of file diff -urN gawk-5.1.0/doc/texinfo.tex gawk-5.1.1/doc/texinfo.tex --- gawk-5.1.0/doc/texinfo.tex 2020-04-13 09:44:50.000000000 +0300 +++ gawk-5.1.1/doc/texinfo.tex 2021-10-23 21:49:09.000000000 +0300 @@ -3,9 +3,9 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2020-02-11.09} +\def\texinfoversion{2021-04-25.21} % -% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. +% Copyright 1985, 1986, 1988, 1990-2021 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -33,7 +33,7 @@ % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % -% Send bug reports to bug-texinfo@gnu.org. Please include including a +% Send bug reports to bug-texinfo@gnu.org. Please include a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % @@ -349,34 +349,19 @@ \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % + \checkchapterpage + % % Retrieve the information for the headings from the marks in the page, % and call Plain TeX's \makeheadline and \makefootline, which use the % values in \headline and \footline. % - % This is used to check if we are on the first page of a chapter. - \ifcase1\the\savedtopmark\fi - \let\prevchaptername\thischaptername - \ifcase0\firstmark\fi - \let\curchaptername\thischaptername - % - \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi - % - \ifx\curchaptername\prevchaptername - \let\thischapterheading\thischapter - \else - % \thischapterheading is the same as \thischapter except it is blank - % for the first page of a chapter. This is to prevent the chapter name - % being shown twice. - \def\thischapterheading{}% - \fi - % % Common context changes for both heading and footing. % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% - % \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% % @@ -423,6 +408,22 @@ \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } +% Check if we are on the first page of a chapter. Used for printing headings. +\newif\ifchapterpage +\def\checkchapterpage{% + % Get the chapter that was current at the end of the last page + \ifcase1\the\savedtopmark\fi + \let\prevchaptername\thischaptername + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \let\curchaptername\thischaptername + % + \ifx\curchaptername\prevchaptername + \chapterpagefalse + \else + \chapterpagetrue + \fi +} % Argument parsing @@ -571,9 +572,8 @@ \fi } -% @end foo executes the definition of \Efoo. -% But first, it executes a specialized version of \checkenv -% + +% @end foo calls \checkenv and executes the definition of \Efoo. \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else @@ -1002,6 +1002,14 @@ \global\everypar = {}% } +% leave vertical mode without cancelling any first paragraph indent +\gdef\imageindent{% + \toks0=\everypar + \everypar={}% + \ptexnoindent + \global\everypar=\toks0 +} + % @refill is a no-op. \let\refill=\relax @@ -1010,7 +1018,7 @@ \let\setfilename=\comment % @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} +\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} \message{pdf,} @@ -1137,6 +1145,45 @@ \fi +% Output page labels information. +% See PDF reference v.1.7 p.594, section 8.3.1. +\ifpdf +\def\pagelabels{% + \def\title{0 << /P (T-) /S /D >>}% + \edef\roman{\the\romancount << /S /r >>}% + \edef\arabic{\the\arabiccount << /S /D >>}% + % + % Page label ranges must be increasing. Remove any duplicates. + % (There is a slight chance of this being wrong if e.g. there is + % a @contents but no @titlepage, etc.) + % + \ifnum\romancount=0 \def\roman{}\fi + \ifnum\arabiccount=0 \def\title{}% + \else + \ifnum\romancount=\arabiccount \def\roman{}\fi + \fi + % + \ifnum\romancount<\arabiccount + \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax + \else + \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax + \fi +} +\else + \let\pagelabels\relax +\fi + +\newcount\pagecount \pagecount=0 +\newcount\romancount \romancount=0 +\newcount\arabiccount \arabiccount=0 +\ifpdf + \let\ptxadvancepageno\advancepageno + \def\advancepageno{% + \ptxadvancepageno\global\advance\pagecount by 1 + } +\fi + + % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be @@ -1427,7 +1474,13 @@ % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. \def\numchapentry##1##2##3##4{% + \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\unnchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% @@ -1669,9 +1722,13 @@ % Therefore, we read toc only once. % % We use node names as destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% - \dopdfoutline{##1}{1}{##3}{##4}}% + \dopdfoutline{##2 ##1}{1}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{2}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% @@ -1683,7 +1740,8 @@ \let\appsecentry\numsecentry% \let\appsubsecentry\numsubsecentry% \let\appsubsubsecentry\numsubsubsecentry% - \let\unnchapentry\numchapentry% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{1}{##3}{##4}}% \let\unnsecentry\numsecentry% \let\unnsubsecentry\numsubsecentry% \let\unnsubsubsecentry\numsubsubsecentry% @@ -1812,19 +1870,23 @@ \closein 1 \endgroup % - \def\xetexpdfext{pdf}% - \ifx\xeteximgext\xetexpdfext - \XeTeXpdffile "#1".\xeteximgext "" - \else - \def\xetexpdfext{PDF}% + % Putting an \hbox around the image can prevent an over-long line + % after the image. + \hbox\bgroup + \def\xetexpdfext{pdf}% \ifx\xeteximgext\xetexpdfext \XeTeXpdffile "#1".\xeteximgext "" \else - \XeTeXpicfile "#1".\xeteximgext "" + \def\xetexpdfext{PDF}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \XeTeXpicfile "#1".\xeteximgext "" + \fi \fi - \fi - \ifdim \wd0 >0pt width \xeteximagewidth \fi - \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + \ifdim \wd0 >0pt width \xeteximagewidth \fi + \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + \egroup } \fi @@ -2496,7 +2558,7 @@ \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} -\def\tt{\fam=\ttfam \setfontstyle{tt}} +\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. @@ -2622,8 +2684,6 @@ \definetextfontsizexi -\message{markup,} - % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have @@ -2631,68 +2691,14 @@ % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } -% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will -% define and register \INITMACRO to be called on markup style changes. -% \INITMACRO can check \currentmarkupstyle for the innermost -% style. - -\let\currentmarkupstyle\empty - -\def\setupmarkupstyle#1{% - \def\currentmarkupstyle{#1}% - \markupstylesetup -} - -\let\markupstylesetup\empty - -\def\defmarkupstylesetup#1{% - \expandafter\def\expandafter\markupstylesetup - \expandafter{\markupstylesetup #1}% - \def#1% -} - -% Markup style setup for left and right quotes. -\defmarkupstylesetup\markupsetuplq{% - \expandafter\let\expandafter \temp - \csname markupsetuplq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuplqdefault \else \temp \fi -} - -\defmarkupstylesetup\markupsetuprq{% - \expandafter\let\expandafter \temp - \csname markupsetuprq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuprqdefault \else \temp \fi -} - { \catcode`\'=\active \catcode`\`=\active -\gdef\markupsetuplqdefault{\let`\lq} -\gdef\markupsetuprqdefault{\let'\rq} - -\gdef\markupsetcodequoteleft{\let`\codequoteleft} -\gdef\markupsetcodequoteright{\let'\codequoteright} +\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} +\gdef\setregularquotes{\let`\lq \let'\rq} } -\let\markupsetuplqcode \markupsetcodequoteleft -\let\markupsetuprqcode \markupsetcodequoteright -% -\let\markupsetuplqexample \markupsetcodequoteleft -\let\markupsetuprqexample \markupsetcodequoteright -% -\let\markupsetuplqkbd \markupsetcodequoteleft -\let\markupsetuprqkbd \markupsetcodequoteright -% -\let\markupsetuplqsamp \markupsetcodequoteleft -\let\markupsetuprqsamp \markupsetcodequoteright -% -\let\markupsetuplqverb \markupsetcodequoteleft -\let\markupsetuprqverb \markupsetcodequoteright -% -\let\markupsetuplqverbatim \markupsetcodequoteleft -\let\markupsetuprqverbatim \markupsetcodequoteright - % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it @@ -2855,7 +2861,7 @@ } % @samp. -\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} +\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp @@ -2898,8 +2904,7 @@ \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup - \setupmarkupstyle{code}% - % The following should really be moved into \setupmarkupstyle handlers. + \setcodequotes \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash @@ -2987,10 +2992,18 @@ % arg (if given), and not the url (which is then just the link target). \newif\ifurefurlonlylink +% The default \pretolerance setting stops the penalty inserted in +% \urefallowbreak being a discouragement to line breaking. Set it to +% a negative value for this paragraph only. Hopefully this does not +% conflict with redefinitions of \par done elsewhere. +\def\nopretolerance{% +\pretolerance=-1 +\def\par{\endgraf\pretolerance=100 \let\par\endgraf}% +} + % The main macro is \urefbreak, which allows breaking at expected -% places within the url. (There used to be another version, which -% didn't support automatic breaking.) -\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +% places within the url. +\def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak % \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} @@ -3045,7 +3058,7 @@ \urefcatcodes % \global\def\urefcode{\begingroup - \setupmarkupstyle{code}% + \setcodequotes \urefcatcodes \let&\urefcodeamp \let.\urefcodedot @@ -3101,14 +3114,14 @@ % Allow a ragged right output to aid breaking long URL's. There can % be a break at the \allowbreak with no extra glue (if the existing stretch in -% the line is sufficent), a break at the \penalty100 with extra glue added +% the line is sufficient), a break at the \penalty with extra glue added % at the end of the line, or no break at all here. % Changing the value of the penalty and/or the amount of stretch affects how -% preferrable one choice is over the other. +% preferable one choice is over the other. \def\urefallowbreak{% - \allowbreak + \penalty0\relax \hskip 0pt plus 2 em\relax - \penalty300 + \penalty1000\relax \hskip 0pt plus -2 em\relax } @@ -3166,8 +3179,8 @@ \def\kbdsub#1#2#3\par{% \def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setcodequotes\look}}\fi + \else{\tclose{\kbdfont\setcodequotes\look}}\fi } % definition of @key that produces a lozenge. Doesn't adjust to text size. @@ -3184,7 +3197,7 @@ % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % -\def\key#1{{\setupmarkupstyle{key}% +\def\key#1{{\setregularquotes \nohyphenation \ifmonospace\else\tt\fi #1}\null} @@ -3305,6 +3318,29 @@ \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} \def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% +% provide this command from LaTeX as it is very common +\def\frac#1#2{{{#1}\over{#2}}} + +% @displaymath. +% \globaldefs is needed to recognize the end lines in \tex and +% \end tex. Set \thisenv as @end displaymath is seen before @end tex. +{\obeylines +\globaldefs=1 +\envdef\displaymath{% +\tex% +\def\thisenv{\displaymath}% +\begingroup\let\end\displaymathend% +$$% +} + +\def\displaymathend{$$\endgroup\end}% + +\def\Edisplaymath{% +\def\thisenv{\tex}% +\end tex +}} + + % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. @@ -3509,7 +3545,7 @@ % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % -\def\pounds{{\it\$}} +\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik @@ -3658,11 +3694,19 @@ \fi % Quotes. -\chardef\quotedblleft="5C -\chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' +% only change font for tt for correct kerning and to avoid using +% \ecfont unless necessary. +\def\quotedblleft{% + \ifmonospace{\ecfont\char"10}\else{\char"5C}\fi +} + +\def\quotedblright{% + \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi +} + \message{page headings,} @@ -3784,12 +3828,19 @@ \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages +\newtoks\evenchapheadline% headline on even pages with a new chapter +\newtoks\oddchapheadline % headline on odd pages with a new chapter \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make \makeheadline and \makefootline in Plain TeX use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} +\headline={{\textfonts\rm + \ifchapterpage + \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi + \else + \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi + \fi}} + \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax @@ -3805,12 +3856,14 @@ \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} + \global\evenchapheadline=\evenheadline} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% + \global\oddchapheadline=\oddheadline} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% @@ -3877,37 +3930,34 @@ \parseargdef\headings{\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination - \evenheadline={\hfil}\evenfootline={\hfil}% - \oddheadline={\hfil}\oddfootline={\hfil}% + \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. +\def\pageone{ + \global\pageno=1 + \global\arabiccount = \pagecount +} + % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage +\pageone +\HEADINGSdoublex } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chappager +\pageone +\HEADINGSsinglex } \def\HEADINGSon{\HEADINGSdouble} @@ -3917,7 +3967,9 @@ \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\folio\hfil}} +\global\oddchapheadline={\line{\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } @@ -3925,8 +3977,22 @@ \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\hfil\folio}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% for @setchapternewpage off +\def\HEADINGSsinglechapoff{% +\pageone +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline=\evenheadline +\global\oddchapheadline=\oddheadline \global\let\contentsalignmacro = \chappager } @@ -4235,82 +4301,8 @@ \doitemize{#1.}\flushcr } -% @alphaenumerate and @capsenumerate are abbreviations for giving an arg -% to @enumerate. -% -\def\alphaenumerate{\enumerate{a}} -\def\capsenumerate{\enumerate{A}} -\def\Ealphaenumerate{\Eenumerate} -\def\Ecapsenumerate{\Eenumerate} - % @multitable macros -% Amy Hendrickson, 8/18/94, 3/6/96 -% -% @multitable ... @end multitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width -% can be specified either with sample text given in a template line, -% or in percent of \hsize, the current width of text on page. - -% Table can continue over pages but will only break between lines. - -% To make preamble: -% -% Either define widths of columns in terms of percent of \hsize: -% @multitable @columnfractions .25 .3 .45 -% @item ... -% -% Numbers following @columnfractions are the percent of the total -% current hsize to be used for each column. You may use as many -% columns as desired. - - -% Or use a template: -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item ... -% using the widest term desired in each column. - -% Each new table line starts with @item, each subsequent new column -% starts with @tab. Empty columns may be produced by supplying @tab's -% with nothing between them for as many times as empty columns are needed, -% ie, @tab@tab@tab will produce two empty columns. - -% @item, @tab do not need to be on their own lines, but it will not hurt -% if they are. - -% Sample multitable: - -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff -% @tab Many paragraphs of text may be used in any column. -% -% They will wrap at the width determined by the template. -% @item@tab@tab This will be in third column. -% @end multitable - -% Default dimensions may be reset by user. -% @multitableparskip is vertical space between paragraphs in table. -% @multitableparindent is paragraph indent in table. -% @multitablecolmargin is horizontal space to be left between columns. -% @multitablelinespace is space to leave between table items, baseline -% to baseline. -% 0pt means it depends on current normal line spacing. -% -\newskip\multitableparskip -\newskip\multitableparindent -\newdimen\multitablecolspace -\newskip\multitablelinespace -\multitableparskip=0pt -\multitableparindent=6pt -\multitablecolspace=12pt -\multitablelinespace=0pt % Macros used to set up halign preamble: % @@ -4358,8 +4350,6 @@ \go } -% multitable-only commands. -% % @headitem starts a heading row, which we typeset in bold. Assignments % have to be global since we are inside the implicit group of an % alignment entry. \everycr below resets \everytab so we don't have to @@ -4376,14 +4366,8 @@ % default for tables with no headings. \let\headitemcrhook=\relax % -% A \tab used to include \hskip1sp. But then the space in a template -% line is not enough. That is bad. So let's go back to just `&' until -% we again encounter the problem the 1sp was intended to solve. -% --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% -% @multitable ... @end multitable definitions: -% \newtoks\everytab % insert after every tab. % \envdef\multitable{% @@ -4398,9 +4382,8 @@ % \tolerance=9500 \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent + \parskip=0pt + \parindent=6pt \overfullrule=0pt \global\colcount=0 % @@ -4430,47 +4413,24 @@ % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 - \multistrut + \strut \vtop{% - % Use the current \colcount to find the correct column width: + \advance\hsize by -1\leftskip + % Find the correct column width \hsize=\expandafter\csname col\the\colcount\endcsname % - % In order to keep entries from bumping into each other - % we will add a \leftskip of \multitablecolspace to all columns after - % the first one. - % - % If a template has been used, we will add \multitablecolspace - % to the width of each template entry. - % - % If the user has set preamble in terms of percent of \hsize we will - % use that dimension as the width of the column, and the \leftskip - % will keep entries from bumping into each other. Table will start at - % left margin and final column will justify at right margin. - % - % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip + \advance\hsize by\leftskip % Add indent of surrounding text \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace + % In order to keep entries from bumping into each other. + \leftskip=12pt + \ifsetpercent \else + % If a template has been used + \advance\hsize by \leftskip + \fi \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively - % marking characters. - \noindent\ignorespaces##\unskip\multistrut + \noindent\ignorespaces##\unskip\strut }\cr } \def\Emultitable{% @@ -4479,31 +4439,6 @@ \global\setpercentfalse } -\def\setmultitablespacing{% - \def\multistrut{\strut}% just use the standard line spacing - % - % Compute \multitablelinespace (if not defined by user) for use in - % \multitableparskip calculation. We used define \multistrut based on - % this, but (ironically) that caused the spacing to be off. - % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. -\ifdim\multitablelinespace=0pt -\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip -\global\advance\multitablelinespace by-\ht0 -\fi -% Test to see if parskip is larger than space between lines of -% table. If not, do nothing. -% If so, set to same dimension as multitablelinespace. -\ifdim\multitableparskip>\multitablelinespace -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller - % than skip between lines in the table. -\fi% -\ifdim\multitableparskip=0pt -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller - % than skip between lines in the table. -\fi} - \message{conditionals,} @@ -4841,7 +4776,7 @@ % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} -\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} +\def\docodeindexxxx #1{\docind{\indexname}{#1}} % Used for the aux, toc and index files to prevent expansion of Texinfo @@ -5138,43 +5073,44 @@ \def\ss{ss}% \def\th{th}% % - \def\LaTeX{LaTeX}% - \def\TeX{TeX}% + \let\do\indexnofontsdef + % + \do\LaTeX{LaTeX}% + \do\TeX{TeX}% % - % Assorted special characters. \defglyph gives the control sequence a - % definition that removes the {} that follows its use. - \defglyph\atchar{@}% - \defglyph\arrow{->}% - \defglyph\bullet{bullet}% - \defglyph\comma{,}% - \defglyph\copyright{copyright}% - \defglyph\dots{...}% - \defglyph\enddots{...}% - \defglyph\equiv{==}% - \defglyph\error{error}% - \defglyph\euro{euro}% - \defglyph\expansion{==>}% - \defglyph\geq{>=}% - \defglyph\guillemetleft{<<}% - \defglyph\guillemetright{>>}% - \defglyph\guilsinglleft{<}% - \defglyph\guilsinglright{>}% - \defglyph\leq{<=}% - \defglyph\lbracechar{\{}% - \defglyph\minus{-}% - \defglyph\point{.}% - \defglyph\pounds{pounds}% - \defglyph\print{-|}% - \defglyph\quotedblbase{"}% - \defglyph\quotedblleft{"}% - \defglyph\quotedblright{"}% - \defglyph\quoteleft{`}% - \defglyph\quoteright{'}% - \defglyph\quotesinglbase{,}% - \defglyph\rbracechar{\}}% - \defglyph\registeredsymbol{R}% - \defglyph\result{=>}% - \defglyph\textdegree{o}% + % Assorted special characters. + \do\atchar{@}% + \do\arrow{->}% + \do\bullet{bullet}% + \do\comma{,}% + \do\copyright{copyright}% + \do\dots{...}% + \do\enddots{...}% + \do\equiv{==}% + \do\error{error}% + \do\euro{euro}% + \do\expansion{==>}% + \do\geq{>=}% + \do\guillemetleft{<<}% + \do\guillemetright{>>}% + \do\guilsinglleft{<}% + \do\guilsinglright{>}% + \do\leq{<=}% + \do\lbracechar{\{}% + \do\minus{-}% + \do\point{.}% + \do\pounds{pounds}% + \do\print{-|}% + \do\quotedblbase{"}% + \do\quotedblleft{"}% + \do\quotedblright{"}% + \do\quoteleft{`}% + \do\quoteright{'}% + \do\quotesinglbase{,}% + \do\rbracechar{\}}% + \do\registeredsymbol{R}% + \do\result{=>}% + \do\textdegree{o}% % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. @@ -5189,7 +5125,10 @@ \macrolist \let\value\indexnofontsvalue } -\def\defglyph#1#2{\def#1##1{#2}} % see above + +% Give the control sequence a definition that removes the {} that follows +% its use, e.g. @AA{} -> AA +\def\indexnofontsdef#1#2{\def#1##1{#2}}% @@ -5208,6 +5147,20 @@ \fi } +% Same as \doind, but for code indices +\def\docind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\docindwrite + }% + \fi +} + % Check if an index file has been opened, and if not, open it. \def\requireopenindexfile#1{% \ifnum\csname #1indfile\endcsname=0 @@ -5274,6 +5227,9 @@ % trim spaces. \edef\trimmed{\segment}% \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \ifincodeindex + \edef\trimmed{\noexpand\code{\trimmed}}% + \fi % \xdef\bracedtext{\bracedtext{\trimmed}}% % @@ -5339,7 +5295,12 @@ % Write the entry in \indextext to the index file. % -\def\doindwrite{% + +\newif\ifincodeindex +\def\doindwrite{\incodeindexfalse\doindwritex} +\def\docindwrite{\incodeindextrue\doindwritex} + +\def\doindwritex{% \maybemarginindex % \atdummies @@ -5559,7 +5520,11 @@ \else \begindoublecolumns \catcode`\\=0\relax - \catcode`\@=12\relax + % + % Make @ an escape character to give macros a chance to work. This + % should work because we (hopefully) don't otherwise use @ in index files. + %\catcode`\@=12\relax + \catcode`\@=0\relax \input \jobname.\indexname s \enddoublecolumns \fi @@ -6401,18 +6366,16 @@ \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} +\global\def\HEADINGSon{\HEADINGSsinglechapoff}} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon @@ -6777,9 +6740,7 @@ % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund + % start on an odd page, unlike chapters. \contentsalignmacro \immediate\closeout\tocfile % @@ -6794,6 +6755,9 @@ % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi + \def\thistitle{}% no title in double-sided headings + % Record where the Roman numerals started. + \ifnum\romancount=0 \global\romancount=\pagecount \fi } % redefined for the two-volume lispref. We always output on @@ -6816,8 +6780,7 @@ \fi \closein 1 \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno + \contentsendroman } % And just the chapters. @@ -6852,10 +6815,20 @@ \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup + \contentsendroman +} +\let\shortcontents = \summarycontents + +% Get ready to use Arabic numerals again +\def\contentsendroman{% \lastnegativepageno = \pageno \global\pageno = \savepageno + % + % If \romancount > \arabiccount, the contents are at the end of the + % document. Otherwise, advance where the Arabic numerals start for + % the page numbers. + \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi } -\let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. @@ -6997,7 +6970,7 @@ % But \@ or @@ will get a plain @ character. \envdef\tex{% - \setupmarkupstyle{tex}% + \setregularquotes \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie @@ -7223,7 +7196,7 @@ % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: -% @example, @display, @format, @lisp +% @example, @display, @format, @lisp, @verbatim % \def\smallword{small} \def\nosmallword{nosmall} @@ -7269,9 +7242,9 @@ % \maketwodispenvdef{lisp}{example}{% \nonfillstart - \tt\setupmarkupstyle{example}% + \tt\setcodequotes \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return + \parsearg\gobble } % @display/@smalldisplay: same as @lisp except keep current font. % @@ -7429,7 +7402,7 @@ \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% - \setupmarkupstyle{verb}% + \setcodequotes \tabeightspaces % Respect line breaks, % print special symbols as themselves, and @@ -7444,13 +7417,9 @@ \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle -% tabs. The \global is in case the verbatim line starts with an accent, -% or some other command that starts with a begin-group. Otherwise, the -% entire \verbbox would disappear at the corresponding end-group, before -% it is typeset. Meanwhile, we can't have nested verbatim commands -% (can we?), so the \global won't be overwriting itself. +% tabs. \newbox\verbbox -\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} +\def\starttabbox{\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active @@ -7461,7 +7430,8 @@ \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw - \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + \wd\verbbox=\dimen\verbbox + \leavevmode\box\verbbox \starttabbox }% } \endgroup @@ -7471,17 +7441,14 @@ \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim - % The \leavevmode here is for blank lines. Otherwise, we would - % never \starttabbox and the \egroup would end verbatim mode. - \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% \tabexpand - \setupmarkupstyle{verbatim}% + \setcodequotes % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique @@ -7516,13 +7483,16 @@ % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. - \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + \xdef\doverbatim#1^^M#2@end verbatim{% + \starttabbox#2\egroup\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. + % The \egroup ends the \verbbox started at the end of the last line in + % the block. \endgroup % \envdef\verbatim{% - \setupverbatim\doverbatim + \setnormaldispenv\setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak @@ -7540,7 +7510,7 @@ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \edef\tmp{\noexpand\input #1 } \expandafter - }\tmp + }\expandafter\starttabbox\tmp\egroup \afterenvbreak }% } @@ -7892,7 +7862,7 @@ % leave the code in, but it's strange for @var to lead to typewriter. % Nowadays we recommend @code, since the difference between a ttsl hyphen % and a tt hyphen is pretty tiny. @code also disables ?` !`. - \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + \def\var##1{{\setregularquotes\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } @@ -8001,11 +7971,18 @@ } \fi +\let\E=\expandafter + % Used at the time of macro expansion. % Argument is macro body with arguments substituted \def\scanmacro#1{% \newlinechar`\^^M - \def\xeatspaces{\eatspaces}% + % expand the expansion of \eatleadingcr twice to maybe remove a leading + % newline (and \else and \fi tokens), then call \eatspaces on the result. + \def\xeatspaces##1{% + \E\E\E\E\E\E\E\eatspaces\E\E\E\E\E\E\E{\eatleadingcr##1% + }}% + \def\xempty##1{}% % % Process the macro body under the current catcode regime. \scantokens{#1@comment}% @@ -8058,6 +8035,11 @@ \unbrace{\gdef\trim@@@ #1 } #2@{#1} } +{\catcode`\^^M=\other% +\gdef\eatleadingcr#1{\if\noexpand#1\noexpand^^M\else\E#1\fi}}% +% Warning: this won't work for a delimited argument +% or for an empty argument + % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% @@ -8224,6 +8206,7 @@ \let\hash\relax % \hash is redefined to `#' later to get it into definitions \let\xeatspaces\relax + \let\xempty\relax \parsemargdefxxx#1,;,% \ifnum\paramno<10\relax\else \paramno0\relax @@ -8235,9 +8218,11 @@ \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% + {\xeatspaces{\hash\the\paramno\noexpand\xempty{}}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +% the \xempty{} is to give \eatleadingcr an argument in the case of an +% empty macro argument. % \parsemacbody, \parsermacbody % @@ -8826,7 +8811,7 @@ \else \ifhavexrefs % We (should) know the real title if we have the xref values. - \def\printedrefname{\refx{#1-title}{}}% + \def\printedrefname{\refx{#1-title}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% @@ -8920,7 +8905,7 @@ % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt - \refx{#1-snt}{}% + \refx{#1-snt}% \else \printedrefname \fi @@ -8955,28 +8940,30 @@ \else % Reference within this manual. % - % Only output a following space if the -snt ref is nonempty; for - % @unnumbered and @anchor, it won't be. - \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + % Only output a following space if the -snt ref is nonempty, as the ref + % will be empty for @unnumbered and @anchor. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi % % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % - % But we always want a comma and a space: - ,\space - % - % output the `page 3'. - \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - % Add a , if xref followed by a space - \if\space\noexpand\tokenafterxref ,% - \else\ifx\ \tokenafterxref ,% @TAB - \else\ifx\*\tokenafterxref ,% @* - \else\ifx\ \tokenafterxref ,% @SPACE - \else\ifx\ - \tokenafterxref ,% @NL - \else\ifx\tie\tokenafterxref ,% @tie - \fi\fi\fi\fi\fi\fi + \expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi + \fi \fi\fi \fi \endlink @@ -9043,9 +9030,8 @@ \fi\fi\fi } -% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX -% is output afterwards if non-empty. -\def\refx#1#2{% +% \refx{NAME} - reference a cross-reference string named NAME. +\def\refx#1{% \requireauxfile {% \indexnofonts @@ -9072,7 +9058,6 @@ % It's defined, so just use it. \thisrefX \fi - #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Define a control @@ -9182,10 +9167,10 @@ \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other + \catcode`\_=\active + \catcode`\|=\active + \catcode`\<=\active + \catcode`\>=\active \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other @@ -9406,7 +9391,7 @@ \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names - \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro + \makevalueexpandable % If the image is by itself, center it. \ifvmode \imagevmodetrue @@ -9432,7 +9417,7 @@ % On the other hand, if we are in the case of @center @image, we don't % want to start a paragraph, which will create a hsize-width box and % eradicate the centering. - \ifx\centersub\centerV\else \noindent \fi + \ifx\centersub\centerV \else \imageindent \fi % % Output the image. \ifpdf @@ -10706,6 +10691,8 @@ \DeclareUnicodeCharacter{0233}{\=y}% \DeclareUnicodeCharacter{0237}{\dotless{j}}% % + \DeclareUnicodeCharacter{02BC}{'}% + % \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% % % Greek letters upper case @@ -11340,6 +11327,18 @@ \globaldefs = 0 }} +\def\bsixpaper{{\globaldefs = 1 + \afourpaper + \internalpagesizes{140mm}{100mm}% + {-6.35mm}{-12.7mm}% + {\bindingoffset}{14pt}% + {176mm}{125mm}% + \let\SETdispenvsize=\smallword + \lispnarrowing = 0.2in + \globaldefs = 0 +}} + + % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. @@ -11353,12 +11352,12 @@ \setleading{\textleading}% % \dimen0 = #1\relax - \advance\dimen0 by \voffset - \advance\dimen0 by 1in % reference point for DVI is 1 inch from top of page + \advance\dimen0 by 2.5in % default 1in margin above heading line + % and 1.5in to include heading, footing and + % bottom margin % \dimen2 = \hsize - \advance\dimen2 by \normaloffset - \advance\dimen2 by 1in % reference point is 1 inch from left edge of page + \advance\dimen2 by 2in % default to 1 inch margin on each side % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% @@ -11445,7 +11444,7 @@ \let> = \activegtr \let~ = \activetilde \let^ = \activehat - \markupsetuplqdefault \markupsetuprqdefault + \setregularquotes \let\b = \strong \let\i = \smartitalic % in principle, all other definitions in \tex have to be undone too. @@ -11504,8 +11503,7 @@ @let|=@normalverticalbar @let~=@normaltilde @let\=@ttbackslash - @markupsetuplqdefault - @markupsetuprqdefault + @setregularquotes @unsepspaces } } @@ -11598,8 +11596,7 @@ @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active -@markupsetuplqdefault -@markupsetuprqdefault +@setregularquotes @c Local variables: @c eval: (add-hook 'before-save-hook 'time-stamp) @@ -11612,3 +11609,4 @@ @c vim:sw=2: @enablebackslashhack + diff -urN gawk-5.1.0/doc/wordlist gawk-5.1.1/doc/wordlist --- gawk-5.1.0/doc/wordlist 2020-04-10 15:25:02.000000000 +0300 +++ gawk-5.1.1/doc/wordlist 2021-10-25 19:18:13.000000000 +0300 @@ -4,7 +4,6 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCXYabcdxyz ACLs -ACM ADR AF ANDing @@ -21,14 +20,12 @@ AWKLIBPATH AWKPATH AWKREADFUNC -Acknowledgements -Adams's +AbbC AdditionalResources Affero Aharon Aho Akim -Anders Andreas Argind Assaf @@ -38,6 +35,7 @@ Autotools Avahi Awk +Awka Awklib Awkstuff Ayalon @@ -46,18 +44,15 @@ BEL BINMODE BLKSIZE +BREs BSIZE BTL BWK Banzai BeOS -Bentley's Benzinger -Bitwise Bleah Bornstein -Bourne -Breakpoint Brin's Brini Brini's @@ -71,13 +66,13 @@ Byuid CAKuGj CASEFOLD +CBA CC CDE CEST CFLAGS CGI CHEM -CMP COMFOLLOW COMMONEXT CONFIG @@ -85,8 +80,9 @@ CRC CRTL CSV +CSVMODE CTYPE -Callback +CbbA Cc Chana ChangeLog @@ -98,7 +94,7 @@ Cn Co Collado -Constant's +Collado's Coprocess Coprocesses Coreutils @@ -115,7 +111,6 @@ DEV DF DFA -DGAWK DHAVE DIR DJGPP @@ -123,11 +118,8 @@ DST DTD DVI -Datafile Davide Davide's -Decrement -Decrementing Deifik Demaille Dinline @@ -135,15 +127,10 @@ Duman Dupword EAGAIN -EBCDIC EC EINTR -EMISTERED EMRED -EMX ENDFILE -ENVIRON -EOF EREs ERRNO ESC @@ -151,15 +138,12 @@ ETIMEDOUT EWOULDBLOCK EY -Eberhard Ec Ee Efraim Eggert Egrep Embeddable -Emptor -Executables Exp Expat Ey @@ -168,9 +152,7 @@ FDL FF FFN -FHS FIELDWIDTHS -FILENAME FIXME FN FNM @@ -180,24 +162,20 @@ FP FPAT FS -FSF -FSF's FTS FULLXREF FUNCTAB Fabi Fabius Fenlason -Filename Filetrans Fnames Fnmatch -Formatter Formfeed -Fortran FreeBSD Friedl GAWKINETTITLE +GAWKWORKFLOWTITLE GCC GCC's GDB @@ -205,7 +183,6 @@ GMP GMT GNITS -GNU's GNV GPL GR @@ -214,7 +191,7 @@ Getline Getlocaltime Getopt -GitHub +Ggnru Grigera Groucho GyeoNxTFby @@ -231,11 +208,11 @@ Hartholz Hasegawa Hermann -Hitchhiker's Hoare's +Hoijui's Hurd -Hurray IA +IDs IFBLK IFCHR IFDIR @@ -256,7 +233,6 @@ ISLNK Igawk Illumos -Incrementing Inf Init Inited @@ -264,6 +240,7 @@ InstallingGNVPackages Internetworking Isamu +Isnumeric Itanium JCPU JF @@ -273,8 +250,8 @@ JVM Jaegermann Jannick +Jawk Jeroen -Johansen Johansen's Jul Jun @@ -283,19 +260,15 @@ Kai Kasal Kenobi -Kernighan -Kernighan's Korn Krauze Kwityn Kwok LARGEFILE LC -LDFLAGS LEQ LF LGPL -LIBS LINENO LXIX Langston @@ -307,8 +280,6 @@ MALLOC MAXLINES MC -MERCHANTABILITY -MINGW MIPS MKS MMC @@ -323,8 +294,6 @@ MSYS MVX MW -Makefile -Makefiles Malka Malmberg MathWorld @@ -358,7 +327,6 @@ NUMCUR NaN Nachum -NeXT Neacsu Neacsu's NetBSD @@ -373,13 +341,11 @@ Noninteractive Nonoption Nov -O'Reilly ODS OFMT OFS OI OM -OMF ORG ORS OU @@ -402,19 +368,16 @@ Ord Ormos Ou +Outfile Oy PASSWD PATCHLEVEL -PATHNAME PCPU PCSI PDF PEBKAC PNG POS -POSIX -POSIXLY -PP PQgetvalue PREC PROCINFO @@ -423,36 +386,28 @@ PWD Panos Papadopoulos -Parsers Passwd Peifer PiFormulas Plauger -Plugin PostScript PostgreSQL Postprocessing -PowerPC Pr Pre Preopened -Preprocessor Prestandard Printf -Prolog +Proulx QSE QSINGLE QTawk Quanstrom Quicksort QuikTrim -RANLIB -README REGEX -RELICENSING REVOUT RLENGTH -RMS ROUNDMODE RRI RSTART @@ -463,16 +418,12 @@ Readdir Readfile Readline -Redirections -Redis Regex Regexp Regexps -Reimplementing Retryable Revout RiscOS -Ritchie Rivka Rvalue SA @@ -483,7 +434,6 @@ SIGINT SIGQUIT SIGUSR -SPARC SRC SS SSC @@ -510,11 +460,8 @@ Skywalker Smalltalk Smallville -Solaris -Stallman Std Stepan -Stewartson's Strnum Strtonum Subarrays @@ -522,7 +469,6 @@ SunOS SylvestersSequence TABs -TCP TEXTDOMAIN TIDYMEM TM @@ -531,45 +477,34 @@ TZ Tcl Texinfo -Timestamp Topher Toporek Trueman UC -UDP UI -UNIXROOT +ULONG USR UTC UTF -Ubuntu Ulrich -Ultrix -Unary -Uncomment Uniq Uwe VER -VMS VT -Vax Versioning Vinschen WIPO +WONTFIX Walamazoo Wallin -Wasserman Watchpoint Wc -Weinberger Weinberger's Weisstein Wfile Wfoo WhidbeyNet -Whitespace Whoope -Wikipedia Woehlke Wsource Wversion @@ -588,23 +523,20 @@ Zaphod Zaretskii Zaretskii's -Zcrtdll Zeichen Zeichenkette -Zlinker -Zmt -Zomf Zoulas -Zstack aB aCa aIt aSAgbfocFVtguG +aa aaa aaaabcd aab aabbb aabbbccccddd +aac aaccdd ab abCDEf @@ -617,11 +549,14 @@ abcdefghi abcdefghijklmnopqrstuvwxyz abcdxyz +abq +abr abs abx +abz ac +aca acbfoo -acknowledgements aclocal addrs adm @@ -652,7 +587,6 @@ andspan andy anthony -apache api appendixsec appendixsubsec @@ -661,7 +595,6 @@ aqb aqc ar -arctangent arg argc args @@ -717,10 +650,9 @@ baselineskip bax baz +bb bc bcd -bduncan -beachnet becky beebe beginfile @@ -736,7 +668,6 @@ bindtextdomain binmode bisonfix -bitwise blabber blabbers blabby @@ -749,26 +680,21 @@ blockquote blocksize bool -boolean boundar br brabble brabbles branchname -breakpoint brennan brent brini broderick bt -btl buening buf bufsize buildable -builtin busybox -bwk bwkawk bycount bygid @@ -777,8 +703,6 @@ bz bzip cAsE -callback -callbacks calloc caltech camelot @@ -796,7 +720,6 @@ cde cdot ce -centerline cgi cgit cgiwrap @@ -812,6 +735,7 @@ chmod chown chr +cilnqsvx cinaP cinap cindex @@ -837,7 +761,6 @@ colsep colspec columnfractions -colwidth com comcast commandline @@ -860,16 +783,12 @@ coreutils cos cosmogen -counterintuitive -cozx cp cplusplus cr -cron csh cssun csv -csvil ctime cul curdir @@ -882,8 +801,6 @@ daburashka danfuzz dartmouth -datadir -datafile datafiles datespec dave @@ -895,36 +812,27 @@ dd ddd de -deallocations debuggee -debugger's decommented -decrement -decrementing def del delarray delim -delorie denorm depcomp desc descrip deserialize -designator dest -destructors detailmenu dev devbsize -dfa dfn dgawk dict diff diffs digts -dimensioned dir dircategory direntry @@ -932,7 +840,6 @@ div djgpp dl -dlload dlopen dlsym dn @@ -941,12 +848,10 @@ dont dorking doug -dpitts dportein dps dresdnerbank drwxr -dtect dumparray duncan dup @@ -960,19 +865,16 @@ egid egrep eklye -el elem elif eliz elled +elvish emalloc embeddable emory emph -emptor -emxomfar en -encodings enddots endfile endgrent @@ -983,7 +885,6 @@ enrichening enum env -environ eof eql equiv @@ -999,17 +900,13 @@ eval evenheading exe -execl -executables -exepack exitval exp expat expr ext -extenders -extern ezalloc +ezrosent ezwinports fPIC fabi @@ -1024,6 +921,7 @@ fffffffffff fffffffffffd fflush +fgrep fi fieldlist fieldpat @@ -1033,13 +931,8 @@ filedata filefuncs filelist -filename -filenames fileno fileref -filesystem -filesystem's -filesystems filetype filll finalout @@ -1049,6 +942,7 @@ firstname flac flist +fmod fmode fn fname @@ -1062,8 +956,6 @@ foooo foooobazbarrrrr fopen -formatter -formatters formfeed fp fpat @@ -1071,6 +963,7 @@ fpbits fprintf fr +frawk freebsd freefriends freq @@ -1099,6 +992,7 @@ gawkpath gawkrc gawktexi +gawkworkflow gcc gdb gdef @@ -1131,6 +1025,7 @@ github gmail gmo +gmon gmp gmplib gmx @@ -1139,14 +1034,16 @@ goawk golang goldberg -goodie -goto +gprof gr grcat +grent grep groff groupawk +groupnames groupsbyuser +groupset grp gst gsub @@ -1156,8 +1053,6 @@ gz gzip halign -hankedr -hardcoded hboxes headitem helpfull @@ -1168,8 +1063,7 @@ hhob histsort hlp -hobbes -hodge +hoijui hotmail hpmuseum hrule @@ -1209,20 +1103,16 @@ iggy ileaf illumos +ilnqsvx imagedata imageobject -implementers -implementors inbuf -incrementing ind indirectcall indx inelegancies inet -inexactitude inf -infodir inforef informaltable infusarum @@ -1230,8 +1120,6 @@ ington init inited -initializations -inline inlinefmt inlineraw inmargin @@ -1244,11 +1132,11 @@ intdiv interline internl -interprocess io iobuf isarray isatty +isnumeric iso ist itd @@ -1274,7 +1162,6 @@ julie karl katie -kb kbd kilgrona kmem @@ -1292,17 +1179,16 @@ lefthand len leq -lex +lexico lf lflashlight -lgcc lgpl lhs li libexec -libexecdir libintl libmawk +libs libtool licensors lineannotation @@ -1313,7 +1199,7 @@ linksize linkval lintwarn -linux +listinfo listsize literallayout localhost @@ -1334,23 +1220,20 @@ lvalue lvalues lwall -lwc +lwcm madronabluff -maintainer's +mailx makeinfo malloc malloced -mandir -matcher -matchers matchit mathcs mathworld mawk maxelt maxsub -mbfw -mbprintf +mbs +mcollado mediaobject mem memcpy @@ -1366,7 +1249,6 @@ miriam misc mit -mk mkdir mkinstalldirs mktime @@ -1398,8 +1280,6 @@ mv mydata myfile -myfileaa -myfileab myfiles myfunc mylongopts @@ -1412,8 +1292,6 @@ nLINE nOUCH nameend -namespace -namespaces namest nan nanosleep @@ -1424,7 +1302,6 @@ nbsp nc ncustomers -nd ndash ndevicesim ndirs @@ -1450,7 +1327,6 @@ nls nmatches nmemb -nmsu nnn noalign noassign @@ -1470,7 +1346,6 @@ noninteractive noninteractively nonmatching -nonnegative nonnumeric nonobvious nonoption @@ -1484,9 +1359,8 @@ nonrepeated nonspecial nonwhitespace -noone +noyesno nr -nroff ns nul num @@ -1515,7 +1389,6 @@ onlinepubs oo op -opcodes openbsd openfortress opengroup @@ -1546,15 +1419,10 @@ panos para param -parameterized parsedebug -parser's -parsers passwd passwdawk pathlist -pathname -pathnames pathto patsplit pawk @@ -1567,6 +1435,7 @@ perl perscr perscrutabor +pg pgawk pgr pgrpid @@ -1581,43 +1450,29 @@ pival pkgdatadir pkgextensiondir -plugin pm pmode png po -podge -portably posix -postfix postincrement pp ppid -pr pre prec -precedences -precisions prefaceinfo preformatted preopened -prepend -prepended -prepending -prepends prepinfo -preprocessor prev -princeton printf printindex printpage -priori proc processarray -profiler prog progfile +ps pseudorandom psl psx @@ -1631,6 +1486,7 @@ pw pwcat pwd +pwent pxref qb qc @@ -1643,7 +1499,6 @@ quiktrim quux rab -radians raincloud raison ramey @@ -1657,38 +1512,32 @@ readdir readfile readline +realdata realloc +realprogram recomputation -reddit redir -redirections reenable -regcomp regex -regexec regexp regexps -reimplementing relationals -relicensing reparsed repl repo -representable resplit ret retargetable -retitle retval revoutput revtwoway rfc rflashlight +rguid righthand rm rms ro -roundTiesToAway roundTiesToEven roundTowardNegative roundTowardPositive @@ -1700,8 +1549,7 @@ rsort rt ru -runnable -runtime +ruid rvalues rw rwarray @@ -1711,14 +1559,12 @@ samuel sar savannah -sbcglobal sbin sbuf sc scanf scl scm -scottd sdot searchlist sed @@ -1733,25 +1579,20 @@ settitle sf sfx -shar shellquote shortdayname -shorthands shortmonth shorttitlepage showargs shu si -signedness significand -sim sizeof skeeve skynet slrn smallbook smallexample -smallskip smtp snmp snobol @@ -1764,12 +1605,10 @@ sp spanname spanspec -spawnl sprintf sprintlink sq sqQ -sqrt srand src ssize @@ -1802,26 +1641,15 @@ struct subarray subarrays -subdirectories -subdirectory subentry -subexpression -subexpressions sublicense sublicenses -subscripting substr -substring -substrings subsubsection -subunit sudo summarycontents -superset -svil sylogin sym -symlink syncodeindex synindex sys @@ -1836,6 +1664,7 @@ tarballs tbody tbreak +tbytes tchars tcount tcp @@ -1854,19 +1683,16 @@ tew tex texi -texindex texinfo textdomain tgroup -th thead thes thischapter thisopt thispage thrudvang -timestamp -timestamps +tid timex titlepage tlines @@ -1876,14 +1702,10 @@ tolower toupper tr -traceback tracy transfile -troff trunc -tst ttotal -tty ttyD ttyV ttyp @@ -1892,11 +1714,11 @@ tvpeople twords txt -typedef typeof tyw ucb udc +udcf udp uid ulink @@ -1904,13 +1726,10 @@ umb umich un -unary -uncommented undef undevicesimus undisplay unduplicated -unformatted unhandled unicode uniq @@ -1922,18 +1741,12 @@ unredirected unsetting unspecialize -untyped unwatch -unwritable uref urefurlonlylinktrue urgen url urlcolor -usebracesinindexestrue -usenet -username -usernames usleep usr ut @@ -1951,10 +1764,8 @@ vbox vc vec -versa versioned vglue -vio vms vmsbuild vr @@ -1965,7 +1776,6 @@ washington wass watchpoint -watchpoints wb wc wcscoll @@ -1978,12 +1788,8 @@ whhhy whhy whidbey -whitespace whizprog -wiki wikipedia -wildcard -wildcards wlv wnewmail wordfreq @@ -1992,13 +1798,14 @@ www wy xA +xAxBxCx xDEADBEEF xDeadBeef xFOO xX xaa +xaaaa xab -xalloc xbd xdeadBEEF xdigit @@ -2026,9 +1833,9 @@ xyz xyzzy xz +xzzzz ya yabber -yacc yballs yearday ylwrap @@ -2040,5 +1847,9 @@ zerofile zodiacusque zsh +zz +zzx +zzy zzz +zzzz zzzzzz diff -urN gawk-5.1.0/doc/wordlist2 gawk-5.1.1/doc/wordlist2 --- gawk-5.1.0/doc/wordlist2 2020-04-10 15:25:02.000000000 +0300 +++ gawk-5.1.1/doc/wordlist2 2021-01-29 11:22:21.000000000 +0200 @@ -7,30 +7,23 @@ ChangeLog Ctrl FIXME -FSF -FSF's GCC Gettext -GitHub ISBN Kahrs Libtool -Makefile PCC PDF Rebase Rebasing Repo -SVN TODO Ta Texinfo -Uncomment UsingGit -Workflow +Wiegley Yehezkel ac -apache api arnold arnoldrobbins @@ -41,7 +34,6 @@ autotools awk awkgram -builtin cd cindex com @@ -98,7 +90,9 @@ ifxml inlineraw insertcopying +io jpdev +jwiegley kbd labelled libtool @@ -109,7 +103,6 @@ llvm ltu ludd -maintainer's makeinfo mpfr multiplestates @@ -150,6 +143,7 @@ ssh stderr stdout +subentry summarycontents sv syncodeindex @@ -165,6 +159,7 @@ titlepage tmp toto +ubuntu ui ulink unnumberedsec @@ -179,8 +174,6 @@ vr vskip wordpress -workflow -worthwile www xref xxx diff -urN gawk-5.1.0/doc/wordlist3 gawk-5.1.1/doc/wordlist3 --- gawk-5.1.0/doc/wordlist3 2020-04-10 15:25:02.000000000 +0300 +++ gawk-5.1.1/doc/wordlist3 2021-10-09 22:19:28.000000000 +0300 @@ -38,6 +38,7 @@ IGNORECASE IPv ISBN +Jul LC Localizable MKS @@ -52,7 +53,6 @@ OpenVMS PREC PROCINFO -PX RLENGTH ROUNDMODE RSTART @@ -68,7 +68,6 @@ TP Trueman UTC -Weinberger YYYY Za aB @@ -88,7 +87,6 @@ awkvars bignum bindtextdomain -builtin ch cmd cmp @@ -98,7 +96,6 @@ coprocess coprocesses cos -cygwin datespec dcgettext dcngettext @@ -169,7 +166,6 @@ lport lq lshift -macosx metacharacter metacharacters min @@ -187,6 +183,7 @@ nonsignificant nonwhitespace num +op org os parsedebug diff -urN gawk-5.1.0/doc/wordlist4 gawk-5.1.1/doc/wordlist4 --- gawk-5.1.0/doc/wordlist4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/doc/wordlist4 2021-01-29 11:22:21.000000000 +0200 @@ -0,0 +1,660 @@ +AA +ADR +ALINK +API +ARGC +ARGV +AWK +AXP +AboutELIZA +AboutServer +AvoidCount +Awk +Ayalon +BGCOLOR +BLASTService +BR +BitMap +Boutell +CC +CELLPADDING +CEST +CET +CGI +CNN +CSV +CTD +CatPipe +ChangeConfig +CheckConfig +CleanUp +ConfigFile +CorrectCount +DARKCORNER +DATALIB +DD +DDBJ +DECnet +DEF +DONT +DTD +DarkFinger +Degeneres +DownCount +EK +EMBL +EPROMs +EQUIV +ElizaSays +EndOfMySelf +EnterParameters +Etzioni +FASTA +FDL +FFN +FIXME +FN +FS +FUNC +Fasta +Flannery +GAWK's +GETARG +GETURL +GNUPLOT +GNUPlot +GUIs +GenBank +GenInfo +GetHeader +GetThisHeader +GnuPlot +HD +HREF +HWP +HandleGET +Hethmon +Hoare +Hoare's +HotCount +HttpService +Humphrys +Humphrys's +HyperText +IM +IMG +INTC +IPX +IPv +ISBN +IUB +IUPAC +IVE +Immuno +Init +Internetworking +JK +JNJ +JPG +JPM +Juergen +Jul +Jun +KAREL +KO +Kabat's +Kahrs +LF +Loebner +Loui +MCD +MMC +MMM +MOBAG +MOBAGWHO +MOBFUN +MOBVAR +MOT +MRK +MSFT +MailPipe +MakeMaze +MiniSQL +MobAg +MobCode +MobileAgent +Multiauthor +MyHost +MyInit +MyJob +MyOrigin +MyPort +MyPrefix +MyProxy +NBK +NBRF +NCBI +NCBI's +NF +NR +Nace +NetService +NeutralCount +NewLength +Nof +Nov +Novell's +ORS +Oren +PARAM +PARAMS +PARAMs +PATCHLEVEL +PDF +PG +PIR +PNG +POPService +POSIXed +PROT +PROTBASE +PS +Param +Perlis +PointLight +PostAgent +PostScript +Pragma +Prez +ProxyPort +QUIC +REMCONF +RFCs +RP +RT +ReadConfig +ReadMySelf +ReadQuotes +Rumpelstilzchen +SA +SBC +SNMP +SPAK +SPDY +SRC +SSRNYG +STARTOFRANGE +STATIST +STOXPRED +SUBSEP +Salmagundi +SaveConfig +Sbjct +SendMail +Sep +SetUpEliza +SetUpServer +StartELIZA +StockCount +TD +TR +Tck +Tcl +Teukolsky +Texinfo +Tk +TopDoc +TopFooter +TopHeader +UL +UMBC +URI +URLCHK +URLfile +USB +UTX +UpCount +VLINK +VRML +VRMLtest +Vetterling +WEBGRAB +WINNT +WMT +Waterman's +Weizenbaum +WinDir +WorldWideWeb +XBM +XCF +XINU +XOM +XP +XSIZE +XYZ +YOURE +YOUVE +YSIZE +YahooData +YouSay +ab +abcdef +abs +acm +adelphia +adenosine +advperl +ai +ambientIntensity +amd +andrew +arihuang +arnold +asc +ascii +asis +au +awk +awkforai +awkinet +awklib +bbs +berkeley +bierce +bigskip +bioskills +bitcont +biz +blastcl +blastmail +blastn +blasturl +boutell +br +caccaccatggacagcaaa +canberra +catpipeclient +catpipeserver +cewing +cgi +cgilib +ch +chargen +charset +chayden +chrisc +cindex +cmu +codeanticode +codon +columnfractions +com +compapp +config +conj +cont +contrib +coprocess +copyleft +copyrightable +coreserv +cp +cr +crontab +csv +cytidine +dartmouth +datacount +daycount +daytimeclient +daytimeserver +dbj +dcu +dd +de +dec +defeasible +denhaag +deontic +detailmenu +dev +devvax +df +dfn +dict +diffuseColor +dir +dircategory +direntry +dist +dl +doi +downloader +ducktown +eda +edu +eg +ek +eliza +emailhost +emb +embedpc +emph +en +endfile +english +epd +evenheading +exe +exp +fakenode +fasta +ff +ffffff +fi +filenet +filll +finalout +fingerclient +fn +foo +fr +fsbassociates +fsf +ftest +fulldisclosure +gawcon +gawkinet +gawknet +gawnetf +gd +genebee +geninfo +getline +geturl +gif +github +gnl +gnuawk +gnuplot +gov +groundAngle +groundColor +gsub +guanine +halign +headitem +hexdigs +hfil +highgate +hrule +htm +html +htmlx +http +httpd +https +httpserver +hughes +hughestech +humphrys +iX +ibeta +ibm +ie +ietf +ifhtml +ifinfo +ifnotinfo +ifnottex +iftex +igawk +igw +inet +inetlib +inmargin +insertcopying +int +intc +intel +interline +introcb +invsqrt +io +ip +ips +irc +iso +java +jp +jpl +kabat +kazusa +kbd +keto +keynes +knowledgecenter +kohala +laplace +len +lflashlight +li +libc +libgd +lifeisgood +lineo +linespace +linux +localhost +localport +loebner +loui +mailpopclient +mailto +marx +microsoft +mkdir +mobag +moritz +msql +msu +multiline +multitable +myhost +nAgent +nBEGIN +nThe +nThis +nasa +ncbi +netblast +netcon +netcraft +netfunny +netgawf +netgawk +netscape +netstat +nih +nist +nl +nlm +nntp +noalign +nof +noindent +noncausal +noncommercially +nph +nr +nthese +nwe +ocf +oddheading +offinterlineskip +openURL +oreilly +org +overfulls +pF +paris +passwd +pdb +pdict +perl +pir +plaintext +png +postoffice +pre +prepinfo +prf +printenv +printf +printindex +protbase +ps +pt +purdue +purine +pxref +pyrimidine +qold +rand +readnews +remconf +remoteport +rendez +retr +rf +rfc +rflashlight +rhf +rm +rstevens +rvices +samp +sapiens +sc +scitable +scriptics +sd +seclists +seealso +seeentry +serv +serweb +setTimeout +setchapternewpage +setfilename +settitle +sez +sg +shtml +skeeve +skyAngle +skyColor +smallbook +smallexample +smtp +softbot +sp +spak +spinoza +spoonsful +sprintf +srand +stackexchange +statist +stderr +stdin +stdout +stoxdata +stoxpred +str +strftime +su +subentry +subj +subjold +sublicense +subnode +substr +subsubsection +suse +synchronicity +syncodeindex +synindex +systime +tcl +tcp +tcpcon +tcpip +technet +technicalinfo +techrepublic +testserv +tex +texinfo +tf +tgcttggctgaggagccataggacgagagcttcctggtgaagtgtgtttcttgaaatcat +tggtgaagtgtgtttcttg +thischapter +thispage +thttp +thymidine +titlepage +tjhsst +tmp +tolower +topicpage +toupper +ttytst +tutest +txt +uclinux +udp +uk +ul +umbc +uname +unnumberedsec +unregarded +untp +uref +urgen +urgen's +uri +uridine +url +urlchk +userfriendly +utf +uthscsa +val +var +vars +vbox +vous +vr +vrml +vrule +vskip +webclient +webgrab +webser +webserx +wikipedia +windowsserver +wnace +wold +wotsit +wouldnt +ws +wustl +www +xbm +xinu +xrds +youre +yrange diff -urN gawk-5.1.0/eval.c gawk-5.1.1/eval.c --- gawk-5.1.0/eval.c 2020-02-06 22:52:56.000000000 +0200 +++ gawk-5.1.1/eval.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2019 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2019, 2021, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -369,6 +370,7 @@ { "Op_exec_count", NULL }, { "Op_breakpoint", NULL }, { "Op_lint", NULL }, + { "Op_lint_plus", NULL }, { "Op_atexit", NULL }, { "Op_stop", NULL }, { "Op_token", NULL }, @@ -502,79 +504,81 @@ static int posix_compare(NODE *s1, NODE *s2) { - int ret = 0; - char save1, save2; - size_t l = 0; + int ret; + + if (gawk_mb_cur_max == 1) { + char save1, save2; + const char *p1, *p2; - save1 = s1->stptr[s1->stlen]; - s1->stptr[s1->stlen] = '\0'; + save1 = s1->stptr[s1->stlen]; + s1->stptr[s1->stlen] = '\0'; - save2 = s2->stptr[s2->stlen]; - s2->stptr[s2->stlen] = '\0'; + save2 = s2->stptr[s2->stlen]; + s2->stptr[s2->stlen] = '\0'; - if (gawk_mb_cur_max == 1) { - if (strlen(s1->stptr) == s1->stlen && strlen(s2->stptr) == s2->stlen) - ret = strcoll(s1->stptr, s2->stptr); - else { - char b1[2], b2[2]; - char *p1, *p2; - size_t i; - - if (s1->stlen < s2->stlen) - l = s1->stlen; - else - l = s2->stlen; - - b1[1] = b2[1] = '\0'; - for (i = ret = 0, p1 = s1->stptr, p2 = s2->stptr; - ret == 0 && i < l; - p1++, p2++) { - b1[0] = *p1; - b2[0] = *p2; - ret = strcoll(b1, b2); + p1 = s1->stptr; + p2 = s2->stptr; + + for (;;) { + size_t len; + + ret = strcoll(p1, p2); + if (ret != 0) + break; + + len = strlen(p1); + p1 += len + 1; + p2 += len + 1; + + if (p1 == s1->stptr + s1->stlen + 1) { + if (p2 != s2->stptr + s2->stlen + 1) + ret = -1; + break; + } + if (p2 == s2->stptr + s2->stlen + 1) { + ret = 1; + break; } } - /* - * Either worked through the strings or ret != 0. - * In either case, ret will be the right thing to return. - */ + + s1->stptr[s1->stlen] = save1; + s2->stptr[s2->stlen] = save2; } #if ! defined(__DJGPP__) else { /* Similar logic, using wide characters */ + const wchar_t *p1, *p2; + (void) force_wstring(s1); (void) force_wstring(s2); - if (wcslen(s1->wstptr) == s1->wstlen && wcslen(s2->wstptr) == s2->wstlen) - ret = wcscoll(s1->wstptr, s2->wstptr); - else { - wchar_t b1[2], b2[2]; - wchar_t *p1, *p2; - size_t i; - - if (s1->wstlen < s2->wstlen) - l = s1->wstlen; - else - l = s2->wstlen; - - b1[1] = b2[1] = L'\0'; - for (i = ret = 0, p1 = s1->wstptr, p2 = s2->wstptr; - ret == 0 && i < l; - p1++, p2++) { - b1[0] = *p1; - b2[0] = *p2; - ret = wcscoll(b1, b2); + p1 = s1->wstptr; + p2 = s2->wstptr; + + for (;;) { + size_t len; + + ret = wcscoll(p1, p2); + if (ret != 0) + break; + + len = wcslen(p1); + p1 += len + 1; + p2 += len + 1; + + if (p1 == s1->wstptr + s1->wstlen + 1) { + if (p2 != s2->wstptr + s2->wstlen + 1) + ret = -1; + break; + } + if (p2 == s2->wstptr + s2->wstlen + 1) { + ret = 1; + break; } } - /* - * Either worked through the strings or ret != 0. - * In either case, ret will be the right thing to return. - */ } #endif - s1->stptr[s1->stlen] = save1; - s2->stptr[s2->stlen] = save2; return ret; } @@ -973,7 +977,7 @@ } } } else { - if (! iszero(n)) + if (! is_zero(n)) do_flags |= DO_LINT_ALL; } @@ -1006,7 +1010,7 @@ void update_ERRNO_int(int errcode) { - char *cp; + const char *cp; update_PROCINFO_num("errno", errcode); if (errcode) { @@ -1334,6 +1338,13 @@ r->var_value = m; break; + case Node_func: + case Node_builtin_func: + case Node_ext_func: + r->type = Node_var; + r->var_value = make_string(m->vname, strlen(m->vname)); + break; + default: cant_happen(); } diff -urN gawk-5.1.0/extension/aclocal.m4 gawk-5.1.1/extension/aclocal.m4 --- gawk-5.1.0/extension/aclocal.m4 2020-04-14 14:45:21.000000000 +0300 +++ gawk-5.1.1/extension/aclocal.m4 2021-10-28 19:48:25.000000000 +0300 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.2 -*- Autoconf -*- +# generated automatically by aclocal 1.16.4 -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,13 +14,13 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.2], [], +m4_if([$1], [1.16.4], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,12 +51,12 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.2])dnl +[AM_AUTOMAKE_VERSION([1.16.4])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -# Copyright (C) 2011-2020 Free Software Foundation, Inc. +# Copyright (C) 2011-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,7 +118,7 @@ # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -170,7 +170,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -201,7 +201,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -392,7 +392,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -460,7 +460,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -524,7 +524,7 @@ [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl @@ -576,6 +576,20 @@ [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This @@ -657,7 +671,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -678,7 +692,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2020 Free Software Foundation, Inc. +# Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -699,7 +713,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -742,7 +756,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -763,12 +777,7 @@ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then @@ -781,7 +790,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -810,7 +819,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -857,7 +866,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -876,7 +885,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -957,7 +966,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2020 Free Software Foundation, Inc. +# Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1017,7 +1026,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1045,7 +1054,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2020 Free Software Foundation, Inc. +# Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1064,7 +1073,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2020 Free Software Foundation, Inc. +# Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1196,22 +1205,23 @@ ]) # _AM_PROG_TAR m4_include([../m4/arch.m4]) +m4_include([../m4/codeset.m4]) +m4_include([../m4/dirfd.m4]) +m4_include([../m4/gettext.m4]) +m4_include([../m4/host-cpu-c-abi.m4]) +m4_include([../m4/iconv.m4]) +m4_include([../m4/intlmacosx.m4]) +m4_include([../m4/lcmessage.m4]) +m4_include([../m4/lib-ld.m4]) +m4_include([../m4/lib-link.m4]) +m4_include([../m4/lib-prefix.m4]) +m4_include([../m4/libtool.m4]) +m4_include([../m4/ltoptions.m4]) +m4_include([../m4/ltsugar.m4]) +m4_include([../m4/ltversion.m4]) +m4_include([../m4/lt~obsolete.m4]) m4_include([../m4/mpfr.m4]) +m4_include([../m4/nls.m4]) +m4_include([../m4/po.m4]) +m4_include([../m4/progtest.m4]) m4_include([../m4/triplet-transformation.m4]) -m4_include([m4/codeset.m4]) -m4_include([m4/dirfd.m4]) -m4_include([m4/gettext.m4]) -m4_include([m4/iconv.m4]) -m4_include([m4/intlmacosx.m4]) -m4_include([m4/lcmessage.m4]) -m4_include([m4/lib-ld.m4]) -m4_include([m4/lib-link.m4]) -m4_include([m4/lib-prefix.m4]) -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) -m4_include([m4/nls.m4]) -m4_include([m4/po.m4]) -m4_include([m4/progtest.m4]) diff -urN gawk-5.1.0/extension/ChangeLog gawk-5.1.1/extension/ChangeLog --- gawk-5.1.0/extension/ChangeLog 2020-04-14 14:42:54.000000000 +0300 +++ gawk-5.1.1/extension/ChangeLog 2021-10-27 07:54:11.000000000 +0300 @@ -1,3 +1,97 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-13 Arnold D. Robbins + + * ordchr.c: Update copyright year. + +2021-09-27 Andrew J. Schorr + + * ordchr.c (do_ord): Add white space around cast. + +2021-09-27 Andrew J. Schorr + + * ordchr.c (do_ord): Need to cast to unsigned char to avoid returning + negative values. + +2021-09-22 Arnold D. Robbins + + * configure.ac: Update version to 5.1.1 in preparation for release. + +2021-09-10 Arnold D. Robbins + + * configure.ac: Updated for Autoconf 2.71. Removes various warnings. + * configh.in, configure: Regenerated. + + Unrelated: + + * aclocal.m4: Regenerated: Automake 1.16.4. + +2021-09-09 Arnold D. Robbins + + Move to Autoconf 2.71 (finally!) + + * aclocal.m4, configh.in, configure: Regenerated. + +2021-05-05 Arnold D. Robbins + + Get `make distcheck' working again: + + * Makefile.am (EXTRA_DIST): Remove files that are now in build-aux. + * aclocal.m4: Regenerated. + +2021-03-29 Arnold D. Robbins + + * testext.c (var_test): Fix a comment. Update copyright year. + +2020-07-26 Arnold D. Robbins + + * intdiv.c (do_intdiv): Change quotient and remainder to + local variables. No need to allocate/free them via the API. + +2020-07-22 Arnold D. Robbins + + * configure.ac: Use parent directory's m4 and build-aux. + * Makefile.am (ACLOCAL_AMFLAGS): Updated. + * m4, build-aux: Subdirectories removed. + * Makefile.in: Regenerated. + +2020-07-21 Arnold D. Robbins + + * configure.ac (AM_INIT_AUTOMAKE): Update to 1.16. + +2020-07-20 gettextize + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.20.2. + +2020-07-13 Arnold D. Robbins + + * intdiv.c (do_intdiv): Release the quotient and remainder + values when done with them. Fixes a memory leak. Thanks to + Andrew Schorr and valgrind for the report. + +2020-06-10 Arnold D. Robbins + + Miscellanious fixes from Michael Builov . + + * gawkfts.c (fts_open): Fix memory leak: fts_sort() allocates + sp->fts_array, but it's not freed if next fts_alloc() fails. + (fts_build): Need to free "head" list before returning NULL + on failure. + * readdir.c (get_inode): On Windows handle leak: opened handle + was not closed. + * filefuncs.c (get_inode): On Windows handle leak: opened handle + was not closed. + (fill_stat_array): Correct the block size calculation. + (init_filefuncs, do_fts): According to the documentation, + setting the FTS_NOCHDIR flag should only disable the optimization of + changing the current directory when scanning directories. + However, setting this flag in the gawk script also included setting + FTS_SKIP, which prevented recursive directory traversal. Fix this. + * rwarray0.c (read_value): Result of read_array() is awk_bool_t, + not error code. Fix the check. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/extension/configh.in gawk-5.1.1/extension/configh.in --- gawk-5.1.0/extension/configh.in 2020-04-14 14:45:26.000000000 +0300 +++ gawk-5.1.1/extension/configh.in 2021-10-28 19:48:28.000000000 +0300 @@ -14,9 +14,9 @@ language is requested. */ #undef ENABLE_NLS -/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the - CoreFoundation framework. */ -#undef HAVE_CFLOCALECOPYCURRENT +/* Define to 1 if you have the Mac OS X function + CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ @@ -79,8 +79,8 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H /* Define to 1 if you have fully functional mpfr and gmp libraries. */ #undef HAVE_MPFR @@ -100,6 +100,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H @@ -147,6 +150,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR @@ -171,58 +177,108 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE #endif /* Version number of package */ #undef VERSION -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES -/* Define to 1 if on MINIX. */ -#undef _MINIX - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE - /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus diff -urN gawk-5.1.0/extension/configure gawk-5.1.1/extension/configure --- gawk-5.1.0/extension/configure 2020-04-14 14:45:22.000000000 +0300 +++ gawk-5.1.1/extension/configure 2021-10-28 19:48:26.000000000 +0300 @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GNU Awk Bundled Extensions 5.1.0. +# Generated by GNU Autoconf 2.71 for GNU Awk Bundled Extensions 5.1.1. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +84,6 @@ fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +109,10 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,12 +169,15 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO @@ -207,30 +192,38 @@ PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -238,14 +231,21 @@ esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -263,18 +263,19 @@ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-gawk@gnu.org + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bug-gawk@gnu.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do @@ -302,6 +303,7 @@ } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -319,6 +321,14 @@ as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -333,7 +343,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -342,7 +352,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -381,12 +391,13 @@ # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -398,18 +409,27 @@ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -421,9 +441,9 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -450,7 +470,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -494,7 +514,7 @@ s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -508,6 +528,10 @@ exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -521,6 +545,13 @@ ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -590,47 +621,43 @@ # Identity of this package. PACKAGE_NAME='GNU Awk Bundled Extensions' PACKAGE_TARNAME='gawk-extensions' -PACKAGE_VERSION='5.1.0' -PACKAGE_STRING='GNU Awk Bundled Extensions 5.1.0' +PACKAGE_VERSION='5.1.1' +PACKAGE_STRING='GNU Awk Bundled Extensions 5.1.1' PACKAGE_BUGREPORT='bug-gawk@gnu.org' -PACKAGE_URL='http://www.gnu.org/software/gawk-extensions/' +PACKAGE_URL='https://www.gnu.org/software/gawk-extensions/' # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE @@ -665,20 +692,20 @@ LTLIBICONV LIBICONV INTL_MACOSX_LIBS +EGREP +GREP +CPP XGETTEXT_EXTRA_OPTIONS +MSGMERGE_FOR_MSGFMT_OPTION MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 -MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS SED -EGREP -GREP -CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE @@ -707,6 +734,9 @@ AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V +CSCOPE +ETAGS +CTAGS am__untar am__tar AMTAR @@ -869,8 +899,6 @@ *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -911,9 +939,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -937,9 +965,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1150,9 +1178,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1166,9 +1194,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1212,9 +1240,9 @@ *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1230,7 +1258,7 @@ case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1294,7 +1322,7 @@ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1351,7 +1379,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU Awk Bundled Extensions 5.1.0 to adapt to many kinds of systems. +\`configure' configures GNU Awk Bundled Extensions 5.1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1422,7 +1450,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 5.1.0:";; + short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 5.1.1:";; esac cat <<\_ACEOF @@ -1480,8 +1508,8 @@ it to find libraries and programs with nonstandard names/locations. Report bugs to . -GNU Awk Bundled Extensions home page: . -General help using GNU software: . +GNU Awk Bundled Extensions home page: . +General help using GNU software: . _ACEOF ac_status=$? fi @@ -1497,9 +1525,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1527,7 +1555,8 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1535,7 +1564,7 @@ echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1544,10 +1573,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Awk Bundled Extensions configure 5.1.0 -generated by GNU Autoconf 2.69 +GNU Awk Bundled Extensions configure 5.1.1 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1564,14 +1593,14 @@ ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1579,14 +1608,15 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1596,6 +1626,39 @@ } # ac_fn_c_try_compile +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. @@ -1608,7 +1671,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1616,14 +1679,15 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1633,184 +1697,20 @@ } # ac_fn_c_try_cpp -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to bug-gawk@gnu.org ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1818,17 +1718,18 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1843,6 +1744,49 @@ } # ac_fn_c_try_link +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including @@ -1850,16 +1794,17 @@ ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (ac_aggr.$3) @@ -1868,14 +1813,15 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) @@ -1884,18 +1830,19 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member @@ -1906,11 +1853,12 @@ ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -1918,16 +1866,9 @@ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -1945,47 +1886,51 @@ #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { #ifndef $as_decl_name #ifdef __cplusplus @@ -1999,27 +1944,50 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_decl +} # ac_fn_check_decl +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU Awk Bundled Extensions $as_me 5.1.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by GNU Awk Bundled Extensions $as_me 5.1.1, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2052,8 +2020,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2088,7 +2060,7 @@ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2123,11 +2095,13 @@ # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2138,8 +2112,8 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2163,7 +2137,7 @@ ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2171,14 +2145,14 @@ do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2186,15 +2160,15 @@ do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2202,8 +2176,8 @@ echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2217,63 +2191,48 @@ # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2283,20 +2242,438 @@ # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" gt_needs="$gt_needs " +as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" + +# Auxiliary files required by this configure script. +ac_aux_files="ltmain.sh ar-lib config.rpath compile config.guess config.sub missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/../build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2307,12 +2684,12 @@ eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2321,24 +2698,24 @@ ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2348,11 +2725,12 @@ fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2369,39 +2747,13 @@ -ac_aux_dir= -for ac_dir in build-aux "$srcdir"/build-aux; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 -fi -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +am__api_version='1.16' -am__api_version='1.16' -# Find a good install program. We prefer a C program (faster), + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -2415,20 +2767,25 @@ # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -2438,13 +2795,13 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -2452,12 +2809,12 @@ echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -2473,7 +2830,7 @@ rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -2483,8 +2840,8 @@ INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2494,8 +2851,8 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2549,8 +2906,8 @@ as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= @@ -2569,26 +2926,23 @@ # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then @@ -2608,11 +2962,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -2620,11 +2975,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2635,11 +2994,11 @@ fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2648,11 +3007,12 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -2660,11 +3020,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2675,11 +3039,11 @@ fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2687,8 +3051,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2700,25 +3064,31 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -2729,7 +3099,7 @@ fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a @@ -2739,18 +3109,19 @@ MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -2758,11 +3129,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2773,24 +3148,25 @@ fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -2806,12 +3182,12 @@ rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2825,7 +3201,8 @@ rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -2835,12 +3212,13 @@ *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -2852,8 +3230,8 @@ am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -2885,17 +3263,13 @@ # Define the identity of the package. PACKAGE='gawk-extensions' - VERSION='5.1.0' + VERSION='5.1.1' -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. @@ -2935,6 +3309,20 @@ +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile @@ -2979,26 +3367,29 @@ fi -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -3017,21 +3408,22 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -3054,24 +3446,25 @@ case x$ax_disable_triplet_transform/`uname` in #( x/MSYS*) : + if test x$ac_cv_build != x; then ax_tt_var=`echo $ac_cv_build | sed 's|-msys$|-cygwin|'` if test x$ax_tt_var = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&5 -$as_echo "$as_me: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&5 +printf "%s\n" "$as_me: sed script: build triplet conversion \`$ac_cv_build' with sed script \`s|-msys$|-cygwin|'failed." >&6;} elif test x$ax_tt_var != x`$SHELL "$ac_aux_dir/config.sub" $ax_tt_var`; then - { $as_echo "$as_me:${as_lineno-$LINENO}: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&5 -$as_echo "$as_me: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&5 +printf "%s\n" "$as_me: \`config.sub' test: build triplet conversion of \`$ac_cv_build' produced invalid triplet \`$ax_tt_var'." >&6;} elif test x$ax_tt_var != x$ac_cv_build; then if test x$ax_tt_header_is_printed != xyes; then ax_tt_header_is_printed=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 -$as_echo "$as_me: Triplet conversion on MSYS platform:" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 +printf "%s\n" "$as_me: Triplet conversion on MSYS platform:" >&6;} fi gawk_extensions_cv_build_orig=$ac_cv_build ac_cv_build=$ax_tt_var - { $as_echo "$as_me:${as_lineno-$LINENO}: build: replacing $gawk_extensions_cv_build_orig -> $ac_cv_build" >&5 -$as_echo "$as_me: build: replacing $gawk_extensions_cv_build_orig -> $ac_cv_build" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: build: replacing $gawk_extensions_cv_build_orig -> $ac_cv_build" >&5 +printf "%s\n" "$as_me: build: replacing $gawk_extensions_cv_build_orig -> $ac_cv_build" >&6;} ax_tt_var= case $ac_cv_build in *-*-*) ;; @@ -3095,24 +3488,25 @@ fi + if test x$ac_cv_host != x; then ax_tt_var=`echo $ac_cv_host | sed 's|-msys$|-cygwin|'` if test x$ax_tt_var = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&5 -$as_echo "$as_me: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&5 +printf "%s\n" "$as_me: sed script: host triplet conversion \`$ac_cv_host' with sed script \`s|-msys$|-cygwin|'failed." >&6;} elif test x$ax_tt_var != x`$SHELL "$ac_aux_dir/config.sub" $ax_tt_var`; then - { $as_echo "$as_me:${as_lineno-$LINENO}: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&5 -$as_echo "$as_me: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&5 +printf "%s\n" "$as_me: \`config.sub' test: host triplet conversion of \`$ac_cv_host' produced invalid triplet \`$ax_tt_var'." >&6;} elif test x$ax_tt_var != x$ac_cv_host; then if test x$ax_tt_header_is_printed != xyes; then ax_tt_header_is_printed=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 -$as_echo "$as_me: Triplet conversion on MSYS platform:" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Triplet conversion on MSYS platform:" >&5 +printf "%s\n" "$as_me: Triplet conversion on MSYS platform:" >&6;} fi gawk_extensions_cv_host_orig=$ac_cv_host ac_cv_host=$ax_tt_var - { $as_echo "$as_me:${as_lineno-$LINENO}: host: replacing $gawk_extensions_cv_host_orig -> $ac_cv_host" >&5 -$as_echo "$as_me: host: replacing $gawk_extensions_cv_host_orig -> $ac_cv_host" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: host: replacing $gawk_extensions_cv_host_orig -> $ac_cv_host" >&5 +printf "%s\n" "$as_me: host: replacing $gawk_extensions_cv_host_orig -> $ac_cv_host" >&6;} ax_tt_var= case $ac_cv_host in *-*-*) ;; @@ -3142,12 +3536,21 @@ esac + + + + + + + + + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out @@ -3183,11 +3586,12 @@ fi done rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; fi @@ -3213,11 +3617,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3225,11 +3630,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3240,11 +3649,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3253,11 +3662,12 @@ ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3265,11 +3675,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3280,11 +3694,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -3292,8 +3706,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3306,11 +3720,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3318,11 +3733,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3333,11 +3752,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3346,11 +3765,12 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3359,15 +3779,19 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3383,18 +3807,18 @@ # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3405,11 +3829,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3417,11 +3842,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3432,11 +3861,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3449,11 +3878,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3461,11 +3891,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3476,11 +3910,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3492,8 +3926,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3501,25 +3935,129 @@ fi fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3529,7 +4067,7 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3537,7 +4075,7 @@ /* end confdefs.h. */ int -main () +main (void) { ; @@ -3549,9 +4087,9 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3572,11 +4110,12 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3593,7 +4132,7 @@ # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3609,44 +4148,46 @@ done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3660,15 +4201,15 @@ * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3677,7 +4218,7 @@ /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -3689,8 +4230,8 @@ ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3698,10 +4239,10 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -3709,39 +4250,40 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3755,11 +4297,12 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3768,31 +4311,32 @@ break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -3802,29 +4346,33 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -3833,57 +4381,60 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -3898,94 +4449,144 @@ CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -3994,21 +4595,23 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4036,8 +4639,8 @@ rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. @@ -4055,11 +4658,12 @@ depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4166,8 +4770,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -4182,470 +4786,183 @@ -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes +ac_header= ac_cache= +for ac_item in $ac_header_c_list do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - done - ac_cv_prog_CPP=$CPP -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#include -#include +# define __EXTENSIONS__ 1 + $ac_includes_default int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no fi -rm -f conftest* - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* + #include + mbstate_t x; +int +main (void) +{ -fi + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; int -main () +main (void) { - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; + + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } -$as_echo "#define STDC_HEADERS 1" >>confdefs.h + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h -fi + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h -fi + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h -done + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h - if test "$MINIX" = yes; then + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h -$as_echo "#define _MINIX 1" >>confdefs.h + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h - fi + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else $as_nop + MINIX= fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h +fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for z/OS USS compilation" >&5 -$as_echo_n "checking for z/OS USS compilation... " >&6; } -if ${ac_cv_zos_uss+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for z/OS USS compilation" >&5 +printf %s "checking for z/OS USS compilation... " >&6; } +if test ${ac_cv_zos_uss+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "OS/390" = "`uname`" then @@ -4655,8 +4972,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_zos_uss}" >&5 -$as_echo "${ac_cv_zos_uss}" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_zos_uss}" >&5 +printf "%s\n" "${ac_cv_zos_uss}" >&6; } if test "x$ac_cv_zos_uss" = "xyes" then ac_zos_uss_cc_id=unknown @@ -4673,10 +4990,10 @@ c89) if test -n "$_C89_OPTIONS" then - { $as_echo "$as_me:${as_lineno-$LINENO}: CC = $CC" >&5 -$as_echo "$as_me: CC = $CC" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: _C89_OPTIONS = $_C89_OPTIONS" >&5 -$as_echo "$as_me: _C89_OPTIONS = $_C89_OPTIONS" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: CC = $CC" >&5 +printf "%s\n" "$as_me: CC = $CC" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: _C89_OPTIONS = $_C89_OPTIONS" >&5 +printf "%s\n" "$as_me: _C89_OPTIONS = $_C89_OPTIONS" >&6;} else as_fn_error $? "c89-setup-required To build GNU Awk using \"c89\", please set @@ -4722,13 +5039,13 @@ \$REAL_CC -qhaltonmsg=CCN3296 -qnosearch "\$@" -qsearch=/usr/include EOF chmod +x zos-cc - { $as_echo "$as_me:${as_lineno-$LINENO}: wrapping $CC with zos-cc to obtain standard behavior" >&5 -$as_echo "$as_me: wrapping $CC with zos-cc to obtain standard behavior" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: wrapping $CC with zos-cc to obtain standard behavior" >&5 +printf "%s\n" "$as_me: wrapping $CC with zos-cc to obtain standard behavior" >&6;} CC="`pwd`/zos-cc" ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized compiler environment" >&5 -$as_echo "$as_me: WARNING: unrecognized compiler environment" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized compiler environment" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized compiler environment" >&2;} ;; esac fi # ac_cv_zos_uss = yes @@ -4739,7 +5056,8 @@ SKIP_MPFR=no # Check whether --enable-mpfr was given. -if test "${enable_mpfr+set}" = set; then : +if test ${enable_mpfr+y} +then : enableval=$enable_mpfr; if test "$enableval" = no then SKIP_MPFR=yes @@ -4755,11 +5073,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -4773,10 +5092,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -4785,13 +5109,13 @@ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -4819,28 +5143,29 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : +if test ${enable_nls+y} +then : enableval=$enable_nls; USE_NLS=$enableval -else +else $as_nop USE_NLS=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } - GETTEXT_MACRO_VERSION=0.19 + GETTEXT_MACRO_VERSION=0.20 @@ -4874,11 +5199,12 @@ # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. @@ -4906,20 +5232,21 @@ fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. @@ -4929,11 +5256,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4946,21 +5277,16 @@ fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; - *) MSGFMT_015=$MSGFMT ;; - esac - - case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac @@ -4996,11 +5322,12 @@ # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. @@ -5028,11 +5355,11 @@ fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f messages.po @@ -5073,11 +5400,12 @@ # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. @@ -5104,15 +5432,23 @@ fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - test -n "$localedir" || localedir='${datadir}/locale' + if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' + else + if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' + else + MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' + fi + fi test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= @@ -5140,9 +5476,10 @@ # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi @@ -5159,88 +5496,151 @@ } fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` - while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac +if test -n "$LD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 +printf %s "checking for ld... " >&6; } +elif test "$GCC" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 +if test -n "$LD"; then + # Let the user override the test with a path. + : else - if test -z "$LD"; then - acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$acl_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 &6 +else $as_nop + + acl_cv_path_LD= # Final result of this test + ac_prog=ld # Program to search in $PATH + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; esac fi - done - IFS="$acl_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # The compiler produces 64-bit code. Add option '-b64' so that the + # linker groks 64-bit object files. + case "$acl_cv_path_LD " in + *" -b64 "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; + esac + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + sparc64-*-netbsd*) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # The compiler produces 32-bit code. Add option '-m elf32_sparc' + # so that the linker groks 32-bit object files. + case "$acl_cv_path_LD " in + *" -m elf32_sparc "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; + esac + fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + esac + fi -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + LD="$acl_cv_path_LD" fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 +if test -n "$LD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh @@ -5271,8 +5673,8 @@ acl_cv_rpath=done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" @@ -5283,76 +5685,710 @@ acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : +if test ${enable_rpath+y} +then : enableval=$enable_rpath; : -else +else $as_nop enable_rpath=yes fi - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 +printf %s "checking 32-bit host C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi_32bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$gl_cv_host_cpu_c_abi"; then + case "$gl_cv_host_cpu_c_abi" in + i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) + gl_cv_host_cpu_c_abi_32bit=yes ;; + x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) + gl_cv_host_cpu_c_abi_32bit=no ;; + *) + gl_cv_host_cpu_c_abi_32bit=unknown ;; + esac + else + case "$host_cpu" in + + # CPUs that only support a 32-bit ABI. + arc \ + | bfin \ + | cris* \ + | csky \ + | epiphany \ + | ft32 \ + | h8300 \ + | m68k \ + | microblaze | microblazeel \ + | nds32 | nds32le | nds32be \ + | nios2 | nios2eb | nios2el \ + | or1k* \ + | or32 \ + | sh | sh1234 | sh1234elb \ + | tic6x \ + | xtensa* ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + # CPUs that only support a 64-bit ABI. + alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ + | mmix ) + gl_cv_host_cpu_c_abi_32bit=no + ;; + + i[34567]86 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) \ + && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=yes +else $as_nop + gl_cv_host_cpu_c_abi_32bit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + riscv32 | riscv64 ) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi_32bit=unknown + ;; + esac + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 +printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } + + HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : -#ifdef _LP64 -sixtyfour bits -#endif +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : - gl_cv_solaris_64bit=yes +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP else - gl_cv_solaris_64bit=no + ac_cv_prog_CPP=$CPP fi -rm -f conftest* +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5 +printf %s "checking for ELF binary format... " >&6; } +if test ${gl_cv_elf+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __ELF__ + Extensible Linking Format + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Extensible Linking Format" >/dev/null 2>&1 +then : + gl_cv_elf=yes +else $as_nop + gl_cv_elf=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 +printf "%s\n" "$gl_cv_elf" >&6; } + if test $gl_cv_elf; then + # Extract the ELF class of a file (5th byte) in decimal. + # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header + if od -A x < /dev/null >/dev/null 2>/dev/null; then + # Use POSIX od. + func_elfclass () + { + od -A n -t d1 -j 4 -N 1 + } + else + # Use BSD hexdump. + func_elfclass () + { + dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' + echo + } + fi + case $HOST_CPU_C_ABI_32BIT in + yes) + # 32-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 + } + ;; + no) + # 64-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 + } + ;; + *) + # Unknown. + acl_is_expected_elfclass () + { + : + } + ;; + esac + else + acl_is_expected_elfclass () + { + : + } + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 +printf %s "checking for the common suffixes of directories in the library search path... " >&6; } +if test ${acl_cv_libdirstems+y} +then : + printf %s "(cached) " >&6 +else $as_nop + acl_libdirstem=lib + acl_libdirstem2= + acl_libdirstem3= + case "$host_os" in + solaris*) + if test $HOST_CPU_C_ABI_32BIT = no; then + acl_libdirstem2=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem3=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test $HOST_CPU_C_ABI_32BIT != no; then + # 32-bit or unknown ABI. + if test -d /usr/lib32; then + acl_libdirstem2=lib32 + fi + fi + if test $HOST_CPU_C_ABI_32BIT != yes; then + # 64-bit or unknown ABI. + if test -d /usr/lib64; then + acl_libdirstem3=lib64 + fi + fi + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; + */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib32 ) acl_libdirstem2=lib32 ;; + */lib64 ) acl_libdirstem3=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + if test $HOST_CPU_C_ABI_32BIT = yes; then + # 32-bit ABI. + acl_libdirstem3= + fi + if test $HOST_CPU_C_ABI_32BIT = no; then + # 64-bit ABI. + acl_libdirstem2= + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 +printf "%s\n" "$acl_cv_libdirstems" >&6; } + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` + acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` @@ -5373,13 +6409,16 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : +if test ${with_libiconv_prefix+y} +then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -5393,6 +6432,8 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" @@ -5400,15 +6441,19 @@ else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" fi fi fi + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi LIBICONV= LTLIBICONV= INCICONV= @@ -5454,45 +6499,51 @@ shrext= fi if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" - found_so="$dir/$f" - break + found_a="$dir/$libname.$acl_libext" fi - done + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi fi fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi + done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do @@ -5509,7 +6560,7 @@ -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else @@ -5519,14 +6570,14 @@ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do - if test -f "$dir/$f"; then + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break @@ -5536,7 +6587,7 @@ fi fi if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi @@ -5558,7 +6609,8 @@ if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= @@ -5637,6 +6689,13 @@ fi additional_includedir="$basedir/include" ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then @@ -5682,12 +6741,14 @@ for dep in $dependency_libs; do case "$dep" in -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -5706,14 +6767,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir" fi fi haveit= @@ -5727,14 +6788,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir" fi fi fi @@ -5841,78 +6902,81 @@ - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFPreferencesCopyAppValue=yes -else +else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 +printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } +if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { -CFLocaleCopyCurrent(); +CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyPreferredLanguages=yes +else $as_nop + gt_cv_func_CFLocaleCopyPreferredLanguages=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h fi INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi @@ -5953,41 +7017,48 @@ gt_expression_test_code= fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if eval \${$gt_func_gnugettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -$gt_revision_test_code +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libc=yes" -else +else $as_nop eval "$gt_func_gnugettext_libc=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then @@ -6020,11 +7091,12 @@ done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no @@ -6035,7 +7107,7 @@ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -6044,10 +7116,11 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" @@ -6059,7 +7132,7 @@ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -6068,24 +7141,26 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then @@ -6093,12 +7168,13 @@ fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6110,7 +7186,7 @@ #endif int -main () +main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful @@ -6195,22 +7271,35 @@ #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - result |= 16; + { + /* Try standardized names. */ + iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); + /* Try IRIX, OSF/1 names. */ + iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); + /* Try AIX names. */ + iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); + /* Try HP-UX names. */ + iconv_t cd4 = iconv_open ("utf8", "eucJP"); + if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) + && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) + result |= 16; + if (cd1 != (iconv_t)(-1)) + iconv_close (cd1); + if (cd2 != (iconv_t)(-1)) + iconv_close (cd2); + if (cd3 != (iconv_t)(-1)) + iconv_close (cd3); + if (cd4 != (iconv_t)(-1)) + iconv_close (cd4); + } return result; ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -6222,8 +7311,8 @@ LIBS="$am_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; @@ -6233,14 +7322,14 @@ fi if test "$am_func_iconv" = yes; then -$as_echo "#define HAVE_ICONV 1" >>confdefs.h +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= @@ -6256,7 +7345,6 @@ - use_additional=yes acl_save_prefix="$prefix" @@ -6266,13 +7354,16 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then : +if test ${with_libintl_prefix+y} +then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -6286,6 +7377,8 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" @@ -6293,15 +7386,19 @@ else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" fi fi fi + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi LIBINTL= LTLIBINTL= INCINTL= @@ -6347,45 +7444,51 @@ shrext= fi if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" - found_so="$dir/$f" - break + found_a="$dir/$libname.$acl_libext" fi - done + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi fi fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi + done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do @@ -6402,7 +7505,7 @@ -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else @@ -6412,14 +7515,14 @@ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do - if test -f "$dir/$f"; then + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break @@ -6429,7 +7532,7 @@ fi fi if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi @@ -6451,7 +7554,8 @@ if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= @@ -6530,6 +7634,13 @@ fi additional_includedir="$basedir/include" ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then @@ -6575,12 +7686,14 @@ for dep in $dependency_libs; do case "$dep" in -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -6599,14 +7712,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir" fi fi haveit= @@ -6620,14 +7733,14 @@ exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir" fi fi fi @@ -6710,12 +7823,12 @@ - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if eval \${$gt_func_gnugettext_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" @@ -6724,31 +7837,37 @@ /* end confdefs.h. */ #include -$gt_revision_test_code +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libintl=yes" -else +else $as_nop eval "$gt_func_gnugettext_libintl=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" @@ -6756,40 +7875,46 @@ /* end confdefs.h. */ #include -$gt_revision_test_code +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ @@ -6816,20 +7941,20 @@ if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then -$as_echo "#define ENABLE_NLS 1" >>confdefs.h +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" @@ -6839,18 +7964,18 @@ else gt_source="included intl directory" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= @@ -6877,10 +8002,10 @@ fi -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h -$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi @@ -6898,94 +8023,99 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if ${am_cv_langinfo_codeset+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +printf %s "checking for nl_langinfo and CODESET... " >&6; } +if test ${am_cv_langinfo_codeset+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { char* cs = nl_langinfo(CODESET); return !cs; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_langinfo_codeset=yes -else +else $as_nop am_cv_langinfo_codeset=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 -$as_echo "$am_cv_langinfo_codeset" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +printf "%s\n" "$am_cv_langinfo_codeset" >&6; } if test $am_cv_langinfo_codeset = yes; then -$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h +printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 -$as_echo_n "checking for LC_MESSAGES... " >&6; } -if ${gt_cv_val_LC_MESSAGES+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +printf %s "checking for LC_MESSAGES... " >&6; } +if test ${gt_cv_val_LC_MESSAGES+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return LC_MESSAGES ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_val_LC_MESSAGES=yes -else +else $as_nop gt_cv_val_LC_MESSAGES=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 -$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 +printf "%s\n" "$gt_cv_val_LC_MESSAGES" >&6; } if test $gt_cv_val_LC_MESSAGES = yes; then -$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h +printf "%s\n" "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : +if test "x$ac_cv_member_struct_stat_st_blksize" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h fi -if test -n "$ac_tool_prefix"; then + + if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -6993,11 +8123,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7008,11 +8142,11 @@ fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7025,11 +8159,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -7037,11 +8172,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7052,11 +8191,11 @@ fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7068,8 +8207,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -7078,11 +8217,12 @@ : ${AR=ar} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 -$as_echo_n "checking the archiver ($AR) interface... " >&6; } -if ${am_cv_ar_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +printf %s "checking the archiver ($AR) interface... " >&6; } +if test ${am_cv_ar_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -7094,12 +8234,13 @@ /* end confdefs.h. */ int some_variable = 0; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar @@ -7108,7 +8249,7 @@ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib @@ -7119,7 +8260,7 @@ rm -f conftest.lib libconftest.a fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -7127,8 +8268,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 -$as_echo "$am_cv_ar_interface" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +printf "%s\n" "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) @@ -7148,17 +8289,19 @@ esac # Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : +if test ${enable_largefile+y} +then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC @@ -7172,44 +8315,47 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_largefile_CC=' -n32'; break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7218,22 +8364,23 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 @@ -7242,43 +8389,43 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=64; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF +printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7287,22 +8434,23 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 @@ -7311,46 +8459,43 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=1; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf "%s\n" "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF +printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h ;; esac rm -rf conftest* fi - - fi case `pwd` in *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac @@ -7370,6 +8515,7 @@ + ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within @@ -7393,8 +8539,8 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then @@ -7420,12 +8566,12 @@ } case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; esac @@ -7441,11 +8587,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -7459,10 +8606,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -7471,13 +8623,13 @@ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -7505,8 +8657,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed @@ -7523,11 +8675,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else @@ -7538,10 +8691,15 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP @@ -7550,13 +8708,13 @@ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -7585,8 +8743,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" @@ -7611,17 +8769,18 @@ # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw @@ -7650,15 +8809,16 @@ ;; esac elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do @@ -7687,18 +8847,19 @@ LD=$lt_cv_path_LD if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -7721,11 +8882,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM @@ -7775,8 +8937,8 @@ : ${lt_cv_path_NM=no} fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else @@ -7789,11 +8951,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else @@ -7801,11 +8964,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7816,11 +8983,11 @@ fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7833,11 +9000,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else @@ -7845,11 +9013,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7860,11 +9032,11 @@ fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7876,8 +9048,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN @@ -7905,11 +9077,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) @@ -7925,26 +9098,27 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else $as_nop i=0 teststring=ABCD @@ -8071,11 +9245,11 @@ fi if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len @@ -8119,11 +9293,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $host in *-*-mingw* ) case $build in @@ -8159,18 +9334,19 @@ fi to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in @@ -8186,22 +9362,23 @@ fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_reload_flag='-r' fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -8234,11 +9411,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else @@ -8246,11 +9424,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8261,11 +9443,11 @@ fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8274,11 +9456,12 @@ ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else @@ -8286,11 +9469,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8301,11 +9488,11 @@ fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then @@ -8313,8 +9500,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP @@ -8330,11 +9517,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' @@ -8530,8 +9718,8 @@ esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no @@ -8575,11 +9763,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else @@ -8587,11 +9776,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8602,11 +9795,11 @@ fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8615,11 +9808,12 @@ ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else @@ -8627,11 +9821,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8642,11 +9840,11 @@ fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then @@ -8654,8 +9852,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL @@ -8672,11 +9870,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in @@ -8699,8 +9898,8 @@ esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO @@ -8715,11 +9914,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -8727,11 +9927,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8742,11 +9946,11 @@ fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8759,11 +9963,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -8771,11 +9976,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8786,11 +9995,11 @@ fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8802,8 +10011,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -8823,30 +10032,32 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. @@ -8854,7 +10065,7 @@ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ @@ -8863,11 +10074,11 @@ rm -f conftest.* libconftest.a fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= @@ -8884,11 +10095,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -8896,11 +10108,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8911,11 +10127,11 @@ fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8924,11 +10140,12 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -8936,11 +10153,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8951,11 +10172,11 @@ fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -8963,8 +10184,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -8983,11 +10204,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -8995,11 +10217,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9010,11 +10236,11 @@ fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9023,11 +10249,12 @@ ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -9035,11 +10262,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9050,11 +10281,11 @@ fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -9062,8 +10293,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -9152,11 +10383,12 @@ # Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] @@ -9308,14 +10540,14 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then @@ -9384,7 +10616,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi @@ -9419,11 +10651,11 @@ lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } fi # Response file support. @@ -9469,13 +10701,14 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : +if test ${with_sysroot+y} +then : withval=$with_sysroot; -else +else $as_nop with_sysroot=no fi @@ -9493,24 +10726,25 @@ no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} @@ -9521,10 +10755,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ @@ -9544,15 +10783,16 @@ rm -f conftest.i conftest2.i conftest.out fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= @@ -9563,8 +10803,8 @@ rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } @@ -9587,7 +10827,8 @@ } # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : +if test ${enable_libtool_lock+y} +then : enableval=$enable_libtool_lock; fi @@ -9603,7 +10844,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) @@ -9623,7 +10864,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in @@ -9661,7 +10902,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in @@ -9702,7 +10943,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) @@ -9765,11 +11006,12 @@ # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -9780,19 +11022,20 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_cc_needs_belf=yes -else +else $as_nop lt_cv_cc_needs_belf=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -9801,8 +11044,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS @@ -9815,7 +11058,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) @@ -9852,11 +11095,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else @@ -9864,11 +11108,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9879,11 +11127,11 @@ fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9892,11 +11140,12 @@ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else @@ -9904,11 +11153,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9919,11 +11172,11 @@ fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then @@ -9931,8 +11184,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL @@ -9942,11 +11195,12 @@ fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_mainfest_tool+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out @@ -9956,8 +11210,8 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi @@ -9972,11 +11226,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else @@ -9984,11 +11239,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9999,11 +11258,11 @@ fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10012,11 +11271,12 @@ ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else @@ -10024,11 +11284,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10039,11 +11303,11 @@ fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -10051,8 +11315,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -10064,11 +11328,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else @@ -10076,11 +11341,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10091,11 +11360,11 @@ fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10104,11 +11373,12 @@ ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else @@ -10116,11 +11386,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10131,11 +11405,11 @@ fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -10143,8 +11417,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -10156,11 +11430,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else @@ -10168,11 +11443,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10183,11 +11462,11 @@ fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10196,11 +11475,12 @@ ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else @@ -10208,11 +11488,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10223,11 +11507,11 @@ fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then @@ -10235,8 +11519,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO @@ -10248,11 +11532,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else @@ -10260,11 +11545,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10275,11 +11564,11 @@ fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10288,11 +11577,12 @@ ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else @@ -10300,11 +11590,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10315,11 +11609,11 @@ fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then @@ -10327,8 +11621,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL @@ -10340,11 +11634,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else @@ -10352,11 +11647,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10367,11 +11666,11 @@ fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10380,11 +11679,12 @@ ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else @@ -10392,11 +11692,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10407,11 +11711,11 @@ fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then @@ -10419,8 +11723,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 @@ -10455,11 +11759,12 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override @@ -10488,14 +11793,15 @@ rm -f conftest.* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym @@ -10504,31 +11810,33 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_ld_exported_symbols_list=yes -else +else $as_nop lt_cv_ld_exported_symbols_list=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} @@ -10556,8 +11864,8 @@ rm -rf conftest.dSYM fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; @@ -10628,19 +11936,14 @@ esac } -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi -done - @@ -10653,11 +11956,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AS+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else @@ -10665,11 +11969,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10680,11 +11988,11 @@ fi AS=$ac_cv_prog_AS if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +printf "%s\n" "$AS" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10693,11 +12001,12 @@ ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AS+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else @@ -10705,11 +12014,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10720,11 +12033,11 @@ fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +printf "%s\n" "$ac_ct_AS" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AS" = x; then @@ -10732,8 +12045,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS @@ -10745,11 +12058,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else @@ -10757,11 +12071,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10772,11 +12090,11 @@ fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10785,11 +12103,12 @@ ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else @@ -10797,11 +12116,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10812,11 +12135,11 @@ fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then @@ -10824,8 +12147,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL @@ -10837,11 +12160,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else @@ -10849,11 +12173,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10864,11 +12192,11 @@ fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10877,11 +12205,12 @@ ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else @@ -10889,11 +12218,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10904,11 +12237,11 @@ fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then @@ -10916,8 +12249,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP @@ -10947,7 +12280,8 @@ # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : +if test ${enable_static+y} +then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -10965,7 +12299,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_static=no fi @@ -10983,7 +12317,8 @@ # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : +if test ${enable_shared+y} +then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -11001,7 +12336,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_shared=yes fi @@ -11016,7 +12351,8 @@ # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : +if test ${with_pic+y} +then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; @@ -11033,7 +12369,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop pic_mode=default fi @@ -11045,7 +12381,8 @@ # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : +if test ${enable_fast_install+y} +then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -11063,7 +12400,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_fast_install=yes fi @@ -11077,11 +12414,12 @@ shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : +if test ${with_aix_soname+y} +then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; @@ -11090,18 +12428,19 @@ ;; esac lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', @@ -11183,11 +12522,12 @@ setopt NO_GLOB_SUBST fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then @@ -11198,17 +12538,15 @@ fi rmdir .libs 2>/dev/null fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h @@ -11254,11 +12592,12 @@ case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -11307,11 +12646,11 @@ MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -11320,11 +12659,12 @@ if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -11373,11 +12713,11 @@ MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -11462,11 +12802,12 @@ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -11497,8 +12838,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -11855,26 +13196,28 @@ ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -11905,8 +13248,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in @@ -11934,11 +13277,12 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" @@ -11962,8 +13306,8 @@ LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : @@ -11977,11 +13321,12 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -12024,19 +13369,20 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -12079,8 +13425,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } @@ -12088,19 +13434,19 @@ hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -12112,8 +13458,8 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -12671,21 +14017,23 @@ if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -12700,7 +14048,7 @@ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -12724,21 +14072,23 @@ if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -12753,7 +14103,7 @@ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -13004,11 +14354,12 @@ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" @@ -13032,8 +14383,8 @@ LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -13073,28 +14424,30 @@ # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_irix_exported_symbol=yes -else +else $as_nop lt_cv_irix_exported_symbol=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi @@ -13375,8 +14728,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -13412,18 +14765,19 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest @@ -13441,7 +14795,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no @@ -13455,8 +14809,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac @@ -13615,8 +14969,8 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in @@ -14177,9 +15531,10 @@ shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir @@ -14189,19 +15544,21 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : lt_cv_shlibpath_overrides_runpath=yes fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir @@ -14445,8 +15802,8 @@ dynamic_linker=no ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -14567,8 +15924,8 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || @@ -14592,8 +15949,8 @@ # directories. hardcode_action=unsupported fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then @@ -14637,11 +15994,12 @@ darwin*) # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14650,32 +16008,31 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else +else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= @@ -14695,14 +16052,16 @@ *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : +if test "x$ac_cv_func_shl_load" = xyes +then : lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14711,41 +16070,42 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char shl_load (); int -main () +main (void) { return shl_load (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_shl_load=yes -else +else $as_nop ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else +else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : +if test "x$ac_cv_func_dlopen" = xyes +then : lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14754,37 +16114,37 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14793,37 +16153,37 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_svld_dlopen=yes -else +else $as_nop ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14832,30 +16192,29 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dld_link (); int -main () +main (void) { return dld_link (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_dld_link=yes -else +else $as_nop ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi @@ -14894,11 +16253,12 @@ save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else @@ -14977,7 +16337,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -14995,16 +16355,17 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else @@ -15083,7 +16444,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -15101,8 +16462,8 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS @@ -15140,13 +16501,13 @@ striplib= old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -15154,16 +16515,16 @@ if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; esac fi @@ -15180,13 +16541,13 @@ # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -15210,15 +16571,15 @@ fi ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } @@ -15263,51 +16624,87 @@ CFLAGS="$CFLAGS -Wall" # Don't add -Wextra, hurts older gcc fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for special development options" >&5 -$as_echo_n "checking for special development options... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special development options" >&5 +printf %s "checking for special development options... " >&6; } if test -f $srcdir/../.developing then if test "$GCC" = yes then CFLAGS="$CFLAGS -Wall -fno-builtin -g3 -gdwarf-2" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -for ac_header in fnmatch.h limits.h sys/mkdev.h sys/param.h sys/select.h \ - sys/statvfs.h sys/sysmacros.h sys/time.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "fnmatch.h" "ac_cv_header_fnmatch_h" "$ac_includes_default" +if test "x$ac_cv_header_fnmatch_h" = xyes +then : + printf "%s\n" "#define HAVE_FNMATCH_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mkdev_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_MKDEV_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/statvfs.h" "ac_cv_header_sys_statvfs_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_statvfs_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sysmacros_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int -main () +main (void) { if ((DIR *) 0) return 0; @@ -15315,19 +16712,21 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_ac_Header=yes" -else +else $as_nop eval "$as_ac_Header=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -15336,11 +16735,12 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15348,56 +16748,59 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' dir; do +for ac_lib in '' dir +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15405,86 +16808,56 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' x; do +for ac_lib in '' x +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h -fi case `uname -m` in @@ -15495,9 +16868,10 @@ no) # Check whether --with-mpfr was given. -if test "${with_mpfr+set}" = set; then : +if test ${with_mpfr+y} +then : withval=$with_mpfr; _do_mpfr=$withval -else +else $as_nop _do_mpfr=yes fi @@ -15512,8 +16886,8 @@ _combo="-lmpfr -lgmp" LIBS="$LIBS $_combo" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mpfr via \"$_combo\" is present and usable" >&5 -$as_echo_n "checking whether mpfr via \"$_combo\" is present and usable... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mpfr via \"$_combo\" is present and usable" >&5 +printf %s "checking whether mpfr via \"$_combo\" is present and usable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15524,7 +16898,7 @@ #include int -main () +main (void) { mpfr_t p; @@ -15539,22 +16913,23 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : _found_mpfr=yes -else +else $as_nop _found_mpfr=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_found_mpfr" >&5 -$as_echo "$_found_mpfr" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_found_mpfr" >&5 +printf "%s\n" "$_found_mpfr" >&6; } LIBS=$_mpfr_save_libs if test $_found_mpfr = yes ; then -$as_echo "#define HAVE_MPFR 1" >>confdefs.h +printf "%s\n" "#define HAVE_MPFR 1" >>confdefs.h LIBMPFR=$_combo @@ -15571,11 +16946,12 @@ ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fmod" >&5 -$as_echo_n "checking for library containing fmod... " >&6; } -if ${ac_cv_search_fmod+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing fmod" >&5 +printf %s "checking for library containing fmod... " >&6; } +if test ${ac_cv_search_fmod+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15583,102 +16959,220 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char fmod (); int -main () +main (void) { return fmod (); ; return 0; } _ACEOF -for ac_lib in '' m; do +for ac_lib in '' m +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_fmod=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_fmod+:} false; then : + if test ${ac_cv_search_fmod+y} +then : break fi done -if ${ac_cv_search_fmod+:} false; then : +if test ${ac_cv_search_fmod+y} +then : -else +else $as_nop ac_cv_search_fmod=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmod" >&5 -$as_echo "$ac_cv_search_fmod" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmod" >&5 +printf "%s\n" "$ac_cv_search_fmod" >&6; } ac_res=$ac_cv_search_fmod -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -for ac_func in fdopendir fmod fnmatch getdtablesize \ - gettimeofday nanosleep select statvfs \ - GetSystemTimeAsFileTime -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +ac_fn_c_check_func "$LINENO" "fdopendir" "ac_cv_func_fdopendir" +if test "x$ac_cv_func_fdopendir" = xyes +then : + printf "%s\n" "#define HAVE_FDOPENDIR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fmod" "ac_cv_func_fmod" +if test "x$ac_cv_func_fmod" = xyes +then : + printf "%s\n" "#define HAVE_FMOD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fnmatch" "ac_cv_func_fnmatch" +if test "x$ac_cv_func_fnmatch" = xyes +then : + printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getdtablesize" "ac_cv_func_getdtablesize" +if test "x$ac_cv_func_getdtablesize" = xyes +then : + printf "%s\n" "#define HAVE_GETDTABLESIZE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" +if test "x$ac_cv_func_gettimeofday" = xyes +then : + printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" +if test "x$ac_cv_func_nanosleep" = xyes +then : + printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" +if test "x$ac_cv_func_select" = xyes +then : + printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs" +if test "x$ac_cv_func_statvfs" = xyes +then : + printf "%s\n" "#define HAVE_STATVFS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "GetSystemTimeAsFileTime" "ac_cv_func_GetSystemTimeAsFileTime" +if test "x$ac_cv_func_GetSystemTimeAsFileTime" = xyes +then : + printf "%s\n" "#define HAVE_GETSYSTEMTIMEASFILETIME 1" >>confdefs.h + +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} _ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg fi -done + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac - for ac_func in dirfd -do : ac_fn_c_check_func "$LINENO" "dirfd" "ac_cv_func_dirfd" -if test "x$ac_cv_func_dirfd" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DIRFD 1 -_ACEOF +if test "x$ac_cv_func_dirfd" = xyes +then : + printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h fi -done - ac_fn_c_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include + ac_fn_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include #include -" -if test "x$ac_cv_have_decl_dirfd" = xyes; then : +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dirfd" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_DIRFD $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL_DIRFD $ac_have_decl" >>confdefs.h if test $ac_cv_have_decl_dirfd = no; then HAVE_DECL_DIRFD=0 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dirfd is a macro" >&5 -$as_echo_n "checking whether dirfd is a macro... " >&6; } -if ${gl_cv_func_dirfd_macro+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether dirfd is a macro" >&5 +printf %s "checking whether dirfd is a macro... " >&6; } +if test ${gl_cv_func_dirfd_macro+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15689,16 +17183,17 @@ #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "dirent_header_defines_dirfd" >/dev/null 2>&1; then : + $EGREP "dirent_header_defines_dirfd" >/dev/null 2>&1 +then : gl_cv_func_dirfd_macro=yes -else +else $as_nop gl_cv_func_dirfd_macro=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_dirfd_macro" >&5 -$as_echo "$gl_cv_func_dirfd_macro" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_dirfd_macro" >&5 +printf "%s\n" "$gl_cv_func_dirfd_macro" >&6; } # Use the replacement only if we have no function or macro with that name. if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then @@ -15709,11 +17204,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get the file descriptor associated with an open DIR*" >&5 -$as_echo_n "checking how to get the file descriptor associated with an open DIR*... " >&6; } -if ${gl_cv_sys_dir_fd_member_name+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to get the file descriptor associated with an open DIR*" >&5 +printf %s "checking how to get the file descriptor associated with an open DIR*... " >&6; } +if test ${gl_cv_sys_dir_fd_member_name+y} +then : + printf %s "(cached) " >&6 +else $as_nop dirfd_save_CFLAGS=$CFLAGS for ac_expr in d_fd dd_fd; do @@ -15725,18 +17221,19 @@ #include #include int -main () +main (void) { DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : dir_fd_found=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$dirfd_save_CFLAGS test "$dir_fd_found" = yes && break done @@ -15746,44 +17243,44 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_dir_fd_member_name" >&5 -$as_echo "$gl_cv_sys_dir_fd_member_name" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_dir_fd_member_name" >&5 +printf "%s\n" "$gl_cv_sys_dir_fd_member_name" >&6; } if test $gl_cv_sys_dir_fd_member_name != no_such_member; then -cat >>confdefs.h <<_ACEOF -#define DIR_FD_MEMBER_NAME $gl_cv_sys_dir_fd_member_name -_ACEOF +printf "%s\n" "#define DIR_FD_MEMBER_NAME $gl_cv_sys_dir_fd_member_name" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +printf %s "checking for inline... " >&6; } +if test ${ac_cv_c_inline+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } +static $ac_kw foo_t static_foo (void) {return 0; } +$ac_kw foo_t foo (void) {return 0; } #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_inline=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; @@ -15834,8 +17331,8 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -15865,15 +17362,15 @@ /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -15887,8 +17384,8 @@ fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -15905,7 +17402,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -15916,14 +17413,14 @@ LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -15945,8 +17442,8 @@ ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -15969,14 +17466,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -15986,46 +17485,46 @@ fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -16034,13 +17533,6 @@ fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -16049,8 +17541,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -16062,30 +17558,10 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -16098,13 +17574,14 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -16131,18 +17608,20 @@ { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -16154,12 +17633,13 @@ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -16190,7 +17670,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -16212,6 +17692,10 @@ as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -16225,6 +17709,12 @@ ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -16266,7 +17756,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -16275,7 +17765,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -16337,8 +17827,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Awk Bundled Extensions $as_me 5.1.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by GNU Awk Bundled Extensions $as_me 5.1.1, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -16398,18 +17888,20 @@ $config_commands Report bugs to . -GNU Awk Bundled Extensions home page: . -General help using GNU software: ." +GNU Awk Bundled Extensions home page: . +General help using GNU software: ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -GNU Awk Bundled Extensions config.status 5.1.0 -configured by $0, generated by GNU Autoconf 2.69, +GNU Awk Bundled Extensions config.status 5.1.1 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -16449,15 +17941,15 @@ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -16465,7 +17957,7 @@ --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -16474,7 +17966,7 @@ as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -16502,7 +17994,7 @@ if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -16516,7 +18008,7 @@ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -16526,9 +18018,8 @@ # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake < 1.5. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. + OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" @@ -16843,9 +18334,9 @@ # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -17181,7 +18672,7 @@ esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -17189,17 +18680,17 @@ # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -17216,7 +18707,7 @@ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17240,9 +18731,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -17304,8 +18795,8 @@ case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -17349,9 +18840,9 @@ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -17367,20 +18858,20 @@ # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi @@ -17400,7 +18891,7 @@ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | +printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17420,8 +18911,8 @@ s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -17447,7 +18938,7 @@ for am_mf do # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line @@ -17459,7 +18950,7 @@ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | +printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17481,7 +18972,7 @@ $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | +printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -17506,8 +18997,8 @@ (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is @@ -17560,14 +19051,11 @@ if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) @@ -17652,7 +19140,6 @@ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -18168,6 +19655,7 @@ esac + ltmain=$ac_aux_dir/ltmain.sh @@ -18217,7 +19705,8 @@ $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + diff -urN gawk-5.1.0/extension/configure.ac gawk-5.1.1/extension/configure.ac --- gawk-5.1.0/extension/configure.ac 2020-04-14 14:44:45.000000000 +0300 +++ gawk-5.1.1/extension/configure.ac 2021-10-01 10:22:07.000000000 +0300 @@ -1,7 +1,7 @@ dnl dnl configure.ac --- autoconf input file for gawk dnl -dnl Copyright (C) 2012-2020 the Free Software Foundation, Inc. +dnl Copyright (C) 2012-2021 the Free Software Foundation, Inc. dnl dnl This file is part of GAWK, the GNU implementation of the dnl AWK Programming Language. @@ -23,14 +23,14 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([GNU Awk Bundled Extensions],[5.1.0],[bug-gawk@gnu.org],[gawk-extensions]) +AC_INIT([GNU Awk Bundled Extensions],[5.1.1],[bug-gawk@gnu.org],[gawk-extensions]) -AC_PREREQ([2.69]) +AC_PREREQ([2.71]) -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([../m4]) +AC_CONFIG_AUX_DIR([../build-aux]) -AM_INIT_AUTOMAKE([1.15 -Wall -Werror]) +AM_INIT_AUTOMAKE([1.16 -Wall -Werror]) GAWK_CANONICAL_HOST AC_USE_SYSTEM_EXTENSIONS @@ -55,7 +55,7 @@ dnl initialize GNU gettext dnl this seems to help with finding MPFR on some systems, too. AM_GNU_GETTEXT([external]) -AM_GNU_GETTEXT_VERSION([0.19.7]) +AM_GNU_GETTEXT_VERSION([0.20.2]) AM_LANGINFO_CODESET gt_LC_MESSAGES @@ -94,10 +94,8 @@ sys/statvfs.h sys/sysmacros.h sys/time.h) AC_HEADER_DIRENT -dnl 12/2017: AC_HEADER_MAJOR no longer works on recent Fedora / GLIBC. -dnl Instead we just check for the headers in the call above. -dnl AC_HEADER_MAJOR -AC_HEADER_TIME +AC_CHECK_HEADERS_ONCE([sys/time.h]) + dnl check for mpfr support case `uname -m` in diff -urN gawk-5.1.0/extension/filefuncs.c gawk-5.1.1/extension/filefuncs.c --- gawk-5.1.0/extension/filefuncs.c 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/extension/filefuncs.c 2021-10-27 07:34:30.000000000 +0300 @@ -10,7 +10,7 @@ */ /* - * Copyright (C) 2001, 2004, 2005, 2010-2020, + * Copyright (C) 2001, 2004, 2005, 2010-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -126,13 +126,16 @@ get_inode(const char *fname) { HANDLE fh; + BOOL ok; BY_HANDLE_FILE_INFORMATION info; fh = CreateFile(fname, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); if (fh == INVALID_HANDLE_VALUE) return 0; - if (GetFileInformationByHandle(fh, &info)) { + ok = GetFileInformationByHandle(fh, &info); + CloseHandle(fh); + if (ok) { long long inode = info.nFileIndexHigh; inode <<= 32; @@ -403,7 +406,8 @@ array_set_numeric(array, "gid", sbuf->st_gid); array_set_numeric(array, "size", sbuf->st_size); #ifdef __MINGW32__ - array_set_numeric(array, "blocks", (sbuf->st_size + 4095) / 4096); + array_set_numeric(array, "blocks", (double)((sbuf->st_size + + device_blocksize() - 1) / device_blocksize())); #else array_set_numeric(array, "blocks", sbuf->st_blocks); #endif @@ -568,6 +572,7 @@ #ifndef __MINGW32__ /* at least right now, only FTS needs initializing */ +#define FTS_NON_RECURSIVE FTS_STOP /* Don't step into directories. */ static struct flagtab { const char *name; int value; @@ -579,7 +584,7 @@ ENTRY(FTS_PHYSICAL), ENTRY(FTS_SEEDOT), ENTRY(FTS_XDEV), - ENTRY(FTS_SKIP), + {"FTS_SKIP", FTS_NON_RECURSIVE}, { NULL, 0 } }; @@ -836,7 +841,7 @@ int ret = -1; static const int mask = ( FTS_COMFOLLOW | FTS_LOGICAL | FTS_NOCHDIR | FTS_PHYSICAL - | FTS_SEEDOT | FTS_XDEV | FTS_SKIP); + | FTS_SEEDOT | FTS_XDEV | FTS_NON_RECURSIVE); assert(result != NULL); fts_errors = 0; /* ensure a fresh start */ @@ -886,6 +891,9 @@ } flags &= mask; /* turn off anything else */ + if (flags & FTS_NON_RECURSIVE) + flags |= FTS_NOCHDIR; + /* make pathvector */ count = path_array->count + 1; ezalloc(pathvector, char **, count * sizeof(char *), "do_fts"); @@ -900,8 +908,11 @@ assert(clear_array(dest.array_cookie)); /* let's do it! */ - if ((hierarchy = fts_open(pathvector, flags, NULL)) != NULL) { - process(hierarchy, dest.array_cookie, (flags & FTS_SEEDOT) != 0, (flags & FTS_SKIP) != 0); + hierarchy = fts_open(pathvector, flags & ~FTS_NON_RECURSIVE, NULL); + if (hierarchy != NULL) { + process(hierarchy, dest.array_cookie, + (flags & FTS_SEEDOT) != 0, + (flags & FTS_NON_RECURSIVE) != 0); fts_close(hierarchy); if (fts_errors == 0) diff -urN gawk-5.1.0/extension/gawkfts.c gawk-5.1.1/extension/gawkfts.c --- gawk-5.1.0/extension/gawkfts.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/gawkfts.c 2020-06-11 08:50:49.000000000 +0300 @@ -228,7 +228,7 @@ * so that everything about the "current" node is ignored. */ if ((sp->fts_cur = fts_alloc(sp, "", 0)) == NULL) - goto mem3; + goto mem4; sp->fts_cur->fts_link = root; sp->fts_cur->fts_info = FTS_INIT; @@ -252,6 +252,8 @@ return (sp); +mem4: if (sp->fts_array != NULL) + free(sp->fts_array); mem3: fts_lfree(root); fts_free(parent); mem2: free(sp->fts_path); @@ -916,6 +918,7 @@ (cur->fts_level == FTS_ROOTLEVEL ? FCHDIR(sp, sp->fts_rfd) : fts_safe_changedir(sp, cur->fts_parent, -1, ".."))) { + fts_lfree(head); cur->fts_info = FTS_ERR; SET(FTS_STOP); return (NULL); diff -urN gawk-5.1.0/extension/INSTALL gawk-5.1.1/extension/INSTALL --- gawk-5.1.0/extension/INSTALL 2019-08-28 21:42:13.000000000 +0300 +++ gawk-5.1.1/extension/INSTALL 2020-08-28 14:48:05.000000000 +0300 @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, -Inc. + Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software +Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -12,97 +12,96 @@ Basic Installation ================== - Briefly, the shell command `./configure && make && make install' + Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for +more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented +'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. - The `configure' shell script attempts to guess correct values for + The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you +some point 'config.cache' contains results you don't want to keep, you may remove or edit it. - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. The simplest way to compile this package is: - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. - Running `configure' might take a while. While running, it prints + Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. - 2. Type `make' to compile the package. + 2. Type 'make' to compile the package. - 3. Optionally, type `make check' to run any self-tests that come with + 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. - 4. Type `make install' to install the programs and any data files and + 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root + user, and only the 'make install' phase executed with root privileges. - 5. Optionally, type `make installcheck' to repeat any self-tests, but + 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required + regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. - 7. Often, you can also type `make uninstall' to remove the installed + 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. - 8. Some packages, particularly those that use Automake, provide `make + 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. + targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' +the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix @@ -113,21 +112,21 @@ You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the +own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. - With a non-GNU `make', it is safer to compile the package for one + With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before +installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ @@ -136,105 +135,104 @@ This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. +using the 'lipo' tool if you have problems. Installation Names ================== - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or +correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without +'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each -affected directory. For example, `make install +affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the package recognizes. - For packages that use the X Window System, `configure' can usually + For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure +execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure +overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. +overridden with 'make V=0'. Particular systems ================== - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. - HP-UX `make' updates targets which have the same time stamps as -their prerequisites, which makes it generally unusable when shipped -generated files such as `configure' are involved. Use GNU `make' -instead. + HP-UX 'make' updates targets which have the same time stamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try ./configure CC="cc" @@ -242,26 +240,26 @@ ./configure CC="cc -nodtk" - On Solaris, don't put `/usr/ucb' early in your `PATH'. This + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== - There may be some features `configure' cannot figure out + There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints +_same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM @@ -270,101 +268,101 @@ OS KERNEL-OS - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will +use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. +eventually be run) with '--host=TYPE'. Sharing Defaults ================ - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run +environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: +them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc -causes the specified `gcc' to be used as the C compiler (unless it is +causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf limitation. Until the limitation is lifted, you can use -this workaround: +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash -`configure' Invocation +'configure' Invocation ====================== - `configure' recognizes the following options to control how it + 'configure' recognizes the following options to control how it operates. -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. -`--help=short' -`--help=recursive' +'--help=short' +'--help=recursive' Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' script, and exit. -`--cache-file=FILE' +'--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to + traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error + suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). -`--srcdir=DIR' +'--srcdir=DIR' Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. -`--no-create' -`-n' +'--no-create' +'-n' Run the configure checks, but stop before creating any output files. -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff -urN gawk-5.1.0/extension/intdiv.c gawk-5.1.1/extension/intdiv.c --- gawk-5.1.0/extension/intdiv.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/intdiv.c 2021-10-27 07:35:15.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2017, 2018, the Free Software Foundation, Inc. + * Copyright (C) 2017, 2018, 2021, the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -191,7 +191,7 @@ /* extended precision */ mpz_ptr numer, denom; mpz_t numer_tmp, denom_tmp; - mpz_ptr quotient, remainder; + mpz_t quotient, remainder; /* convert numerator and denominator to integer */ if (!(numer = mpz_conv(&nv, numer_tmp))) { @@ -213,9 +213,8 @@ return make_number(-1, result); } - /* ask gawk to allocate return values for us */ - quotient = get_mpz_ptr(); - remainder = get_mpz_ptr(); + mpz_init(quotient); + mpz_init(remainder); /* do the division */ mpz_tdiv_qr(quotient, remainder, numer, denom); @@ -223,6 +222,9 @@ array_set_mpz(array, "quotient", 8, quotient); array_set_mpz(array, "remainder", 9, remainder); + mpz_clear(quotient); + mpz_clear(remainder); + /* release temporary variables */ if (numer == numer_tmp) mpz_clear(numer); diff -urN gawk-5.1.0/extension/Makefile.am gawk-5.1.1/extension/Makefile.am --- gawk-5.1.0/extension/Makefile.am 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/extension/Makefile.am 2021-10-27 07:36:54.000000000 +0300 @@ -1,7 +1,7 @@ # # extension/Makefile.am --- automake input file for gawk # -# Copyright (C) 1995-2006, 2012-2015, 2017, 2020, +# Copyright (C) 1995-2006, 2012-2015, 2017, 2020, 2021, # the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the @@ -28,7 +28,7 @@ # This variable insures that aclocal runs # correctly after changing configure.ac -ACLOCAL_AMFLAGS = -I m4 -I ../m4 +ACLOCAL_AMFLAGS = -I ../m4 # For some make's, e.g. OpenBSD, that don't define this RM = rm -f @@ -136,13 +136,12 @@ uninstall-recursive: uninstall-so -EXTRA_DIST = build-aux/config.rpath \ +EXTRA_DIST = \ ChangeLog \ ChangeLog.0 \ ChangeLog.1 \ ext_custom.h \ fts.3 \ - m4 \ README.fts \ rwarray0.c diff -urN gawk-5.1.0/extension/Makefile.in gawk-5.1.1/extension/Makefile.in --- gawk-5.1.0/extension/Makefile.in 2020-04-14 14:45:22.000000000 +0300 +++ gawk-5.1.1/extension/Makefile.in 2021-10-28 19:48:29.000000000 +0300 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -17,7 +17,7 @@ # # extension/Makefile.am --- automake input file for gawk # -# Copyright (C) 1995-2006, 2012-2015, 2017, 2020, +# Copyright (C) 1995-2006, 2012-2015, 2017, 2020, 2021, # the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the @@ -115,17 +115,22 @@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../m4/arch.m4 \ - $(top_srcdir)/../m4/mpfr.m4 \ + $(top_srcdir)/../m4/codeset.m4 $(top_srcdir)/../m4/dirfd.m4 \ + $(top_srcdir)/../m4/gettext.m4 \ + $(top_srcdir)/../m4/host-cpu-c-abi.m4 \ + $(top_srcdir)/../m4/iconv.m4 $(top_srcdir)/../m4/intlmacosx.m4 \ + $(top_srcdir)/../m4/lcmessage.m4 $(top_srcdir)/../m4/lib-ld.m4 \ + $(top_srcdir)/../m4/lib-link.m4 \ + $(top_srcdir)/../m4/lib-prefix.m4 \ + $(top_srcdir)/../m4/libtool.m4 \ + $(top_srcdir)/../m4/ltoptions.m4 \ + $(top_srcdir)/../m4/ltsugar.m4 \ + $(top_srcdir)/../m4/ltversion.m4 \ + $(top_srcdir)/../m4/lt~obsolete.m4 $(top_srcdir)/../m4/mpfr.m4 \ + $(top_srcdir)/../m4/nls.m4 $(top_srcdir)/../m4/po.m4 \ + $(top_srcdir)/../m4/progtest.m4 \ $(top_srcdir)/../m4/triplet-transformation.m4 \ - $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/dirfd.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ - $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \ - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ @@ -270,7 +275,7 @@ am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +depcomp = $(SHELL) $(top_srcdir)/../build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/filefuncs.Plo \ ./$(DEPDIR)/fnmatch.Plo ./$(DEPDIR)/fork.Plo \ @@ -354,24 +359,24 @@ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ - $(srcdir)/configh.in $(top_srcdir)/build-aux/ar-lib \ - $(top_srcdir)/build-aux/compile \ - $(top_srcdir)/build-aux/config.guess \ - $(top_srcdir)/build-aux/config.rpath \ - $(top_srcdir)/build-aux/config.sub \ - $(top_srcdir)/build-aux/depcomp \ - $(top_srcdir)/build-aux/install-sh \ - $(top_srcdir)/build-aux/ltmain.sh \ - $(top_srcdir)/build-aux/missing ABOUT-NLS AUTHORS COPYING \ - ChangeLog INSTALL NEWS README build-aux/ChangeLog \ - build-aux/ar-lib build-aux/compile build-aux/config.guess \ - build-aux/config.rpath build-aux/config.sub build-aux/depcomp \ - build-aux/install-sh build-aux/ltmain.sh build-aux/missing + $(srcdir)/configh.in $(top_srcdir)/../build-aux/ar-lib \ + $(top_srcdir)/../build-aux/compile \ + $(top_srcdir)/../build-aux/config.guess \ + $(top_srcdir)/../build-aux/config.rpath \ + $(top_srcdir)/../build-aux/config.sub \ + $(top_srcdir)/../build-aux/depcomp \ + $(top_srcdir)/../build-aux/install-sh \ + $(top_srcdir)/../build-aux/ltmain.sh \ + $(top_srcdir)/../build-aux/missing ../build-aux/ChangeLog \ + ../build-aux/ar-lib ../build-aux/compile \ + ../build-aux/config.guess ../build-aux/config.rpath \ + ../build-aux/config.sub ../build-aux/depcomp \ + ../build-aux/install-sh ../build-aux/ltmain.sh \ + ../build-aux/missing ../build-aux/texinfo.tex \ + ../build-aux/ylwrap ABOUT-NLS AUTHORS COPYING ChangeLog \ + INSTALL NEWS README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -410,6 +415,8 @@ DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -428,6 +435,8 @@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -438,6 +447,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ @@ -469,8 +479,8 @@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -554,7 +564,7 @@ # This variable insures that aclocal runs # correctly after changing configure.ac -ACLOCAL_AMFLAGS = -I m4 -I ../m4 +ACLOCAL_AMFLAGS = -I ../m4 # For some make's, e.g. OpenBSD, that don't define this RM = rm -f @@ -636,13 +646,12 @@ readdir_test_la_SOURCES = readdir_test.c readdir_test_la_LDFLAGS = $(MY_MODULE_FLAGS) -rpath /foo readdir_test_la_LIBADD = $(MY_LIBS) -EXTRA_DIST = build-aux/config.rpath \ +EXTRA_DIST = \ ChangeLog \ ChangeLog.0 \ ChangeLog.1 \ ext_custom.h \ fts.3 \ - m4 \ README.fts \ rwarray0.c @@ -1003,7 +1012,6 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -1150,7 +1158,7 @@ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ diff -urN gawk-5.1.0/extension/ordchr.c gawk-5.1.1/extension/ordchr.c --- gawk-5.1.0/extension/ordchr.c 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/extension/ordchr.c 2021-10-14 22:15:00.000000000 +0300 @@ -9,7 +9,7 @@ */ /* - * Copyright (C) 2001, 2004, 2011, 2012, 2013, 2018, 2020, + * Copyright (C) 2001, 2004, 2011, 2012, 2013, 2018, 2020, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -67,7 +67,7 @@ assert(result != NULL); if (get_argument(0, AWK_STRING, & str)) { - ret = str.str_value.str[0]; + ret = (unsigned char) str.str_value.str[0]; } else if (do_lint) lintwarn(ext_id, _("ord: first argument is not a string")); diff -urN gawk-5.1.0/extension/po/ChangeLog gawk-5.1.1/extension/po/ChangeLog --- gawk-5.1.0/extension/po/ChangeLog 2020-04-14 14:42:58.000000000 +0300 +++ gawk-5.1.1/extension/po/ChangeLog 2021-10-27 07:54:13.000000000 +0300 @@ -1,3 +1,24 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-06-18 Arnold D. Robbins + + * remove-potcdate.sed: Deleted. It gets nuked by 'make distclean. + +2021-05-06 Arnold D. Robbins + + * remove-potcdate.sed: New file. + +2020-07-20 gettextize + + * Makefile.in.in: Upgrade to gettext-0.20.2. + * Rules-quot: Upgrade to gettext-0.20.2. + * en@boldquot.header: Upgrade to gettext-0.20.2. + * en@quot.header: Upgrade to gettext-0.20.2. + * insert-header.sin: Upgrade to gettext-0.20.2. + * remove-potcdate.sin: Upgrade to gettext-0.20.2. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/extension/po/en@boldquot.header gawk-5.1.1/extension/po/en@boldquot.header --- gawk-5.1.0/extension/po/en@boldquot.header 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/po/en@boldquot.header 2020-08-28 14:48:05.000000000 +0300 @@ -2,7 +2,7 @@ # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). diff -urN gawk-5.1.0/extension/po/en@quot.header gawk-5.1.1/extension/po/en@quot.header --- gawk-5.1.0/extension/po/en@quot.header 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/po/en@quot.header 2020-08-28 14:48:05.000000000 +0300 @@ -2,7 +2,7 @@ # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). diff -urN gawk-5.1.0/extension/po/insert-header.sin gawk-5.1.1/extension/po/insert-header.sin --- gawk-5.1.0/extension/po/insert-header.sin 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/po/insert-header.sin 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,10 @@ # Sed script that inserts the file called HEADER before the header entry. # +# Copyright (C) 2001 Free Software Foundation, Inc. +# Written by Bruno Haible , 2001. +# This file is free software; the Free Software Foundation gives +# unlimited permission to use, copy, distribute, and modify it. +# # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following diff -urN gawk-5.1.0/extension/po/Makefile.in.in gawk-5.1.1/extension/po/Makefile.in.in --- gawk-5.1.0/extension/po/Makefile.in.in 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/po/Makefile.in.in 2020-08-28 14:48:05.000000000 +0300 @@ -1,13 +1,14 @@ # Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# Copyright (C) 1995-2000 Ulrich Drepper +# Copyright (C) 2000-2020 Free Software Foundation, Inc. # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. This file is offered as-is, # without any warranty. # -# Origin: gettext-0.19.7 -GETTEXT_MACRO_VERSION = 0.19 +# Origin: gettext-0.20.2 +GETTEXT_MACRO_VERSION = 0.20 PACKAGE = @PACKAGE@ VERSION = @VERSION@ @@ -52,16 +53,13 @@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) -MSGFMT_ = @MSGFMT@ -MSGFMT_no = @MSGFMT@ -MSGFMT_yes = @MSGFMT_015@ -MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) -MSGMERGE = msgmerge +MSGMERGE = @MSGMERGE@ MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter @@ -92,27 +90,44 @@ # Makevars gets inserted here. (Don't remove this line!) -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update +all: all-@USE_NLS@ -.po.mo: - @echo "$(MSGFMT) -c -o $@ $<"; \ - $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ +.SUFFIXES: +.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update + +# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs. +# The GNU Coding Standards say in +# : +# "GNU distributions usually contain some files which are not source files +# ... . Since these files normally appear in the source directory, they +# should always appear in the source directory, not in the build directory. +# So Makefile rules to update them should put the updated files in the +# source directory." +# Therefore we put these files in the source directory, not the build directory. + +# During .po -> .gmo conversion, take into account the most recent changes to +# the .pot file. This eliminates the need to update the .po files when the +# .pot file has changed, which would be troublesome if the .po files are put +# under version control. +$(GMOFILES): $(srcdir)/$(DOMAIN).pot .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \ + cd $(srcdir) && \ + rm -f $${lang}.gmo && \ + $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \ + $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \ + mv t-$${lang}.gmo $${lang}.gmo && \ + rm -f $${lang}.1po .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ -all: all-@USE_NLS@ - -all-yes: stamp-po +all-yes: $(srcdir)/stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. @@ -126,24 +141,24 @@ # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. -# In this case, stamp-po is a nop (i.e. a phony target). +# In this case, $(srcdir)/stamp-po is a nop (i.e. a phony target). -# stamp-po is a timestamp denoting the last time at which the CATALOGS have -# been loosely updated. Its purpose is that when a developer or translator -# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, -# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent -# invocations of "make" will do nothing. This timestamp would not be necessary -# if updating the $(CATALOGS) would always touch them; however, the rule for -# $(POFILES) has been designed to not touch files that don't need to be -# changed. -stamp-po: $(srcdir)/$(DOMAIN).pot +# $(srcdir)/stamp-po is a timestamp denoting the last time at which the CATALOGS +# have been loosely updated. Its purpose is that when a developer or translator +# checks out the package from a version control system, and the $(DOMAIN).pot +# file is not under version control, "make" will update the $(DOMAIN).pot and +# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This +# timestamp would not be necessary if updating the $(CATALOGS) would always +# touch them; however, the rule for $(POFILES) has been designed to not touch +# files that don't need to be changed. +$(srcdir)/stamp-po: $(srcdir)/$(DOMAIN).pot @$(CHECK_MACRO_VERSION) test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ - echo "touch stamp-po" && \ - echo timestamp > stamp-poT && \ - mv stamp-poT stamp-po; \ + echo "touch $(srcdir)/stamp-po" && \ + echo timestamp > $(srcdir)/stamp-poT && \ + mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', @@ -159,11 +174,9 @@ package_gnu="$(PACKAGE_GNU)"; \ test -n "$$package_gnu" || { \ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ - LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ - -size -10000000c -exec grep 'GNU @PACKAGE@' \ - /dev/null '{}' ';' 2>/dev/null; \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \ else \ - LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + LC_ALL=C grep -i 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ fi; \ } | grep -v 'libtool:' >/dev/null; then \ package_gnu=yes; \ @@ -184,26 +197,29 @@ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --add-comments=TRANSLATORS: \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --add-comments=TRANSLATORS: \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_prefix}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot-header; then \ sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ - cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \ - rm -f $(DOMAIN).1po; \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \ + rm -f $(DOMAIN).1po \ + || exit 1; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ @@ -228,17 +244,19 @@ # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(POFILESDEPS) + @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ - test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ - && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \ *) \ - $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ @@ -373,28 +391,30 @@ info dvi ps pdf html tags TAGS ctags CTAGS ID: +install-dvi install-ps install-pdf install-html: + mostlyclean: rm -f remove-potcdate.sed - rm -f stamp-poT + rm -f $(srcdir)/stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo + rm -f Makefile Makefile.in POTFILES maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." - rm -f stamp-po $(GMOFILES) + rm -f $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. -dist2: stamp-po $(DISTFILES) +dist2: $(srcdir)/stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ @@ -439,13 +459,15 @@ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ - $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ diff -urN gawk-5.1.0/extension/po/remove-potcdate.sin gawk-5.1.1/extension/po/remove-potcdate.sin --- gawk-5.1.0/extension/po/remove-potcdate.sin 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/po/remove-potcdate.sin 2020-08-28 14:48:05.000000000 +0300 @@ -1,6 +1,12 @@ -# Sed script that remove the POT-Creation-Date line in the header entry +# Sed script that removes the POT-Creation-Date line in the header entry # from a POT file. # +# Copyright (C) 2002 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ diff -urN gawk-5.1.0/extension/po/Rules-quot gawk-5.1.1/extension/po/Rules-quot --- gawk-5.1.0/extension/po/Rules-quot 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/po/Rules-quot 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,9 @@ -# This file, Rules-quot, can be copied and used freely without restrictions. # Special Makefile rules for English message catalogs with quotation marks. +# +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# This file, Rules-quot, and its auxiliary files (listed under +# DISTFILES.common.extra1) are free software; the Free Software Foundation +# gives unlimited permission to use, copy, distribute, and modify them. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot diff -urN gawk-5.1.0/extension/readdir.c gawk-5.1.1/extension/readdir.c --- gawk-5.1.0/extension/readdir.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/readdir.c 2021-10-27 07:37:46.000000000 +0300 @@ -11,7 +11,8 @@ */ /* - * Copyright (C) 2012-2014, 2018, 2019 the Free Software Foundation, Inc. + * Copyright (C) 2012-2014, 2018, 2019, 2021, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -144,6 +145,7 @@ #ifdef __MINGW32__ char fname[PATH_MAX]; HANDLE fh; + BOOL ok; BY_HANDLE_FILE_INFORMATION info; sprintf(fname, "%s\\%s", dirname, entry->d_name); @@ -151,7 +153,9 @@ FILE_FLAG_BACKUP_SEMANTICS, NULL); if (fh == INVALID_HANDLE_VALUE) return 0; - if (GetFileInformationByHandle(fh, &info)) { + ok = GetFileInformationByHandle(fh, &info); + CloseHandle(fh); + if (ok) { long long inode = info.nFileIndexHigh; inode <<= 32; diff -urN gawk-5.1.0/extension/rwarray0.c gawk-5.1.1/extension/rwarray0.c --- gawk-5.1.0/extension/rwarray0.c 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/extension/rwarray0.c 2021-10-27 07:38:10.000000000 +0300 @@ -7,7 +7,7 @@ */ /* - * Copyright (C) 2009, 2010, 2011, 2012, 2013, 2018, 2020, + * Copyright (C) 2009, 2010, 2011, 2012, 2013, 2018, 2020, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -425,7 +425,7 @@ if (code == 2) { awk_array_t array = create_array(); - if (read_array(fd, array) != 0) + if (! read_array(fd, array)) return awk_false; /* hook into value */ diff -urN gawk-5.1.0/extension/testext.c gawk-5.1.1/extension/testext.c --- gawk-5.1.0/extension/testext.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/extension/testext.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013, 2014, 2015, 2017, 2018 + * Copyright (C) 2012, 2013, 2014, 2015, 2017, 2018, 2021 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -314,7 +314,7 @@ goto out; } - /* look up PROCINFO - should succeed fail */ + /* look up PROCINFO - should succeed */ if (sym_lookup("PROCINFO", AWK_ARRAY, & value)) printf("var_test: sym_lookup of PROCINFO passed - got a value!\n"); else diff -urN gawk-5.1.0/extras/ChangeLog gawk-5.1.1/extras/ChangeLog --- gawk-5.1.0/extras/ChangeLog 2020-04-14 14:43:38.000000000 +0300 +++ gawk-5.1.1/extras/ChangeLog 2021-10-27 07:54:21.000000000 +0300 @@ -1,3 +1,7 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/extras/Makefile.in gawk-5.1.1/extras/Makefile.in --- gawk-5.1.0/extras/Makefile.in 2020-04-14 14:44:52.000000000 +0300 +++ gawk-5.1.1/extras/Makefile.in 2021-10-28 19:48:29.000000000 +0300 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -115,20 +115,20 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libsigsegv.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \ - $(top_srcdir)/m4/socket.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \ $(top_srcdir)/m4/triplet-transformation.m4 \ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @@ -181,12 +181,12 @@ am__installdirs = "$(DESTDIR)$(profiledir)" DATA = $(profile_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ - ChangeLog +am__DIST_COMMON = $(srcdir)/Makefile.in ChangeLog DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -196,6 +196,8 @@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -203,6 +205,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GAWKLIBEXT = @GAWKLIBEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ @@ -234,8 +237,8 @@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -264,6 +267,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ acl_shlibext = @acl_shlibext@ am__include = @am__include@ @@ -376,7 +380,6 @@ cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff -urN gawk-5.1.0/field.c gawk-5.1.1/field.c --- gawk-5.1.0/field.c 2020-04-10 15:25:02.000000000 +0300 +++ gawk-5.1.1/field.c 2021-10-27 07:38:32.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2020 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2021 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -90,6 +90,8 @@ Regexp *FPAT_regexp = NULL; NODE *Null_field = NULL; +#define clear_mpfr(n) ((n)->flags &= ~(MPFN | MPZN | NUMCUR)) + /* init_fields --- set up the fields array to start with */ void @@ -230,6 +232,7 @@ } n->stptr = cops; + clear_mpfr(n); unref(r); fields_arr[i] = n; assert((n->flags & WSTRCUR) == 0); @@ -347,6 +350,11 @@ } } +/* + * purge_record --- throw away the fields, make sure that + * individual nodes remain valid. + */ + static void purge_record() { @@ -980,6 +988,8 @@ sep_arr = POP_PARAM(); if (sep_arr->type != Node_var_array) fatal(_("split: fourth argument is not an array")); + check_symtab_functab(sep_arr, "split", + _("%s: cannot use %s as fourth argument")); if ((do_lint_extensions || do_lint_old) && ! warned) { warned = true; lintwarn(_("split: fourth argument is a gawk extension")); @@ -990,6 +1000,8 @@ arr = POP_PARAM(); if (arr->type != Node_var_array) fatal(_("split: second argument is not an array")); + check_symtab_functab(arr, "split", + _("%s: cannot use %s as second argument")); if (sep_arr != NULL) { if (sep_arr == arr) @@ -1073,11 +1085,15 @@ sep_arr = POP_PARAM(); if (sep_arr->type != Node_var_array) fatal(_("patsplit: fourth argument is not an array")); + check_symtab_functab(sep_arr, "patsplit", + _("%s: cannot use %s as fourth argument")); } sep = POP(); arr = POP_PARAM(); if (arr->type != Node_var_array) fatal(_("patsplit: second argument is not an array")); + check_symtab_functab(arr, "patsplit", + _("%s: cannot use %s as second argument")); src = TOP_STRING(); diff -urN gawk-5.1.0/floatcomp.c gawk-5.1.1/floatcomp.c --- gawk-5.1.0/floatcomp.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/floatcomp.c 2021-10-27 07:39:14.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2011, 2016 + * Copyright (C) 1986, 1988, 1989, 1991-2011, 2016, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -25,7 +25,6 @@ */ #include "awk.h" -#include #ifdef HAVE_UINTMAX_T diff -urN gawk-5.1.0/gawkapi.c gawk-5.1.1/gawkapi.c --- gawk-5.1.0/gawkapi.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/gawkapi.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012-2019 the Free Software Foundation, Inc. + * Copyright (C) 2012-2019, 2021, the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -25,21 +25,13 @@ #include "awk.h" -#ifdef HAVE_MPFR -#define getmpfr(n) getblock(n, BLOCK_MPFR, mpfr_ptr) -#define freempfr(n) freeblock(n, BLOCK_MPFR) - -#define getmpz(n) getblock(n, BLOCK_MPZ, mpz_ptr) -#define freempz(n) freeblock(n, BLOCK_MPZ) -#endif - /* Declare some globals used by api_get_file: */ extern IOBUF *curfile; extern INSTRUCTION *main_beginfile; extern int currule; static awk_bool_t node_to_awk_value(NODE *node, awk_value_t *result, awk_valtype_t wanted); -static char *valtype2str(awk_valtype_t type); +static const char *valtype2str(awk_valtype_t type); static NODE *ns_lookup(const char *name_space, const char *name, char **full_name); /* @@ -79,7 +71,7 @@ /* if type is undefined */ if (arg->type == Node_var_new) { if (wanted == AWK_UNDEFINED) - return true; + return awk_true; else if (wanted == AWK_ARRAY) { goto array; } else { @@ -90,7 +82,7 @@ /* at this point, we have real type */ if (arg->type == Node_var_array || arg->type == Node_array_ref) { if (wanted != AWK_ARRAY && wanted != AWK_UNDEFINED) - return false; + return awk_false; goto array; } else goto scalar; @@ -156,6 +148,7 @@ { NODE *ext_ret_val = NULL; NODE *v; + int tval = 0; if (retval == NULL) fatal(_("awk_value_to_node: received null retval")); @@ -177,8 +170,8 @@ if (! do_mpfr) fatal(_("awk_value_to_node: not in MPFR mode")); ext_ret_val = make_number_node(MPFN); - memcpy(&ext_ret_val->mpg_numbr, retval->num_ptr, sizeof(ext_ret_val->mpg_numbr)); - freempfr(retval->num_ptr); + tval = mpfr_set(ext_ret_val->mpg_numbr, (mpfr_ptr) retval->num_ptr, ROUND_MODE); + IEEE_FMT(ext_ret_val->mpg_numbr, tval); #else fatal(_("awk_value_to_node: MPFR not supported")); #endif @@ -188,8 +181,7 @@ if (! do_mpfr) fatal(_("awk_value_to_node: not in MPFR mode")); ext_ret_val = make_number_node(MPZN); - memcpy(&ext_ret_val->mpg_i, retval->num_ptr, sizeof(ext_ret_val->mpg_i)); - freempz(retval->num_ptr); + mpz_set(ext_ret_val->mpg_i, (mpz_ptr) retval->num_ptr); #else fatal(_("awk_value_to_node: MPFR not supported")); #endif @@ -284,7 +276,7 @@ (void) id; va_start(args, format); - if (lintwarn == r_fatal) { + if (lintfunc == r_fatal) { err(true, _("fatal: "), format, args); } else { err(false, _("warning: "), format, args); @@ -520,7 +512,7 @@ val->num_ptr = &node->mpg_i; break; default: - fatal(_("node_to_awk_value: detected invalid numeric flags combination `%s'; please file a bug report."), flags2str(node->flags)); + fatal(_("node_to_awk_value: detected invalid numeric flags combination `%s'; please file a bug report"), flags2str(node->flags)); break; } #endif @@ -607,7 +599,7 @@ } /* fall through */ default: - warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report."), flags2str(node->flags)); + warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report"), flags2str(node->flags)); val->val_type = AWK_UNDEFINED; break; } @@ -641,7 +633,7 @@ } /* fall through */ default: - warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report."), flags2str(node->flags)); + warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report"), flags2str(node->flags)); val->val_type = AWK_UNDEFINED; break; } @@ -668,7 +660,7 @@ } /* fall through */ default: - warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report."), flags2str(node->flags)); + warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report"), flags2str(node->flags)); val->val_type = AWK_UNDEFINED; break; } @@ -701,7 +693,7 @@ } /* fall through */ default: - warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report."), flags2str(node->flags)); + warning(_("node_to_awk_value detected invalid flags combination `%s'; please file a bug report"), flags2str(node->flags)); val->val_type = AWK_UNDEFINED; break; } @@ -1237,7 +1229,7 @@ awk_array_t a_cookie, awk_flat_array_t *data) { - NODE *array = a_cookie; + NODE *array = (NODE *) a_cookie; NODE **list; size_t i, j, k; @@ -1311,7 +1303,7 @@ { #ifdef HAVE_MPFR mpfr_ptr p; - getmpfr(p); + emalloc(p, mpfr_ptr, sizeof(mpfr_t), "api_get_mpfr"); mpfr_init(p); return p; #else @@ -1327,7 +1319,8 @@ { #ifdef HAVE_MPFR mpz_ptr p; - getmpz(p); + emalloc(p, mpz_ptr, sizeof (mpz_t), "api_get_mpz"); + mpz_init(p); return p; #else @@ -1567,13 +1560,13 @@ /* valtype2str --- return a printable representation of a value type */ -static char * +static const char * valtype2str(awk_valtype_t type) { static char buf[100]; // Important: keep in same order as in gawkapi.h! - static char *values[] = { + static const char *values[] = { "AWK_UNDEFINED", "AWK_NUMBER", "AWK_STRING", diff -urN gawk-5.1.0/gawkapi.h gawk-5.1.1/gawkapi.h --- gawk-5.1.0/gawkapi.h 2020-02-06 22:52:56.000000000 +0200 +++ gawk-5.1.1/gawkapi.h 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012-2019 the Free Software Foundation, Inc. + * Copyright (C) 2012-2019, 2021 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -149,6 +149,7 @@ int fd; /* file descriptor */ #define INVALID_HANDLE (-1) void *opaque; /* private data for input parsers */ + /* * The get_record function is called to read the next record of data. * @@ -187,10 +188,10 @@ const awk_fieldwidth_info_t **field_width); /* - * No argument prototype on read_func to allow for older systems - * whose headers are not up to date. + * This replaces the POSIX read() system call. Use it if you want to + * manage reading raw bytes yourself, and let gawk parse the record. */ - ssize_t (*read_func)(); + ssize_t (*read_func)(int, void *, size_t); /* * The close_func is called to allow the parser to free private data. @@ -297,7 +298,7 @@ } awk_two_way_processor_t; #define gawk_api_major_version 3 -#define gawk_api_minor_version 0 +#define gawk_api_minor_version 1 /* Current version of the API. */ enum { @@ -329,6 +330,13 @@ AWK_NUMBER_TYPE_MPZ }; +/* + * When type is AWK_NUMBER_MPFR or AWK_NUMBER_MPZ, the memory pointed to + * by the ptr member belongs to gawk if it came from gawk. Otherwise the + * memory belongs to the extension and gawk copies it when its received. + * See the manual for further discussion. + */ + typedef struct awk_number { double d; /* always populated in data received from gawk */ enum AWK_NUMBER_TYPE type; @@ -775,16 +783,16 @@ void (*api_free)(void *ptr); /* - * A function that returns mpfr data should call this function - * to allocate and initialize an mpfr_ptr for use in an - * awk_value_t structure that will be handed to gawk. + * Obsolete function, should not be used. It remains only + * for binary compatibility. Any value it returns should be + * freed via api_free. */ void *(*api_get_mpfr)(awk_ext_id_t id); /* - * A function that returns mpz data should call this function - * to allocate and initialize an mpz_ptr for use in an - * awk_value_t structure that will be handed to gawk. + * Obsolete function, should not be used. It remains only + * for binary compatibility. Any value it returns should be + * freed via api_free. */ void *(*api_get_mpz)(awk_ext_id_t id); @@ -928,6 +936,7 @@ #define get_file(name, namelen, filetype, fd, ibuf, obuf) \ (api->api_get_file(ext_id, name, namelen, filetype, fd, ibuf, obuf)) +/* These two are obsolete and should not be used. */ #define get_mpfr_ptr() (api->api_get_mpfr(ext_id)) #define get_mpz_ptr() (api->api_get_mpz(ext_id)) @@ -1035,8 +1044,7 @@ /* * make_number_mpz --- make an mpz number value in result. - * The mpz_ptr must be from a call to get_mpz_ptr. Gawk will now - * take ownership of this memory. + * The mpz_ptr must be from a call to get_mpz_ptr. */ static inline awk_value_t * @@ -1050,8 +1058,7 @@ /* * make_number_mpfr --- make an mpfr number value in result. - * The mpfr_ptr must be from a call to get_mpfr_ptr. Gawk will now - * take ownership of this memory. + * The mpfr_ptr must be from a call to get_mpfr_ptr. */ static inline awk_value_t * diff -urN gawk-5.1.0/INSTALL gawk-5.1.1/INSTALL --- gawk-5.1.0/INSTALL 2019-08-28 21:42:12.000000000 +0300 +++ gawk-5.1.1/INSTALL 2020-08-28 14:48:04.000000000 +0300 @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, -Inc. + Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software +Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -12,97 +12,96 @@ Basic Installation ================== - Briefly, the shell command `./configure && make && make install' + Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for +more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented +'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. - The `configure' shell script attempts to guess correct values for + The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you +some point 'config.cache' contains results you don't want to keep, you may remove or edit it. - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. The simplest way to compile this package is: - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. - Running `configure' might take a while. While running, it prints + Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. - 2. Type `make' to compile the package. + 2. Type 'make' to compile the package. - 3. Optionally, type `make check' to run any self-tests that come with + 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. - 4. Type `make install' to install the programs and any data files and + 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root + user, and only the 'make install' phase executed with root privileges. - 5. Optionally, type `make installcheck' to repeat any self-tests, but + 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required + regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. - 7. Often, you can also type `make uninstall' to remove the installed + 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. - 8. Some packages, particularly those that use Automake, provide `make + 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. + targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' +the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix @@ -113,21 +112,21 @@ You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the +own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. - With a non-GNU `make', it is safer to compile the package for one + With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before +installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ @@ -136,105 +135,104 @@ This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. +using the 'lipo' tool if you have problems. Installation Names ================== - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or +correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without +'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each -affected directory. For example, `make install +affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the package recognizes. - For packages that use the X Window System, `configure' can usually + For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure +execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure +overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. +overridden with 'make V=0'. Particular systems ================== - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. - HP-UX `make' updates targets which have the same time stamps as -their prerequisites, which makes it generally unusable when shipped -generated files such as `configure' are involved. Use GNU `make' -instead. + HP-UX 'make' updates targets which have the same time stamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try ./configure CC="cc" @@ -242,26 +240,26 @@ ./configure CC="cc -nodtk" - On Solaris, don't put `/usr/ucb' early in your `PATH'. This + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== - There may be some features `configure' cannot figure out + There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints +_same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM @@ -270,101 +268,101 @@ OS KERNEL-OS - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will +use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. +eventually be run) with '--host=TYPE'. Sharing Defaults ================ - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run +environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: +them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc -causes the specified `gcc' to be used as the C compiler (unless it is +causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf limitation. Until the limitation is lifted, you can use -this workaround: +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash -`configure' Invocation +'configure' Invocation ====================== - `configure' recognizes the following options to control how it + 'configure' recognizes the following options to control how it operates. -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. -`--help=short' -`--help=recursive' +'--help=short' +'--help=recursive' Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' script, and exit. -`--cache-file=FILE' +'--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to + traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error + suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). -`--srcdir=DIR' +'--srcdir=DIR' Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. -`--no-create' -`-n' +'--no-create' +'-n' Run the configure checks, but stop before creating any output files. -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff -urN gawk-5.1.0/interpret.h gawk-5.1.1/interpret.h --- gawk-5.1.0/interpret.h 2020-02-06 22:52:56.000000000 +0200 +++ gawk-5.1.1/interpret.h 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2020, + * Copyright (C) 1986, 1988, 1989, 1991-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -100,9 +100,21 @@ } #endif - switch ((op = pc->opcode)) { + op = pc->opcode; + if (do_itrace) { + fprintf(stderr, "+ %s\n", opcode2str(op)); + fflush(stderr); + } + + switch (op) { case Op_rule: - currule = pc->in_rule; /* for sole use in Op_K_next, Op_K_nextfile, Op_K_getline */ + currule = pc->in_rule; /* for use in Op_K_next, Op_K_nextfile, Op_K_getline */ + // 8/2020: See node BEGINFILE/ENDFILE in the manual. We clear the record + // since conceptually we are before reading a new record from the + // upcoming file but haven't read it yet. + if (currule == BEGINFILE) + set_record("", 0, NULL); + /* fall through */ case Op_func: source = pc->source_file; @@ -253,14 +265,25 @@ t2 = mk_sub(pc->sub_count); t1 = POP_ARRAY(false); - if (do_lint && in_array(t1, t2) == NULL) { + if (in_array(t1, t2) == NULL) { t2 = force_string(t2); - lintwarn(_("reference to uninitialized element `%s[\"%.*s\"]'"), - array_vname(t1), (int) t2->stlen, t2->stptr); - if (t2->stlen == 0) - lintwarn(_("subscript of array `%s' is null string"), array_vname(t1)); + + if (t1 == func_table) { + fatal(_("reference to uninitialized element `%s[\"%.*s\"] is not allowed'"), + "FUNCTAB", (int) t2->stlen, t2->stptr); + } else if (t1 == symbol_table) { + fatal(_("reference to uninitialized element `%s[\"%.*s\"] is not allowed'"), + "SYMTAB", (int) t2->stlen, t2->stptr); + } else if (do_lint) { + lintwarn(_("reference to uninitialized element `%s[\"%.*s\"]'"), + array_vname(t1), (int) t2->stlen, t2->stptr); + if (t2->stlen == 0) + lintwarn(_("subscript of array `%s' is null string"), array_vname(t1)); + } } + // continue the regular processing + /* for FUNCTAB, get the name as the element value */ if (t1 == func_table) { static bool warned = false; @@ -402,16 +425,21 @@ lintwarn(_("assignment used in conditional context")); break; - case LINT_no_effect: - lintwarn(_("statement has no effect")); - break; - default: cant_happen(); } } break; + case Op_lint_plus: + // no need to check do_lint, this opcode won't + // be generated if that's not true + t1 = TOP(); + t2 = PEEK(1); + if ((t1->flags & STRING) != 0 && (t2->flags & STRING) != 0) + lintwarn(_("operator `+' used on two string values")); + break; + case Op_K_break: case Op_K_continue: case Op_jmp: @@ -1022,7 +1050,8 @@ (unsigned long) max_expect); PUSH_CODE(pc); - r = awk_value_to_node(pc->extfunc(arg_count, & result, f)); + awk_value_t *ef_ret = pc->extfunc(arg_count, & result, f); + r = awk_value_to_node(ef_ret); (void) POP_CODE(); while (arg_count-- > 0) { t1 = POP(); @@ -1228,7 +1257,7 @@ JUMPTO(ni); case Op_K_getline_redir: - r = do_getline_redir(pc->into_var, pc->redir_type); + r = do_getline_redir(pc->into_var, (enum redirval) pc->redir_type); PUSH(r); break; diff -urN gawk-5.1.0/io.c gawk-5.1.1/io.c --- gawk-5.1.0/io.c 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/io.c 2021-10-24 20:31:24.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2020, + * Copyright (C) 1986, 1988, 1989, 1991-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -310,7 +310,7 @@ static NODE *in_PROCINFO(const char *pidx1, const char *pidx2, NODE **full_idx); static long get_read_timeout(IOBUF *iop); -static ssize_t read_with_timeout(int fd, char *buf, size_t size); +static ssize_t read_with_timeout(int fd, void *buf, size_t size); static bool read_can_timeout = false; static long read_timeout; @@ -447,7 +447,6 @@ int fd = INVALID_HANDLE; int errcode = 0; IOBUF *iop = *curfile; - long argc; if (skipping) { /* for 'nextfile' call */ errcode = 0; @@ -469,9 +468,7 @@ return 0; } - argc = get_number_si(ARGC_node->var_value); - - for (; i < argc; i++) { + for (; i < get_number_si(ARGC_node->var_value); i++) { tmp = make_number((AWKNUM) i); (void) force_string(tmp); arg = in_array(ARGV_node, tmp); @@ -725,9 +722,72 @@ { 0, NULL } }; + if (flags == RED_NONE) + return "RED_NONE"; + return genflags2str(flags, redtab); } +/* check_duplicated_redirections --- see if the same name used differently */ + +static void +check_duplicated_redirections(const char *name, size_t len, + redirect_flags_t oldflags, redirect_flags_t newflags) +{ + static struct mixture { + redirect_flags_t common; + redirect_flags_t mode; + redirect_flags_t other_mode; + const char *message; + } mixtures[] = { + { RED_FILE, RED_READ, RED_WRITE, + gettext_noop("`%.*s' used for input file and for output file") }, + { RED_READ, RED_FILE, RED_PIPE, + gettext_noop("`%.*s' used for input file and input pipe") }, + { RED_READ, RED_FILE, RED_TWOWAY, + gettext_noop("`%.*s' used for input file and two-way pipe") }, + { RED_NONE, (RED_FILE|RED_READ), (RED_PIPE|RED_WRITE), + gettext_noop("`%.*s' used for input file and output pipe") }, + { (RED_FILE|RED_WRITE), (RED_FILE|RED_WRITE), RED_APPEND, + gettext_noop("unnecessary mixing of `>' and `>>' for file `%.*s'") }, + { RED_NONE, (RED_FILE|RED_WRITE), (RED_PIPE|RED_READ), + gettext_noop("`%.*s' used for input pipe and output file") }, + { RED_WRITE, RED_FILE, RED_PIPE, + gettext_noop("`%.*s' used for output file and output pipe") }, + { RED_WRITE, RED_FILE, RED_TWOWAY, + gettext_noop("`%.*s' used for output file and two-way pipe") }, + { RED_PIPE, RED_READ, RED_WRITE, + gettext_noop("`%.*s' used for input pipe and output pipe") }, + { RED_READ, RED_PIPE, RED_TWOWAY, + gettext_noop("`%.*s' used for input pipe and two-way pipe") }, + { RED_WRITE, RED_PIPE, RED_TWOWAY, + gettext_noop("`%.*s' used for output pipe and two-way pipe") }, + }; + int i = 0, j = sizeof(mixtures) / sizeof(mixtures[0]); + + oldflags &= ~(RED_NOBUF|RED_EOF|RED_PTY); + newflags &= ~(RED_NOBUF|RED_EOF|RED_PTY); + + for (i = 0; i < j; i++) { + bool both_have_common = \ + ( (oldflags & mixtures[i].common) == mixtures[i].common + && (newflags & mixtures[i].common) == mixtures[i].common); + bool old_has_mode = (oldflags & mixtures[i].mode) == mixtures[i].mode; + bool new_has_mode = (newflags & mixtures[i].mode) == mixtures[i].mode; + bool old_has_other_mode = (oldflags & mixtures[i].other_mode) == mixtures[i].other_mode; + bool new_has_other_mode = (newflags & mixtures[i].other_mode) == mixtures[i].other_mode; + + if ( both_have_common + && oldflags != newflags + && ( (old_has_mode || new_has_mode) + && (old_has_other_mode || new_has_other_mode))) + { + lintwarn(_(mixtures[i].message), len, name); + return; + } + } +} + /* redirect_string --- Redirection for printf and print commands, use string info */ struct redirect * @@ -735,8 +795,8 @@ int redirtype, int *errflg, int extfd, bool failure_fatal) { struct redirect *rp; - int tflag = 0; - int outflag = 0; + redirect_flags_t tflag = RED_NONE; + redirect_flags_t outflag = RED_NONE; const char *direction = "to"; const char *mode; int fd; @@ -831,20 +891,17 @@ /* now check for a match */ if (strlen(rp->value) == explen - && memcmp(rp->value, str, explen) == 0 - && ((rp->flag & ~(RED_NOBUF|RED_EOF|RED_PTY)) == tflag - || (outflag != 0 - && (rp->flag & (RED_FILE|RED_WRITE)) == outflag))) { - - int rpflag = (rp->flag & ~(RED_NOBUF|RED_EOF|RED_PTY)); - int newflag = (tflag & ~(RED_NOBUF|RED_EOF|RED_PTY)); - - if (do_lint && rpflag != newflag) - lintwarn( - _("unnecessary mixing of `>' and `>>' for file `%.*s'"), - (int) explen, rp->value); + && memcmp(rp->value, str, explen) == 0) { + if (do_lint) { + check_duplicated_redirections(rp->value, explen, + (redirect_flags_t) rp->flag, (redirect_flags_t) tflag); + } - break; + if (((rp->flag & ~(RED_NOBUF|RED_EOF|RED_PTY)) == tflag + || (outflag != 0 + && (rp->flag & (RED_FILE|RED_WRITE)) == outflag))) { + break; + } } } @@ -861,7 +918,7 @@ newstr[explen] = '\0'; str = newstr; rp->value = newstr; - rp->flag = tflag; + rp->flag = (redirect_flags_t) tflag; init_output_wrapper(& rp->output); rp->output.name = str; rp->iop = NULL; @@ -1166,7 +1223,7 @@ rp->flag |= RED_USED; errno = 0; if (rp->output.gawk_fclose(rp->output.fp, rp->output.opaque) != 0) - warning(_("close of `%s' failed: %s."), + warning(_("close of `%s' failed: %s"), rp->value, strerror(errno)); rp->output.fp = NULL; break; @@ -1341,6 +1398,9 @@ if ((rp->flag & RED_PIPE) != 0) lintwarn(_("failure status (%d) on pipe close of `%s': %s"), status, rp->value, s); + else if ((rp->flag & RED_TWOWAY) != 0) + lintwarn(_("failure status (%d) on two-way pipe close of `%s': %s"), + status, rp->value, s); else lintwarn(_("failure status (%d) on file close of `%s': %s"), status, rp->value, s); @@ -1454,13 +1514,13 @@ messagefunc = r_warning; if ((rp->flag & RED_PIPE) != 0) - messagefunc(_("pipe flush of `%s' failed: %s."), + messagefunc(_("pipe flush of `%s' failed: %s"), rp->value, strerror(errno)); else if ((rp->flag & RED_TWOWAY) != 0) - messagefunc(_("co-process flush of pipe to `%s' failed: %s."), + messagefunc(_("co-process flush of pipe to `%s' failed: %s"), rp->value, strerror(errno)); else - messagefunc(_("file flush of `%s' failed: %s."), + messagefunc(_("file flush of `%s' failed: %s"), rp->value, strerror(errno)); status++; } @@ -2681,8 +2741,8 @@ close(p[0]); fatal(_("close of pipe failed: %s"), strerror(errno)); } -#endif os_close_on_exec(p[0], cmd, "pipe", "from"); +#endif if ((BINMODE & BINMODE_INPUT) != 0) os_setbinmode(p[0], O_BINARY); rp->iop = iop_alloc(p[0], cmd, 0); @@ -2895,8 +2955,8 @@ typedef struct { const char *envname; - char **dfltp; /* pointer to address of default path */ - char **awkpath; /* array containing library search paths */ + const char **dfltp; /* pointer to address of default path */ + const char **awkpath; /* array containing library search paths */ int max_pathlen; /* length of the longest item in awkpath */ } path_info; @@ -2915,8 +2975,9 @@ static void init_awkpath(path_info *pi) { - char *path; - char *start, *end, *p; + const char *path; + const char *start, *end; + char *p; int len, i; int max_path; /* (# of allocated paths)-1 */ @@ -2925,12 +2986,12 @@ path = pi->dfltp[0]; /* count number of separators */ - for (max_path = 0, p = path; *p; p++) + for (max_path = 0, p = (char *) path; *p; p++) if (*p == envsep) max_path++; // +3 --> 2 for null entries at front and end of path, 1 for NULL end of list - ezalloc(pi->awkpath, char **, (max_path + 3) * sizeof(char *), "init_awkpath"); + ezalloc(pi->awkpath, const char **, (max_path + 3) * sizeof(char *), "init_awkpath"); start = path; i = 0; @@ -3640,7 +3701,7 @@ * If still room in buffer, skip over null match * and restart search. Otherwise, return. */ - if (bp + iop->scanoff < iop->dataend) { + if (bp + iop->scanoff <= iop->dataend) { bp += iop->scanoff; goto again; } @@ -3691,7 +3752,7 @@ * "abc" into the front of the next record. Ooops. * * The re->maybe_long member is true if the - * regex contains one of: + * ? |. This is a very + * regex contains one of: + * ? | { }. This is a very * simple heuristic, but in combination with the * "end of match within a few bytes of end of buffer" * check, should keep things reasonable. @@ -4337,7 +4398,7 @@ */ static ssize_t -read_with_timeout(int fd, char *buf, size_t size) +read_with_timeout(int fd, void *buf, size_t size) { #if ! defined(VMS) fd_set readfds; diff -urN gawk-5.1.0/m4/ChangeLog gawk-5.1.1/m4/ChangeLog --- gawk-5.1.0/m4/ChangeLog 2020-04-14 14:42:52.000000000 +0300 +++ gawk-5.1.1/m4/ChangeLog 2021-10-27 07:54:05.000000000 +0300 @@ -1,3 +1,35 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-09-10 Arnold D. Robbins + + * mpfr.m4, readline.m4, threadlib.m4: Update for Autoconf 2.71. + Removes various warnings when Autoconf runs. + +2020-07-22 Arnold D. Robbins + + * fcntl-o.m4, glibc2.m4, glibc21.m4, intdiv0.m4, intldir.m4, + intmax.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lock.m4, + longlong.m4, printf-posix.m4, size_max.m4, stdint_h.m4, threadlib.m4, + uintmax_t.m4, visibility.m4, wchar_t.m4, wint_t.m4, + xsize.m4: Copyright updated. + * dirfd.m4, libtool.m4, ltoptions.m4, ltsugar.m4, ltversion.m4, + lt~obsolete.m4: New files, from extension/m4. + +2020-07-20 gettextize + + * gettext.m4: Upgrade to gettext-0.20.2. + * host-cpu-c-abi.m4: New file, from gettext-0.20.2. + * iconv.m4: Upgrade to gettext-0.20.2. + * intlmacosx.m4: Upgrade to gettext-0.20.2. + * lib-ld.m4: Upgrade to gettext-0.20.2. + * lib-link.m4: Upgrade to gettext-0.20.2. + * lib-prefix.m4: Upgrade to gettext-0.20.2. + * nls.m4: Upgrade to gettext-0.20.2. + * po.m4: Upgrade to gettext-0.20.2. + * progtest.m4: Upgrade to gettext-0.20.2. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/m4/dirfd.m4 gawk-5.1.1/m4/dirfd.m4 --- gawk-5.1.0/m4/dirfd.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/m4/dirfd.m4 2020-08-28 14:48:05.000000000 +0300 @@ -0,0 +1,84 @@ +# serial 22 -*- Autoconf -*- + +dnl Find out how to get the file descriptor associated with an open DIR*. + +# Copyright (C) 2001-2006, 2008-2013 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 Simplified for gawk + +AC_DEFUN([GAWK_FUNC_DIRFD], +[ +dnl AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) + + dnl Persuade glibc to declare dirfd(). + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + AC_CHECK_FUNCS([dirfd]) + AC_CHECK_DECLS([dirfd], , , + [[#include + #include ]]) + if test $ac_cv_have_decl_dirfd = no; then + HAVE_DECL_DIRFD=0 + fi + + AC_CACHE_CHECK([whether dirfd is a macro], + gl_cv_func_dirfd_macro, + [AC_EGREP_CPP([dirent_header_defines_dirfd], [ +#include +#include +#ifdef dirfd + dirent_header_defines_dirfd +#endif], + gl_cv_func_dirfd_macro=yes, + gl_cv_func_dirfd_macro=no)]) + + # Use the replacement only if we have no function or macro with that name. + if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then + if test $ac_cv_have_decl_dirfd = yes; then + # If the system declares dirfd already, let's declare rpl_dirfd instead. + REPLACE_DIRFD=1 + fi + fi +]) + +dnl Prerequisites of lib/dirfd.c. +AC_DEFUN([GAWK_PREREQ_DIRFD], +[ + AC_CACHE_CHECK([how to get the file descriptor associated with an open DIR*], + [gl_cv_sys_dir_fd_member_name], + [ + dirfd_save_CFLAGS=$CFLAGS + for ac_expr in d_fd dd_fd; do + + CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + #include ]], + [[DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;]])], + [dir_fd_found=yes] + ) + CFLAGS=$dirfd_save_CFLAGS + test "$dir_fd_found" = yes && break + done + test "$dir_fd_found" = yes || ac_expr=no_such_member + + gl_cv_sys_dir_fd_member_name=$ac_expr + ] + ) + if test $gl_cv_sys_dir_fd_member_name != no_such_member; then + AC_DEFINE_UNQUOTED([DIR_FD_MEMBER_NAME], + [$gl_cv_sys_dir_fd_member_name], + [the name of the file descriptor member of DIR]) + fi + AH_VERBATIM([DIR_TO_FD], + [#ifdef DIR_FD_MEMBER_NAME +# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) +#else +# define DIR_TO_FD(Dir_p) -1 +#endif +]) +]) diff -urN gawk-5.1.0/m4/fcntl-o.m4 gawk-5.1.1/m4/fcntl-o.m4 --- gawk-5.1.0/m4/fcntl-o.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/fcntl-o.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # fcntl-o.m4 serial 4 -dnl Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2006, 2009-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/gettext.m4 gawk-5.1.1/m4/gettext.m4 --- gawk-5.1.0/m4/gettext.m4 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/m4/gettext.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,15 +1,15 @@ -# gettext.m4 serial 68 (gettext-0.19.8) -dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. +# gettext.m4 serial 71 (gettext-0.20.2) +dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public +dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU +dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. @@ -20,15 +20,13 @@ dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl INTLSYMBOL must be one of 'external', 'use-libtool'. +dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and +dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. +dnl AM-DISABLE-SHARED). dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is @@ -57,19 +55,17 @@ AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) +])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], - [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. +])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], - ifelse([$1], [external], - ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), - [yes])) - define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + ifelse([$1], [external], [no], [yes])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) @@ -91,8 +87,7 @@ dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. + dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) @@ -278,8 +273,8 @@ dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi @@ -347,43 +342,14 @@ fi ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi + dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes' + dnl because some of the testsuite requires it. + BUILD_INCLUDED_LIBINTL=yes dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST([DATADIRNAME]) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST([INSTOBJEXT]) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST([GENCAT]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST([INTLOBJS]) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. diff -urN gawk-5.1.0/m4/glibc21.m4 gawk-5.1.1/m4/glibc21.m4 --- gawk-5.1.0/m4/glibc21.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/glibc21.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # glibc21.m4 serial 5 -dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation, +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2015 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff -urN gawk-5.1.0/m4/glibc2.m4 gawk-5.1.1/m4/glibc2.m4 --- gawk-5.1.0/m4/glibc2.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/glibc2.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # glibc2.m4 serial 3 -dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation, +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2015 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff -urN gawk-5.1.0/m4/host-cpu-c-abi.m4 gawk-5.1.1/m4/host-cpu-c-abi.m4 --- gawk-5.1.0/m4/host-cpu-c-abi.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/m4/host-cpu-c-abi.m4 2020-08-28 14:48:05.000000000 +0300 @@ -0,0 +1,675 @@ +# host-cpu-c-abi.m4 serial 13 +dnl Copyright (C) 2002-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible and Sam Steingold. + +dnl Sets the HOST_CPU variable to the canonical name of the CPU. +dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its +dnl C language ABI (application binary interface). +dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in +dnl config.h. +dnl +dnl This canonical name can be used to select a particular assembly language +dnl source file that will interoperate with C code on the given host. +dnl +dnl For example: +dnl * 'i386' and 'sparc' are different canonical names, because code for i386 +dnl will not run on SPARC CPUs and vice versa. They have different +dnl instruction sets. +dnl * 'sparc' and 'sparc64' are different canonical names, because code for +dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code +dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit +dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit +dnl mode, but not both. +dnl * 'mips' and 'mipsn32' are different canonical names, because they use +dnl different argument passing and return conventions for C functions, and +dnl although the instruction set of 'mips' is a large subset of the +dnl instruction set of 'mipsn32'. +dnl * 'mipsn32' and 'mips64' are different canonical names, because they use +dnl different sizes for the C types like 'int' and 'void *', and although +dnl the instruction sets of 'mipsn32' and 'mips64' are the same. +dnl * The same canonical name is used for different endiannesses. You can +dnl determine the endianness through preprocessor symbols: +dnl - 'arm': test __ARMEL__. +dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. +dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. +dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 +dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because +dnl - Instructions that do not exist on all of these CPUs (cmpxchg, +dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your +dnl assembly language source files use such instructions, you will +dnl need to make the distinction. +dnl - Speed of execution of the common instruction set is reasonable across +dnl the entire family of CPUs. If you have assembly language source files +dnl that are optimized for particular CPU types (like GNU gmp has), you +dnl will need to make the distinction. +dnl See . +AC_DEFUN([gl_HOST_CPU_C_ABI], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[34567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <. - m4_ifdef([gl_ICONV_H_DEFAULTS], - [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) - if test -n "$am_cv_proto_iconv_arg1"; then - ICONV_CONST="const" - fi - ]) + else + dnl When compiling GNU libiconv on a system that does not have iconv yet, + dnl pick the POSIX compliant declaration without 'const'. + am_cv_proto_iconv_arg1="" fi + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) ]) diff -urN gawk-5.1.0/m4/intdiv0.m4 gawk-5.1.1/m4/intdiv0.m4 --- gawk-5.1.0/m4/intdiv0.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/intdiv0.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # intdiv0.m4 serial 6 (gettext-0.18.2) -dnl Copyright (C) 2002, 2007-2008, 2010-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2007-2008, 2010-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/intldir.m4 gawk-5.1.1/m4/intldir.m4 --- gawk-5.1.0/m4/intldir.m4 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/m4/intldir.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,16 +1,16 @@ # intldir.m4 serial 2 (gettext-0.18) -dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc. +dnl Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. AC_PREREQ([2.52]) diff -urN gawk-5.1.0/m4/intlmacosx.m4 gawk-5.1.1/m4/intlmacosx.m4 --- gawk-5.1.0/m4/intlmacosx.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/intlmacosx.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,23 +1,23 @@ -# intlmacosx.m4 serial 5 (gettext-0.18.2) -dnl Copyright (C) 2004-2014 Free Software Foundation, Inc. +# intlmacosx.m4 serial 8 (gettext-0.20.2) +dnl Copyright (C) 2004-2014, 2016, 2019-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl by the GNU Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ - dnl Check for API introduced in Mac OS X 10.2. + dnl Check for API introduced in Mac OS X 10.4. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" @@ -33,23 +33,32 @@ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi - dnl Check for API introduced in Mac OS X 10.3. - AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent, + dnl because in macOS 10.13.4 it has the following behaviour: + dnl When two or more languages are specified in the + dnl "System Preferences > Language & Region > Preferred Languages" panel, + dnl it returns en_CC where CC is the territory (even when English is not among + dnl the preferred languages!). What we want instead is what + dnl CFLocaleCopyCurrent returned in earlier macOS releases and what + dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the + dnl first among the preferred languages and CC is the territory. + AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], - [[CFLocaleCopyCurrent();]])], - [gt_cv_func_CFLocaleCopyCurrent=yes], - [gt_cv_func_CFLocaleCopyCurrent=no]) + [[CFLocaleCopyPreferredLanguages();]])], + [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], + [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], - [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) diff -urN gawk-5.1.0/m4/intmax.m4 gawk-5.1.1/m4/intmax.m4 --- gawk-5.1.0/m4/intmax.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/intmax.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # intmax.m4 serial 6 (gettext-0.18.2) -dnl Copyright (C) 2002-2005, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2005, 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/inttypes_h.m4 gawk-5.1.1/m4/inttypes_h.m4 --- gawk-5.1.0/m4/inttypes_h.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/inttypes_h.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # inttypes_h.m4 serial 10 -dnl Copyright (C) 1997-2004, 2006, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 1997-2004, 2006, 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/inttypes-pri.m4 gawk-5.1.1/m4/inttypes-pri.m4 --- gawk-5.1.0/m4/inttypes-pri.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/inttypes-pri.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # inttypes-pri.m4 serial 7 (gettext-0.18.2) -dnl Copyright (C) 1997-2002, 2006, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 1997-2002, 2006, 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/lcmessage.m4 gawk-5.1.1/m4/lcmessage.m4 --- gawk-5.1.0/m4/lcmessage.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/lcmessage.m4 2020-08-28 14:48:05.000000000 +0300 @@ -5,13 +5,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff -urN gawk-5.1.0/m4/lib-ld.m4 gawk-5.1.1/m4/lib-ld.m4 --- gawk-5.1.0/m4/lib-ld.m4 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/m4/lib-ld.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ -# lib-ld.m4 serial 6 -dnl Copyright (C) 1996-2003, 2009-2016 Free Software Foundation, Inc. +# lib-ld.m4 serial 9 +dnl Copyright (C) 1996-2003, 2009-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -47,73 +47,122 @@ } fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. +if test -n "$LD"; then + AC_MSG_CHECKING([for ld]) +elif test "$GCC" = yes; then AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` - while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi -AC_CACHE_VAL([acl_cv_path_LD], -[if test -z "$LD"; then - acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$acl_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 &5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; esac fi - done - IFS="$acl_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 = 1.10 to complain if config.rpath is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + dnl Complain if config.rpath is missing. + AC_REQUIRE_AUX_FILE([config.rpath]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host @@ -187,17 +187,17 @@ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) - dnl Autoconf >= 2.61 supports dots in --with options. - pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ]) - AC_ARG_WITH(P_A_C_K[-prefix], -[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib - --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], + AC_ARG_WITH(PACK[-prefix], +[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no @@ -206,17 +206,23 @@ AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" fi fi ]) + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= @@ -272,48 +278,54 @@ shrext= fi if test $use_additional = yes; then - dir="$additional_libdir" - dnl The same code as in the loop below: - dnl First look for a shared library. - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" - found_so="$dir/$f" - break + found_a="$dir/$libname.$acl_libext" fi - done + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi fi fi - fi - dnl Then look for a static library. - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi + done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do @@ -323,7 +335,7 @@ dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else @@ -333,14 +345,14 @@ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do - if test -f "$dir/$f"; then + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break @@ -351,7 +363,7 @@ fi dnl Then look for a static library. if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi @@ -377,7 +389,8 @@ dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else @@ -477,6 +490,13 @@ fi additional_includedir="$basedir/include" ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. @@ -527,19 +547,21 @@ for dep in $dependency_libs; do case "$dep" in -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -550,29 +572,29 @@ haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + dnl Really add $dependency_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then + if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + if test -d "$dependency_libdir"; then + dnl Really add $dependency_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" fi fi fi @@ -670,7 +692,6 @@ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi - popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) @@ -721,7 +742,8 @@ dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then + && test "X$dir" != "X/usr/$acl_libdirstem2" \ + && test "X$dir" != "X/usr/$acl_libdirstem3"; then rpathdirs="$rpathdirs $dir" fi next= @@ -731,7 +753,8 @@ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then + && test "X$dir" != "X/usr/$acl_libdirstem2" \ + && test "X$dir" != "X/usr/$acl_libdirstem3"; then rpathdirs="$rpathdirs $dir" fi next= ;; diff -urN gawk-5.1.0/m4/lib-prefix.m4 gawk-5.1.1/m4/lib-prefix.m4 --- gawk-5.1.0/m4/lib-prefix.m4 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/m4/lib-prefix.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,18 +1,11 @@ -# lib-prefix.m4 serial 7 (gettext-0.18) -dnl Copyright (C) 2001-2005, 2008-2016 Free Software Foundation, Inc. +# lib-prefix.m4 serial 17 +dnl Copyright (C) 2001-2005, 2008-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed @@ -32,9 +25,9 @@ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], + AC_ARG_WITH([lib-prefix], +[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no @@ -154,71 +147,174 @@ ]) dnl AC_LIB_PREPARE_MULTILIB creates -dnl - a variable acl_libdirstem, containing the basename of the libdir, either -dnl "lib" or "lib64" or "lib/64", -dnl - a variable acl_libdirstem2, as a secondary possible value for -dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or -dnl "lib/amd64". +dnl - a function acl_is_expected_elfclass, that tests whether standard input +dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, +dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing +dnl the basename of the libdir to try in turn, either "lib" or "lib64" or +dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ - dnl There is no formal standard regarding lib and lib64. - dnl On glibc systems, the current practice is that on a system supporting + dnl There is no formal standard regarding lib, lib32, and lib64. + dnl On most glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under - dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine - dnl the compiler's default mode by looking at the compiler's library search - dnl path. If at least one of its elements ends in /lib64 or points to a - dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. - dnl Otherwise we use the default, namely "lib". + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on + dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go + dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. + dnl We determine the compiler's default mode by looking at the compiler's + dnl library search path. If at least one of its elements ends in /lib64 or + dnl points to a directory whose absolute pathname ends in /lib64, we use that + dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, + dnl namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment - dnl . - dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." - dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the - dnl symlink is missing, so we set acl_libdirstem2 too. - AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], - [AC_EGREP_CPP([sixtyfour bits], [ -#ifdef _LP64 -sixtyfour bits -#endif - ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) - ]) - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) + + AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], + [AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_elf=yes], + [gl_cv_elf=no]) + ]) + if test $gl_cv_elf; then + # Extract the ELF class of a file (5th byte) in decimal. + # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header + if od -A x < /dev/null >/dev/null 2>/dev/null; then + # Use POSIX od. + func_elfclass () + { + od -A n -t d1 -j 4 -N 1 + } + else + # Use BSD hexdump. + func_elfclass () + { + dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' + echo + } + fi +changequote(,)dnl + case $HOST_CPU_C_ABI_32BIT in + yes) + # 32-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 + } + ;; + no) + # 64-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 + } + ;; + *) + # Unknown. + acl_is_expected_elfclass () + { + : + } + ;; + esac +changequote([,])dnl + else + acl_is_expected_elfclass () + { + : + } + fi + + dnl Allow the user to override the result by setting acl_cv_libdirstems. + AC_CACHE_CHECK([for the common suffixes of directories in the library search path], + [acl_cv_libdirstems], + [dnl Try 'lib' first, because that's the default for libdir in GNU, see + dnl . + acl_libdirstem=lib + acl_libdirstem2= + acl_libdirstem3= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + if test $HOST_CPU_C_ABI_32BIT = no; then + acl_libdirstem2=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem3=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; + esac + fi + ;; + *) + dnl If $CC generates code for a 32-bit ABI, the libraries are + dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. + dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries + dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. + dnl Find the compiler's search path. However, non-system compilers + dnl sometimes have odd library search paths. But we can't simply invoke + dnl '/usr/bin/gcc -print-search-dirs' because that would not take into + dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. + searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test $HOST_CPU_C_ABI_32BIT != no; then + # 32-bit or unknown ABI. + if test -d /usr/lib32; then + acl_libdirstem2=lib32 + fi + fi + if test $HOST_CPU_C_ABI_32BIT != yes; then + # 64-bit or unknown ABI. + if test -d /usr/lib64; then + acl_libdirstem3=lib64 + fi + fi + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; + */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib32 ) acl_libdirstem2=lib32 ;; + */lib64 ) acl_libdirstem3=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + if test $HOST_CPU_C_ABI_32BIT = yes; then + # 32-bit ABI. + acl_libdirstem3= + fi + if test $HOST_CPU_C_ABI_32BIT = no; then + # 64-bit ABI. + acl_libdirstem2= + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" + ]) + dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and + dnl acl_libdirstem3. +changequote(,)dnl + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` + acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` +changequote([,])dnl ]) diff -urN gawk-5.1.0/m4/libtool.m4 gawk-5.1.1/m4/libtool.m4 --- gawk-5.1.0/m4/libtool.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/m4/libtool.m4 2020-08-28 14:48:05.000000000 +0300 @@ -0,0 +1,8387 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# 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. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | 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++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | 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 + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff -urN gawk-5.1.0/m4/lock.m4 gawk-5.1.1/m4/lock.m4 --- gawk-5.1.0/m4/lock.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/lock.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # lock.m4 serial 13 (gettext-0.18.2) -dnl Copyright (C) 2005-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/longlong.m4 gawk-5.1.1/m4/longlong.m4 --- gawk-5.1.0/m4/longlong.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/longlong.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # longlong.m4 serial 17 -dnl Copyright (C) 1999-2007, 2009-2014 Free Software Foundation, Inc. +dnl Copyright (C) 1999-2007, 2009-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/lt~obsolete.m4 gawk-5.1.1/m4/lt~obsolete.m4 --- gawk-5.1.0/m4/lt~obsolete.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/m4/lt~obsolete.m4 2020-08-28 14:48:05.000000000 +0300 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# 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. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff -urN gawk-5.1.0/m4/ltoptions.m4 gawk-5.1.1/m4/ltoptions.m4 --- gawk-5.1.0/m4/ltoptions.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/m4/ltoptions.m4 2020-08-28 14:48:05.000000000 +0300 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff -urN gawk-5.1.0/m4/ltsugar.m4 gawk-5.1.1/m4/ltsugar.m4 --- gawk-5.1.0/m4/ltsugar.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/m4/ltsugar.m4 2020-08-28 14:48:05.000000000 +0300 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff -urN gawk-5.1.0/m4/ltversion.m4 gawk-5.1.1/m4/ltversion.m4 --- gawk-5.1.0/m4/ltversion.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/m4/ltversion.m4 2020-08-28 14:48:05.000000000 +0300 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# 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. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff -urN gawk-5.1.0/m4/mpfr.m4 gawk-5.1.1/m4/mpfr.m4 --- gawk-5.1.0/m4/mpfr.m4 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/m4/mpfr.m4 2021-10-27 07:40:48.000000000 +0300 @@ -1,5 +1,5 @@ dnl Check for MPFR and dependencies -dnl Copyright (C) 2004, 2005 Free Software Foundation, Inc. +dnl Copyright (C) 2004, 2005, 2021 Free Software Foundation, Inc. dnl dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General @@ -13,7 +13,7 @@ AC_DEFUN([GNUPG_CHECK_MPFR], [ AC_ARG_WITH([mpfr], - AC_HELP_STRING([--with-mpfr=DIR], + AS_HELP_STRING([--with-mpfr=DIR], [look for the mpfr and gmp libraries in DIR]), [_do_mpfr=$withval],[_do_mpfr=yes]) @@ -27,7 +27,7 @@ _combo="-lmpfr -lgmp" LIBS="$LIBS $_combo" - AC_MSG_CHECKING([whether mpfr via \"$_combo\" is present and usable]) + AC_MSG_CHECKING([whether mpfr via "$_combo" is present and usable]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([ diff -urN gawk-5.1.0/m4/nls.m4 gawk-5.1.1/m4/nls.m4 --- gawk-5.1.0/m4/nls.m4 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/m4/nls.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,16 +1,16 @@ -# nls.m4 serial 5 (gettext-0.18) -dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software -dnl Foundation, Inc. +# nls.m4 serial 6 (gettext-0.20.2) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2020 Free +dnl Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public +dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU +dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. diff -urN gawk-5.1.0/m4/po.m4 gawk-5.1.1/m4/po.m4 --- gawk-5.1.0/m4/po.m4 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/m4/po.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,15 +1,15 @@ -# po.m4 serial 24 (gettext-0.19) -dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. +# po.m4 serial 31 (gettext-0.20.2) +dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public +dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU +dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. @@ -30,7 +30,7 @@ dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. - AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) + AC_SUBST([GETTEXT_MACRO_VERSION], [0.20]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. @@ -46,13 +46,6 @@ dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl - case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; - *) MSGFMT_015=$MSGFMT ;; - esac -changequote([,])dnl - AC_SUBST([MSGFMT_015]) -changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; @@ -83,11 +76,21 @@ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) - dnl Installation directories. - dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we - dnl have to define it here, so that it can be used in po/Makefile. - test -n "$localedir" || localedir='${datadir}/locale' - AC_SUBST([localedir]) + dnl Test whether it is GNU msgmerge >= 0.20. + if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' + else + dnl Test whether it is GNU msgmerge >= 0.12. + if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' + else + dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is + dnl slow. But this is not a big problem, as such old gettext versions are + dnl hardly in use any more. + MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' + fi + fi + AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= @@ -130,14 +133,11 @@ if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) @@ -208,9 +208,8 @@ esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake < 1.5. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. + OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) @@ -311,15 +310,13 @@ fi if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'` - ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` + ALL_LINGUAS=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` fi - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES @@ -329,9 +326,9 @@ # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) # Compute PROPERTIESFILES - # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties) + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).properties) # Compute CLASSFILES - # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class) + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).class) # Compute QMFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) # Compute MSGFILES @@ -356,8 +353,8 @@ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties" - CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" + PROPERTIESFILES="$PROPERTIESFILES \$(srcdir)/\$(DOMAIN)_$lang.properties" + CLASSFILES="$CLASSFILES \$(srcdir)/\$(DOMAIN)_$lang.class" QMFILES="$QMFILES $srcdirpre$lang.qm" frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" diff -urN gawk-5.1.0/m4/printf-posix.m4 gawk-5.1.1/m4/printf-posix.m4 --- gawk-5.1.0/m4/printf-posix.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/printf-posix.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # printf-posix.m4 serial 6 (gettext-0.18.2) -dnl Copyright (C) 2003, 2007, 2009-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2007, 2009-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/progtest.m4 gawk-5.1.1/m4/progtest.m4 --- gawk-5.1.0/m4/progtest.m4 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/m4/progtest.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,15 +1,15 @@ -# progtest.m4 serial 7 (gettext-0.18.2) -dnl Copyright (C) 1996-2003, 2005, 2008-2016 Free Software Foundation, Inc. +# progtest.m4 serial 8 (gettext-0.20.2) +dnl Copyright (C) 1996-2003, 2005, 2008-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public +dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU +dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. diff -urN gawk-5.1.0/m4/readline.m4 gawk-5.1.1/m4/readline.m4 --- gawk-5.1.0/m4/readline.m4 2020-02-06 22:52:56.000000000 +0200 +++ gawk-5.1.1/m4/readline.m4 2021-10-27 07:41:44.000000000 +0300 @@ -1,5 +1,5 @@ dnl Check for readline and dependencies -dnl Copyright (C) 2004, 2005, 2013, 2014 Free Software Foundation, Inc. +dnl Copyright (C) 2004, 2005, 2013, 2014, 2021, Free Software Foundation, Inc. dnl dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General @@ -19,7 +19,7 @@ AC_DEFUN([GAWK_CHECK_READLINE], [ AC_ARG_WITH([readline], - AC_HELP_STRING([--with-readline=DIR], + AS_HELP_STRING([--with-readline=DIR], [look for the readline library in DIR]), [_do_readline=$withval],[_do_readline=yes]) @@ -34,11 +34,11 @@ _combo="-lreadline${_termcap:+ $_termcap}" LIBS="$LIBS $_combo" - AC_MSG_CHECKING([whether readline via \"$_combo\" is present and sane]) + AC_MSG_CHECKING([whether readline via "$_combo" is present and sane]) - AC_TRY_RUN( + AC_RUN_IFELSE( dnl source program: -AC_LANG_SOURCE([[#include +[AC_LANG_SOURCE([[#include #include #include #include @@ -58,17 +58,18 @@ /* some printfs don't handle NULL for %s */ printf("got <%s>\n", line ? line : "(NULL)"); return 0; -}]]), +}]])], dnl action if true: [_found_readline=yes], dnl action if false: [_found_readline=no], dnl action if cross compiling: - AC_TRY_LINK([#include + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include #include -#include ], dnl includes +#include ]], dnl includes dnl function body - [ + [[ int fd; char *line; @@ -80,12 +81,12 @@ /* some printfs don't handle NULL for %s */ printf("got <%s>\n", line ? line : "(NULL)"); -], +]])], dnl action if found: [_found_readline=yes], dnl action if not found: [_found_readline=no] - ) + )] ) AC_MSG_RESULT([$_found_readline]) diff -urN gawk-5.1.0/m4/size_max.m4 gawk-5.1.1/m4/size_max.m4 --- gawk-5.1.0/m4/size_max.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/size_max.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # size_max.m4 serial 10 -dnl Copyright (C) 2003, 2005-2006, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2005-2006, 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/stdint_h.m4 gawk-5.1.1/m4/stdint_h.m4 --- gawk-5.1.0/m4/stdint_h.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/stdint_h.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # stdint_h.m4 serial 9 -dnl Copyright (C) 1997-2004, 2006, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 1997-2004, 2006, 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/threadlib.m4 gawk-5.1.1/m4/threadlib.m4 --- gawk-5.1.0/m4/threadlib.m4 2020-02-06 22:52:56.000000000 +0200 +++ gawk-5.1.1/m4/threadlib.m4 2021-09-15 14:56:12.000000000 +0300 @@ -1,5 +1,5 @@ # threadlib.m4 serial 11 (gettext-0.18.2) -dnl Copyright (C) 2005-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -53,8 +53,8 @@ [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) AC_ARG_ENABLE([threads], -AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ -AC_HELP_STRING([--disable-threads], [build without multithread safety])]), +AS_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AS_HELP_STRING([--disable-threads], [build without multithread safety])]), [gl_use_threads=$enableval], [if test -n "$gl_use_threads_default"; then gl_use_threads="$gl_use_threads_default" @@ -68,7 +68,7 @@ dnl bugs that lead to endless loops or crashes. See dnl . osf*) gl_use_threads=no ;; - cygwin* | msys*) + cygwin*) case `uname -r` in 1.[0-5].*) gl_use_threads=no ;; *) gl_use_threads=yes ;; diff -urN gawk-5.1.0/m4/uintmax_t.m4 gawk-5.1.1/m4/uintmax_t.m4 --- gawk-5.1.0/m4/uintmax_t.m4 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/m4/uintmax_t.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # uintmax_t.m4 serial 12 -dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc. +dnl Copyright (C) 1997-2004, 2007-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/visibility.m4 gawk-5.1.1/m4/visibility.m4 --- gawk-5.1.0/m4/visibility.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/visibility.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # visibility.m4 serial 5 (gettext-0.18.2) -dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2008, 2010-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/wchar_t.m4 gawk-5.1.1/m4/wchar_t.m4 --- gawk-5.1.0/m4/wchar_t.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/wchar_t.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # wchar_t.m4 serial 4 (gettext-0.18.2) -dnl Copyright (C) 2002-2003, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2003, 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/wint_t.m4 gawk-5.1.1/m4/wint_t.m4 --- gawk-5.1.0/m4/wint_t.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/wint_t.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # wint_t.m4 serial 5 (gettext-0.18.2) -dnl Copyright (C) 2003, 2007-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2007-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/m4/xsize.m4 gawk-5.1.1/m4/xsize.m4 --- gawk-5.1.0/m4/xsize.m4 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/m4/xsize.m4 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,5 @@ # xsize.m4 serial 5 -dnl Copyright (C) 2003-2004, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2004, 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff -urN gawk-5.1.0/main.c gawk-5.1.1/main.c --- gawk-5.1.0/main.c 2020-03-15 15:32:23.000000000 +0200 +++ gawk-5.1.1/main.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2020, + * Copyright (C) 1986, 1988, 1989, 1991-2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -25,7 +25,7 @@ */ /* FIX THIS BEFORE EVERY RELEASE: */ -#define UPDATE_YEAR 2020 +#define UPDATE_YEAR 2021 #include "awk.h" #include "getopt.h" @@ -96,7 +96,7 @@ * set_CONVFMT -> fmt_index -> force_string: gets NULL CONVFMT * Fun, fun, fun, fun. */ -char *CONVFMT = "%.6g"; +const char *CONVFMT = "%.6g"; NODE *Nnull_string; /* The global null string */ @@ -145,13 +145,14 @@ static void set_locale_stuff(void); static bool stopped_early = false; -int do_flags = false; +enum do_flag_values do_flags = DO_FLAG_NONE; +bool do_itrace = false; /* provide simple instruction trace */ bool do_optimize = true; /* apply default optimizations */ static int do_nostalgia = false; /* provide a blast from the past */ static int do_binary = false; /* hands off my data! */ static int do_version = false; /* print version info */ static const char *locale = ""; /* default value to setlocale */ -static char *locale_dir = LOCALEDIR; /* default locale dir */ +static const char *locale_dir = LOCALEDIR; /* default locale dir */ int use_lc_numeric = false; /* obey locale for decimal point */ @@ -205,6 +206,7 @@ { "re-interval", no_argument, NULL, 'r' }, { "sandbox", no_argument, NULL, 'S' }, { "source", required_argument, NULL, 'e' }, + { "trace", no_argument, NULL, 'I' }, { "traditional", no_argument, NULL, 'c' }, { "use-lc-numeric", no_argument, & use_lc_numeric, 1 }, { "version", no_argument, & do_version, 'V' }, @@ -218,7 +220,7 @@ { int i; char *extra_stack; - int have_srcfile = 0; + bool have_srcfile = false; SRCFILE *s; char *cp; #if defined(LOCALEDEBUG) @@ -357,11 +359,12 @@ if (do_binary) { if (do_posix) warning(_("`--posix' overrides `--characters-as-bytes'")); - else + else { gawk_mb_cur_max = 1; /* hands off my data! */ #if defined(LC_ALL) - setlocale(LC_ALL, "C"); + setlocale(LC_ALL, "C"); #endif + } } if (do_lint && os_is_setuid()) @@ -440,7 +443,7 @@ if (s->stype == SRC_EXTLIB) load_ext(s->fullpath); else if (s->stype != SRC_INC) - have_srcfile++; + have_srcfile = true; } /* do version check after extensions are loaded to get extension info */ @@ -601,6 +604,7 @@ fputs(_("\t-g\t\t\t--gen-pot\n"), fp); fputs(_("\t-h\t\t\t--help\n"), fp); fputs(_("\t-i includefile\t\t--include=includefile\n"), fp); + fputs(_("\t-I\t\t\t--trace\n"), fp); fputs(_("\t-l library\t\t--load=library\n"), fp); /* * TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal @@ -1199,6 +1203,7 @@ cp2 = cp + strlen(cp) - 1; // end char if (! do_traditional + && strlen(cp) >= 3 // '@/' doesn't do it. && cp[0] == '@' && cp[1] == '/' && *cp2 == '/') { // typed regex size_t len = strlen(cp) - 3; @@ -1519,7 +1524,7 @@ /* * The + on the front tells GNU getopt not to rearrange argv. */ - const char *optlist = "+F:f:v:W;bcCd::D::e:E:ghi:l:L::nNo::Op::MPrSstVYZ:"; + const char *optlist = "+F:f:v:W;bcCd::D::e:E:ghi:Il:L::nNo::Op::MPrSstVYZ:"; int old_optind; int c; char *scan; @@ -1614,6 +1619,10 @@ (void) add_srcfile(SRC_INC, optarg, srcfiles, NULL, NULL); break; + case 'I': + do_itrace = true; + break; + case 'l': (void) add_srcfile(SRC_EXTLIB, optarg, srcfiles, NULL, NULL); break; diff -urN gawk-5.1.0/Makefile.am gawk-5.1.1/Makefile.am --- gawk-5.1.0/Makefile.am 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/Makefile.am 2021-10-27 07:26:30.000000000 +0300 @@ -1,7 +1,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2020 the Free Software Foundation, Inc. +# Copyright (C) 2000-2021 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -42,18 +42,12 @@ NEWS.1 \ POSIX.STD \ README_d \ - config.guess \ - config.rpath \ - config.sub \ - depcomp \ m4 \ - missing \ missing_d \ po/README \ pc \ posix \ - vms \ - ylwrap + vms # The order to do things in. # diff -urN gawk-5.1.0/Makefile.in gawk-5.1.1/Makefile.in --- gawk-5.1.0/Makefile.in 2020-04-14 14:44:52.000000000 +0300 +++ gawk-5.1.1/Makefile.in 2021-10-28 19:48:29.000000000 +0300 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -17,7 +17,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2020 the Free Software Foundation, Inc. +# Copyright (C) 2000-2021 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -121,14 +121,14 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libsigsegv.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \ - $(top_srcdir)/m4/socket.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \ $(top_srcdir)/m4/triplet-transformation.m4 \ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -137,7 +137,7 @@ $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @@ -171,7 +171,7 @@ am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/array.Po ./$(DEPDIR)/awkgram.Po \ ./$(DEPDIR)/builtin.Po ./$(DEPDIR)/cint_array.Po \ @@ -204,7 +204,7 @@ am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) am__v_YACC_0 = @echo " YACC " $@; am__v_YACC_1 = -YLWRAP = $(top_srcdir)/ylwrap +YLWRAP = $(top_srcdir)/build-aux/ylwrap SOURCES = $(gawk_SOURCES) DIST_SOURCES = $(gawk_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ @@ -274,14 +274,21 @@ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope DIST_SUBDIRS = support . extension extras doc awklib po test -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/configh.in ABOUT-NLS \ - AUTHORS COPYING ChangeLog INSTALL NEWS README TODO awkgram.c \ - command.c compile config.guess config.rpath config.sub depcomp \ - install-sh missing mkinstalldirs ylwrap +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/configh.in \ + $(top_srcdir)/build-aux/ar-lib $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.rpath \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/missing $(top_srcdir)/build-aux/ylwrap \ + ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \ + awkgram.c build-aux/ChangeLog build-aux/ar-lib \ + build-aux/compile build-aux/config.guess \ + build-aux/config.rpath build-aux/config.sub build-aux/depcomp \ + build-aux/install-sh build-aux/ltmain.sh build-aux/missing \ + build-aux/texinfo.tex build-aux/ylwrap command.c mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -320,6 +327,8 @@ DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.lz $(distdir).tar.xz GZIP_ENV = --best DIST_TARGETS = dist-lzip dist-xz dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -330,6 +339,7 @@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -339,6 +349,8 @@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = -DDEFPATH=$(DEFPATH) -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"$(datadir)/locale"' -I"$(srcdir)/support" DEPDIR = @DEPDIR@ @@ -346,6 +358,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GAWKLIBEXT = @GAWKLIBEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ @@ -377,8 +390,8 @@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -407,6 +420,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ acl_shlibext = @acl_shlibext@ am__include = @am__include@ @@ -476,18 +490,12 @@ NEWS.1 \ POSIX.STD \ README_d \ - config.guess \ - config.rpath \ - config.sub \ - depcomp \ m4 \ - missing \ missing_d \ po/README \ pc \ posix \ - vms \ - ylwrap + vms # The order to do things in. @@ -700,15 +708,17 @@ am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @@ -842,7 +852,6 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -990,7 +999,7 @@ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ @@ -1053,7 +1062,8 @@ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive -install-exec: install-exec-recursive +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive @@ -1206,7 +1216,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS .MAKE: $(am__recursive_targets) all check check-am install install-am \ - install-exec-am install-strip + install-exec install-exec-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles am--refresh check check-am check-local clean \ diff -urN gawk-5.1.0/missing_d/ChangeLog gawk-5.1.1/missing_d/ChangeLog --- gawk-5.1.0/missing_d/ChangeLog 2020-04-14 14:42:36.000000000 +0300 +++ gawk-5.1.1/missing_d/ChangeLog 2021-10-27 07:53:57.000000000 +0300 @@ -1,3 +1,13 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2020-06-10 Arnold D. Robbins + + Miscellanious fixes from Michael Builov . + + * fnmatch.c (internal_fnmatch): Misc small fixes. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/missing_d/fnmatch.c gawk-5.1.1/missing_d/fnmatch.c --- gawk-5.1.0/missing_d/fnmatch.c 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/missing_d/fnmatch.c 2021-10-27 07:42:45.000000000 +0300 @@ -1,5 +1,5 @@ -/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software -Foundation, Inc. +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2021, +Free Software Foundation, Inc. This file is part of the GNU C Library. This library is free software; you can redistribute it and/or @@ -329,6 +329,8 @@ if (c == fn) goto matched; + + c = *p++; } else if (c == '[' && *p == ':') { @@ -353,7 +355,7 @@ p += 2; break; } - if (c < 'a' || c >= 'z') + if (c < 'a' || c > 'z') { /* This cannot possibly be a character class name. Match it as a normal range. */ @@ -388,6 +390,7 @@ || (STREQ (str, "xdigit") && ISXDIGIT ((unsigned char) *n))) goto matched; # endif + c = *p++; } else if (c == '\0') /* [ (unterminated) loses. */ @@ -398,7 +401,7 @@ if (FOLD (c) == fn) goto matched; - cold = c; + cold = FOLD(c); c = *p++; if (c == '-' && *p != ']') diff -urN gawk-5.1.0/mpfr.c gawk-5.1.1/mpfr.c --- gawk-5.1.0/mpfr.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/mpfr.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013, 2015, 2017, 2018, 2019, + * Copyright (C) 2012, 2013, 2015, 2017, 2018, 2019, 2021 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -176,7 +176,7 @@ case '8': case '9': if (base == 8) - goto done; + base = 10; break; case 'a': case 'b': @@ -247,7 +247,7 @@ /* mpg_zero --- initialize with arbitrary-precision integer(GMP) and set value to zero */ -static inline void +void mpg_zero(NODE *n) { if (is_mpg_float(n)) { @@ -271,7 +271,7 @@ char save; int tval, base = 10; - if (n->stlen == 0) { + if (n->stlen == 0 || (n->flags & REGEX) != 0) { mpg_zero(n); return false; } @@ -293,6 +293,17 @@ else cp1 = cp; + /* + * Maybe "+" or "-" was the field. mpg_strtoui + * won't check for that and set errno, so we have + * to check manually. + */ + if (*cp1 == '\0') { + *cpend = save; + mpg_zero(n); + return false; + } + if (do_nondec) base = get_numbase(cp1, cpend - cp1, use_locale); @@ -317,6 +328,8 @@ errno = 0; tval = mpfr_strtofr(n->mpg_numbr, cp, & ptr, base, ROUND_MODE); + if (mpfr_nan_p(n->mpg_numbr) && *cp == '-') + tval = mpfr_setsign(n->mpg_numbr, n->mpg_numbr, 1, ROUND_MODE); IEEE_FMT(n->mpg_numbr, tval); done: /* trailing space is OK for NUMBER */ @@ -334,10 +347,47 @@ static NODE * mpg_force_number(NODE *n) { + char *cp, *cpend; + if ((n->flags & NUMCUR) != 0) return n; n->flags |= NUMCUR; + /* Trim leading white space, bailing out if there's nothing else */ + for (cp = n->stptr, cpend = cp + n->stlen; + cp < cpend && isspace((unsigned char) *cp); cp++) + continue; + + if (cp == cpend) + goto badnum; + + /* At this point, we know the string is not entirely white space */ + /* Trim trailing white space */ + while (isspace((unsigned char) cpend[-1])) + cpend--; + + /* + * 2/2007: + * POSIX, by way of severe language lawyering, seems to + * allow things like "inf" and "nan" to mean something. + * So if do_posix, the user gets what he deserves. + * This also allows hexadecimal floating point. Ugh. + */ + if (! do_posix) { + if (is_alpha((unsigned char) *cp)) + goto badnum; + else if (is_ieee_magic_val(cp)) { + if (cpend != cp + 4) + goto badnum; + /* else + fall through */ + } + /* else + fall through */ + } + /* else POSIX, so + fall through */ + if (force_mpnum(n, (do_non_decimal_data && ! do_traditional), true)) { if ((n->flags & USER_INPUT) != 0) { /* leave USER_INPUT set to indicate a strnum */ @@ -347,6 +397,10 @@ } else n->flags &= ~USER_INPUT; return n; +badnum: + mpg_zero(n); + n->flags &= ~USER_INPUT; + return n; } /* mpg_format_val --- format a numeric value based on format */ @@ -585,7 +639,7 @@ default: break; } - return -1; + return (mpfr_rnd_t) -1; } /* @@ -597,7 +651,7 @@ set_ROUNDMODE() { if (do_mpfr) { - mpfr_rnd_t rndm = -1; + mpfr_rnd_t rndm = (mpfr_rnd_t) -1; NODE *n; n = force_string(ROUNDMODE_node->var_value); if (n->stlen == 1) @@ -607,7 +661,7 @@ ROUND_MODE = rndm; MPFR_round_mode = n->stptr[0]; } else - warning(_("RNDMODE value `%.*s' is invalid"), (int) n->stlen, n->stptr); + warning(_("ROUNDMODE value `%.*s' is invalid"), (int) n->stlen, n->stptr); } } @@ -694,8 +748,8 @@ static inline NODE * do_mpfr_func(const char *name, - int (*mpfr_func)(), /* putting argument types just gets the compiler confused */ - int nargs) + int (*mpfr_func)(mpfr_ptr, mpfr_srcptr, mpfr_rnd_t), + int nargs, bool warn_negative) { NODE *t1, *res; mpfr_ptr p1; @@ -708,6 +762,10 @@ force_number(t1); p1 = MP_FLOAT(t1); + if (warn_negative && mpfr_sgn(p1) < 0) { + force_string(t1); + warning(_("%s: received negative argument %.*s"), name, (int) t1->stlen, t1->stptr); + } res = mpg_float(); if ((argprec = mpfr_get_prec(p1)) > default_prec) mpfr_set_prec(res->mpg_numbr, argprec); /* needed at least for sqrt() */ @@ -717,9 +775,9 @@ return res; } -#define SPEC_MATH(X) \ +#define SPEC_MATH(X, WN) \ NODE *result; \ -result = do_mpfr_func(#X, mpfr_##X, nargs); \ +result = do_mpfr_func(#X, mpfr_##X, nargs, WN); \ return result /* do_mpfr_sin --- do the sin function */ @@ -727,7 +785,7 @@ NODE * do_mpfr_sin(int nargs) { - SPEC_MATH(sin); + SPEC_MATH(sin, false); } /* do_mpfr_cos --- do the cos function */ @@ -735,7 +793,7 @@ NODE * do_mpfr_cos(int nargs) { - SPEC_MATH(cos); + SPEC_MATH(cos, false); } /* do_mpfr_exp --- exponential function */ @@ -743,7 +801,7 @@ NODE * do_mpfr_exp(int nargs) { - SPEC_MATH(exp); + SPEC_MATH(exp, false); } /* do_mpfr_log --- the log function */ @@ -751,7 +809,7 @@ NODE * do_mpfr_log(int nargs) { - SPEC_MATH(log); + SPEC_MATH(log, true); } /* do_mpfr_sqrt --- do the sqrt function */ @@ -759,7 +817,7 @@ NODE * do_mpfr_sqrt(int nargs) { - SPEC_MATH(sqrt); + SPEC_MATH(sqrt, true); } /* do_mpfr_int --- convert double to int for awk */ @@ -1451,6 +1509,8 @@ mpfr_ptr p1, p2; p1 = MP_FLOAT(t1); p2 = MP_FLOAT(t2); + if (mpfr_zero_p(p2)) + fatal(_("division by zero attempted")); r = mpg_float(); tval = mpfr_div(r->mpg_numbr, p1, p2, ROUND_MODE); IEEE_FMT(r->mpg_numbr, tval); @@ -1484,6 +1544,8 @@ */ NODE *dummy_quotient; + if (mpz_sgn(t2->mpg_i) == 0) + fatal(_("division by zero attempted")); r = mpg_integer(); dummy_quotient = mpg_integer(); mpz_tdiv_qr(dummy_quotient->mpg_i, r->mpg_i, t1->mpg_i, t2->mpg_i); @@ -1492,6 +1554,8 @@ mpfr_ptr p1, p2; p1 = MP_FLOAT(t1); p2 = MP_FLOAT(t2); + if (mpfr_zero_p(p2)) + fatal(_("division by zero attempted in `%%'")); r = mpg_float(); tval = mpfr_fmod(r->mpg_numbr, p1, p2, ROUND_MODE); IEEE_FMT(r->mpg_numbr, tval); @@ -1514,7 +1578,42 @@ NODE **lhs; int tval; /* the ternary value returned by a MPFR function */ - switch ((op = pc->opcode)) { + op = pc->opcode; + if (do_itrace) { + switch (op) { + case Op_plus_i: + case Op_plus: + case Op_minus_i: + case Op_minus: + case Op_times_i: + case Op_times: + case Op_exp_i: + case Op_exp: + case Op_quotient_i: + case Op_quotient: + case Op_mod_i: + case Op_mod: + case Op_preincrement: + case Op_predecrement: + case Op_postincrement: + case Op_postdecrement: + case Op_unary_minus: + case Op_unary_plus: + case Op_assign_plus: + case Op_assign_minus: + case Op_assign_times: + case Op_assign_quotient: + case Op_assign_mod: + case Op_assign_exp: + fprintf(stderr, "++ %s: mpg_interpret\n", opcode2str(op)); + fflush(stderr); + break; + default: + return true; /* unhandled */ + } + } + + switch (op) { case Op_plus_i: t2 = force_number(pc->memory); goto plus; diff -urN gawk-5.1.0/msg.c gawk-5.1.1/msg.c --- gawk-5.1.0/msg.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/msg.c 2021-10-27 07:43:56.000000000 +0300 @@ -4,6 +4,7 @@ /* * Copyright (C) 1986, 1988, 1989, 1991-2001, 2003, 2010-2013, 2017-2019, + * 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -78,7 +79,7 @@ } #ifdef HAVE_MPFR - if (FNR_node && is_mpg_number(FNR_node->var_value)) { + if (FNR_node && FNR_node->var_value && is_mpg_number(FNR_node->var_value)) { NODE *val; val = mpg_update_var(FNR_node); assert((val->flags & MPZN) != 0); @@ -106,14 +107,9 @@ (void) fprintf(stderr, "\n"); (void) fflush(stderr); - if (isfatal) { -#ifdef GAWKDEBUG - // GLIBC 2.27 doesn't necessarily flush on abort. Sigh. - fflush(NULL); - abort(); -#endif + if (isfatal) gawk_exit(EXIT_FATAL); - } + } /* msg --- take a varargs error message and print it */ diff -urN gawk-5.1.0/NEWS gawk-5.1.1/NEWS --- gawk-5.1.0/NEWS 2020-04-10 15:25:02.000000000 +0300 +++ gawk-5.1.1/NEWS 2021-10-27 07:26:17.000000000 +0300 @@ -1,9 +1,72 @@ - Copyright (C) 2019, 2020 Free Software Foundation, Inc. + Copyright (C) 2019, 2020, 2021 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. +Changes from 5.1.0 to 5.1.1 +--------------------------- + +1. Infrastructure upgrades: Bison 3.8, Gettext 0.20.2, Automake 1.16.4, + and (will wonders never cease) Autoconf 2.71. + +2. asort and asorti now allow FUNCTAB and SYMTAB as the first argument if a + second destination array is supplied. Similarly, using either array as + the second argument is now a fatal error. Additionally, using either + array as the destination for split(), match(), etc. also causes a + fatal error. + +3. The new -I/--trace option prints a trace of the byte codes as they + are executed. + +4. A number of subtle bugs relating to MPFR mode that caused differences + between regular operation and MPFR mode have been fixed. + +5. The API now handles MPFR/GMP values slightly differently, requiring + different memory management for those values. See the manual for the + details if you have an extension using those values. As a result, + the minor version was incremented. + +6. $0 and the fields are now cleared before starting a BEGINFILE rule. + +7. The duplication of m4 and build-aux directories between the main + directory and the extension directory has been removed. This + simplifies the distribution. + +8. The test suite has been improved, making it easier to run the entire + suite with -M. Use `GAWK_TEST_ARGS=-M make check' to do so. + +9. Profiling and pretty-printing output has been modified slightly so + that functions are presented in a reasonable order with respect + to the namespaces that contain them. + +10. Several example programs in the manual have been updated to their + modern POSIX equivalents. + +11. A number of examples in doc/gawkinet.texi have been updated for + current times. Thanks to Juergen Kahrs for the work. + +12. Handling of Infinity and NaN values has been improved. + +13. There has been a general tightening up of the use of const and + of types. + +14. The "no effect" lint warnings have been fixed up and now behave + more sanely. + +15. The manual has been updated with much more information about what is + and is not a bug, and the changes in the gawk mailing lists. + +16. The behavior of strongly-typed regexp constants when passed as the + third argument to sub() or gsub() has been clarified in the code and + in the manual. + +17. Similar to item #4 above, division by zero is now fatal in MPFR + mode, as it is in regular mode. + +18. There have been numerous minor code cleanups and bug fixes. See the + ChangeLog for details. + Changes from 5.0.1 to 5.1.0 --------------------------- diff -urN gawk-5.1.0/node.c gawk-5.1.1/node.c --- gawk-5.1.0/node.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/node.c 2021-10-25 19:18:13.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2001, 2003-2015, 2017, 2018, 2019, + * Copyright (C) 1986, 1988, 1989, 1991-2001, 2003-2015, 2017-2019, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -25,10 +25,8 @@ */ #include "awk.h" -#include "math.h" #include "floatmagic.h" /* definition of isnan */ -static int is_ieee_magic_val(const char *val); static NODE *r_make_number(double x); static AWKNUM get_ieee_magic_val(char *val); extern NODE **fmt_list; /* declared in eval.c */ @@ -62,7 +60,6 @@ char *cpend; char save; char *ptr; - extern double strtod(); if ((n->flags & NUMCUR) != 0) return n; @@ -101,9 +98,12 @@ if (! do_posix) { if (is_alpha((unsigned char) *cp)) goto badnum; - else if (cpend == cp+4 && is_ieee_magic_val(cp)) { - n->numbr = get_ieee_magic_val(cp); - goto goodnum; + else if (is_ieee_magic_val(cp)) { + if (cpend == cp + 4) { + n->numbr = get_ieee_magic_val(cp); + goto goodnum; + } else + goto badnum; } /* else fall through */ @@ -165,6 +165,9 @@ return n; goodnum: + if (isnan(n->numbr) && *cp == '-' && signbit(n->numbr) == 0) + n->numbr = -(n->numbr); + if ((n->flags & USER_INPUT) != 0) { /* leave USER_INPUT enabled to indicate that this is a strnum */ n->flags &= ~STRING; @@ -304,27 +307,23 @@ assert(n->type == Node_val); #ifdef GAWKDEBUG + /* Do the same as in awk.h:dupnode(). */ if ((n->flags & MALLOC) != 0) { n->valref++; return n; } #endif + getnode(r); + *r = *n; #ifdef HAVE_MPFR if ((n->flags & MPZN) != 0) { - r = mpg_integer(); + mpz_init(r->mpg_i); mpz_set(r->mpg_i, n->mpg_i); - r->flags = n->flags; } else if ((n->flags & MPFN) != 0) { - r = mpg_float(); + mpfr_init(r->mpg_numbr); int tval = mpfr_set(r->mpg_numbr, n->mpg_numbr, ROUND_MODE); IEEE_FMT(r->mpg_numbr, tval); - r->flags = n->flags; - } else { -#endif - getnode(r); - *r = *n; -#ifdef HAVE_MPFR } #endif @@ -342,6 +341,7 @@ emalloc(r->stptr, char *, n->stlen + 1, "r_dupnode"); memcpy(r->stptr, n->stptr, n->stlen); r->stptr[n->stlen] = '\0'; + r->stlen = n->stlen; if ((n->flags & WSTRCUR) != 0) { r->wstlen = n->wstlen; emalloc(r->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 1), "r_dupnode"); @@ -482,6 +482,11 @@ n2 = make_string(re, len); n2->typed_re = n; +#if HAVE_MPFR + if (do_mpfr) + mpg_zero(n2); + else +#endif n2->numbr = 0; n2->flags |= NUMCUR|STRCUR|REGEX; n2->flags &= ~(STRING|NUMBER); @@ -496,20 +501,14 @@ r_unref(NODE *tmp) { #ifdef GAWKDEBUG - if (tmp == NULL) + /* Do the same as in awk.h:unref(). */ + assert(tmp == NULL || tmp->valref > 0); + if (tmp == NULL || --tmp->valref > 0) return; - if ((tmp->flags & MALLOC) != 0) { - if (tmp->valref > 1) { - tmp->valref--; - return; - } - if ((tmp->flags & STRCUR) != 0) - efree(tmp->stptr); - } -#else +#endif + if ((tmp->flags & (MALLOC|STRCUR)) == (MALLOC|STRCUR)) efree(tmp->stptr); -#endif mpfr_unset(tmp); @@ -615,7 +614,7 @@ start = *string_ptr; for (i = j = 0; j < 2; j++) { /* do outside test to avoid multiple side effects */ - c = *(*string_ptr)++; + c = (unsigned char) *(*string_ptr)++; if (isxdigit(c)) { i *= 16; if (isdigit(c)) @@ -629,8 +628,8 @@ break; } } - if (do_lint && j > 2) - lintwarn(_("hex escape \\x%.*s of %d characters probably not interpreted the way you expect"), j, start, j); + if (do_lint && j == 2 && isxdigit((unsigned char)*(*string_ptr))) + lintwarn(_("hex escape \\x%.*s of %d characters probably not interpreted the way you expect"), 3, start, 3); return i; case '\\': case '"': @@ -781,7 +780,7 @@ /* Warn the user something's wrong */ if (! warned) { warned = true; - warning(_("Invalid multibyte data detected. There may be a mismatch between your data and your locale.")); + warning(_("Invalid multibyte data detected. There may be a mismatch between your data and your locale")); } /* @@ -963,7 +962,7 @@ /* is_ieee_magic_val --- return true for +inf, -inf, +nan, -nan */ -static int +bool is_ieee_magic_val(const char *val) { /* @@ -1018,7 +1017,7 @@ { int i; - for (i = 0; i < 255; i++) { + for (i = 0; i <= 255; i++) { btowc_cache[i] = btowc(i); } } @@ -1028,10 +1027,6 @@ struct block_header nextfree[BLOCK_MAX] = { { NULL, sizeof(NODE), "node" }, { NULL, sizeof(BUCKET), "bucket" }, -#ifdef HAVE_MPFR - { NULL, sizeof(mpfr_t), "mpfr" }, - { NULL, sizeof(mpz_t), "mpz" }, -#endif }; #ifdef MEMDEBUG diff -urN gawk-5.1.0/pc/ChangeLog gawk-5.1.1/pc/ChangeLog --- gawk-5.1.0/pc/ChangeLog 2020-04-14 14:42:47.000000000 +0300 +++ gawk-5.1.1/pc/ChangeLog 2021-10-27 07:54:01.000000000 +0300 @@ -1,3 +1,144 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-20 Arnold D. Robbins + + * Makefile.tst: Regenerated. + +2021-10-13 Arnold D. Robbins + + * Makefile.tst: Regenerated. + +2021-09-17 Arnold D. Robbins + + * Makefile.tst: Regenerated. + +2021-09-06 Arnold D. Robbins + + * Makefile.tst: Regenerated. + +2021-05-15 Eli Zaretskii + + * Makefile (DEFPATH): New variable, like in Makefile.am. + (CFLAGS): Include -DDEFPATH=$(DEFPATH). + +2021-05-13 Arnold D. Robbins + + * Makefile.tst: Regenerated. + +2021-05-12 Arnold D. Robbins + + * GenMakefileTst.awk: Fix the test for the @echo line. + * Makefile.tst: Regenerated. + +2021-05-10 Arnold D. Robbins + + * GenMakefileTst.awk: Use ~ to match @echo line instead of ==, + gets things more right. Thanks to Manuel Collado for the + suggestion. + * Makefile.tst: Regenerated. + * Makefile (DYNOBJS): Add dynarray_at_failure$O and + dynarray_resize_clear$O. + +2021-05-09 Eli Zaretskii + + * Makefile.tst (testext): Use $(CMP), not a literal "cmp", so that + end-of-line differences could be ignored on MS-DOS/Windows. + (argcasfile): Use ' /no/such/file', with a leading space, to avoid + MinGW thinking it's a file name, and converting it to C:\foo\bar. + test/argcasfile.ok adjusted accordingly. + + * Makefile (VPATH): Adapt to addition of support/malloc + directory. + (DYNOBJS): New list with dependencies of new files in + support/malloc. + (LIBOBJS): Add DYNOBJS. + (regex$O): Depend on some files in support/malloc. + +2021-05-05 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + * config.h: Rebuilt. + +2021-02-13 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2021-01-09 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2021-01-08 Arnold D. Robbins + + * gawkmisc.pc (quote): Make const char *. + (defpath): Make const char *. + (deflibpath): Make const char *. + (envsep): Make const char *. + (gawk_name): Now returns const char *. + +2021-01-07 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-12-26 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-12-20 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-12-19 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-11-01 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-10-05 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-10-01 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-09-21 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-08-17 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-08-04 Arnold D. Robbins + + * Makefile.tst: Rebuilt. + +2020-07-25 Eli Zaretskii + + * Makefile (mingw32, mingw32-readline, mingw32-mpfr) + (mingw32-readline-mpfr): Remove -lmsvcp60 from the linker command + line. That library is not freely redistributable, and linking + against it should no longer be necessary with latest MinGW runtime + versions. + +2020-04-25 Eli Zaretskii + + * Makefile.ext: + * Makefile.tst.prologue: + * Makefile: + * socket.h: + * popen.h: + * popen.c: + * getid.c: + * gawkmisc.pc: + * dlfcn.h: + * config.sed: Update copyright years. Reported by Scott Deifik + . + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/pc/config.h gawk-5.1.1/pc/config.h --- gawk-5.1.0/pc/config.h 2020-04-14 14:48:06.000000000 +0300 +++ gawk-5.1.1/pc/config.h 2021-10-28 20:22:12.000000000 +0300 @@ -29,14 +29,17 @@ /* Define to 1 if you have the `btowc' function. */ #define HAVE_BTOWC 1 -/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the - CoreFoundation framework. */ -#undef HAVE_CFLOCALECOPYCURRENT +/* Define to 1 if you have the Mac OS X function + CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE +/* Define to 1 if C supports variable-length arrays. */ +#undef HAVE_C_VARARRAYS + /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT @@ -180,6 +183,9 @@ /* Define to 1 if you have the `memset_ulong' function. */ #undef HAVE_MEMSET_ULONG +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + /* Define to 1 if you have the `mkstemp' function. */ #ifdef __DJGPP__ #define HAVE_MKSTEMP 1 @@ -191,6 +197,9 @@ /* Define to 1 if you have fully functional mpfr and gmp libraries. */ /* #undef HAVE_MPFR */ +/* Define to 1 if you have the `mtrace' function. */ +#undef HAVE_MTRACE + /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H @@ -246,6 +255,9 @@ #define HAVE_STDINT_H 1 #endif +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the header file. */ #if defined(__MINGW32__) || defined(__DJGPP__) #define HAVE_STDLIB_H 1 @@ -461,7 +473,7 @@ #define PACKAGE_NAME "GNU Awk" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GNU Awk 5.1.0" +#define PACKAGE_STRING "GNU Awk 5.1.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gawk" @@ -470,7 +482,7 @@ #define PACKAGE_URL "http://www.gnu.org/software/gawk/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "5.1.0" +#define PACKAGE_VERSION "5.1.1" /* Define to 1 if *printf supports %a format */ #define PRINTF_HAS_A_FORMAT 1 @@ -486,7 +498,9 @@ /* The size of `unsigned long', as computed by sizeof. */ #define SIZEOF_UNSIGNED_LONG 4 -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #define STDC_HEADERS 1 /* enable built-in intdiv0 function */ @@ -495,9 +509,6 @@ /* some systems define this type here */ #undef TIME_T_IN_SYS_TYPES_H -/* Define to 1 if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 - /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME @@ -512,31 +523,92 @@ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE #endif /* Version number of package */ -#define VERSION "5.1.0" - -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif +#define VERSION "5.1.1" /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS @@ -544,9 +616,6 @@ /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES -/* Define to 1 if on MINIX. */ -#undef _MINIX - /* The _Noreturn keyword of C11. */ #ifndef _Noreturn # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ @@ -560,18 +629,16 @@ #endif -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE - -/* Define to 1 if type `char' is unsigned and you are not using gcc. */ +/* Define to 1 if type `char' is unsigned and your compiler does not + predefine this macro. */ #ifndef __CHAR_UNSIGNED__ # undef __CHAR_UNSIGNED__ #endif +/* Define to 1 if C does not support variable-length arrays, and if the + compiler does not already define this. */ +#undef __STDC_NO_VLA__ + /* Define to empty if `const' does not conform to ANSI C. */ #undef const @@ -590,19 +657,20 @@ not define. */ #undef intmax_t -/* Define to `int' if does not define. */ +/* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is - supported directly. */ + supported only directly. */ #undef restrict -/* Work around a bug in Sun C++: it does not support _Restrict or - __restrict__, even though the corresponding Sun C compiler ends up with - "#define restrict _Restrict" or "#define restrict __restrict__" in the - previous line. Perhaps some future version of Sun C++ will work with - restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ -#if defined __SUNPRO_CC && !defined __RESTRICT +/* Work around a bug in older versions of Sun C++, which did not + #define __restrict__ or support _Restrict or __restrict__ + even though the corresponding Sun C compiler ended up with + "#define restrict _Restrict" or "#define restrict __restrict__" + in the previous line. This workaround can be removed once + we assume Oracle Developer Studio 12.5 (2016) or later. */ +#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ # define _Restrict # define __restrict__ #endif diff -urN gawk-5.1.0/pc/config.sed gawk-5.1.1/pc/config.sed --- gawk-5.1.0/pc/config.sed 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/pc/config.sed 2020-04-26 17:07:19.000000000 +0300 @@ -2,7 +2,7 @@ # Configuration script for pc/config.h # ---------------------------------------------------------------------- -# Copyright (C) 2011, 2016 the Free Software Foundation, Inc. +# Copyright (C) 2011, 2016-2019 the Free Software Foundation, Inc. # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. diff -urN gawk-5.1.0/pc/dlfcn.h gawk-5.1.1/pc/dlfcn.h --- gawk-5.1.0/pc/dlfcn.h 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/pc/dlfcn.h 2020-04-26 17:07:19.000000000 +0300 @@ -1,4 +1,24 @@ /* dlfcn.h replacement for MS-Windows build. */ +/* + * Copyright (C) 2010, 2013, the Free Software Foundation, Inc. + * + * This file is part of GAWK, the GNU implementation of the + * AWK Programming Language. + * + * GAWK 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. + * + * GAWK 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ #ifndef DLFCN_H #define DLFCN_H diff -urN gawk-5.1.0/pc/gawkmisc.pc gawk-5.1.1/pc/gawkmisc.pc --- gawk-5.1.0/pc/gawkmisc.pc 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/pc/gawkmisc.pc 2021-10-27 07:44:05.000000000 +0300 @@ -1,7 +1,7 @@ /* gawkmisc.c --- miscellaneous gawk routines that are OS specific. -*-C-*- */ /* - * Copyright (C) 1986, 1988, 1989, 1991 - 2003, 2012, 2016, 2017 + * Copyright (C) 1986, 1988, 1989, 1991 - 2003, 2012, 2016-2019, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -22,19 +22,19 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ -char quote = '\''; -char envsep = ';'; +const char quote = '\''; +const char envsep = ';'; # ifdef DEFPATH -char *defpath = DEFPATH; +const char *defpath = DEFPATH; # else -char *defpath = ".;c:\\lib\\awk;c:\\gnu\\lib\\awk"; +const char *defpath = ".;c:\\lib\\awk;c:\\gnu\\lib\\awk"; # endif /* the Makefile should define DEFLIBPATH */ -char *deflibpath = DEFLIBPATH; +const char *deflibpath = DEFLIBPATH; #ifdef __EMX__ -#include +#include static int _os2_is_abs_path(const char *dirname); static char* _os2_unixroot(const char *path); @@ -61,7 +61,7 @@ /* gawk_name --- pull out the "gawk" part from how the OS called us */ -char * +const char * gawk_name(filespec) const char *filespec; { diff -urN gawk-5.1.0/pc/GenMakefileTst.awk gawk-5.1.1/pc/GenMakefileTst.awk --- gawk-5.1.0/pc/GenMakefileTst.awk 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/pc/GenMakefileTst.awk 2021-05-20 21:29:00.000000000 +0300 @@ -109,7 +109,7 @@ return # First line if it's @echo $@ - if (recipe_lines[2] == "\t@echo $@") { + if (recipe_lines[2] ~ /\t@echo [$]@/) { start = 3 print recipe_lines[2] } else diff -urN gawk-5.1.0/pc/getid.c gawk-5.1.1/pc/getid.c --- gawk-5.1.0/pc/getid.c 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/pc/getid.c 2020-04-26 17:07:19.000000000 +0300 @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2010, the Free Software Foundation, Inc. + * + * This file is part of GAWK, the GNU implementation of the + * AWK Programming Language. + * + * GAWK 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. + * + * GAWK 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + #ifdef __MINGW32__ #include diff -urN gawk-5.1.0/pc/Makefile gawk-5.1.1/pc/Makefile --- gawk-5.1.0/pc/Makefile 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/pc/Makefile 2021-10-27 07:44:58.000000000 +0300 @@ -6,7 +6,7 @@ # Tested with GNU make on Windows, OS/2 and DOS. -# Copyright (C) 1989-2016 Free Software Foundation, Inc. +# Copyright (C) 1989-2019, 2021 Free Software Foundation, Inc. # This Makefile is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -85,6 +85,7 @@ prefix = c:/gnu pkgdatadir = $(prefix)/lib/awk pkgextensiondir = $(prefix)/lib/gawk +DEFPATH = "\".;$(pkgdatadir);c:/lib/awk;c:/gnu/lib/awk\"" DEFLIBPATH = "\"$(pkgextensiondir)\"" LOCALEDIR="\"$(prefix)/share/locale\"" SHLIBEXT = "\"dll\"" @@ -101,7 +102,7 @@ DO_BIND= $($(BIND)) #------------------------------------------------------------------------ # To allow Make find files in the support subdirectory. -VPATH = .;./support +VPATH = .;./support;./support/malloc #======================================================================== # End of general configuration. Some platform-specific configuration # notes appear below. @@ -200,35 +201,35 @@ $(MAK) all \ CC=gcc O=.o CF="-D__USE_MINGW_ANSI_STDIO -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ - LF2="-lws2_32 -lmsvcp60" RSP= + LF2="-lws2_32" RSP= mingw32-readline: $(MAK) all \ CC=gcc O=.o \ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ - LF2="-lreadline -lws2_32 -lmsvcp60 -Wl,--enable-auto-import" RSP= + LF2="-lreadline -lws2_32 -Wl,--enable-auto-import" RSP= mingw32-mpfr: $(MAK) all \ CC=gcc O=.o \ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_MPFR -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ - LF2="-lmpfr -lgmp -lws2_32 -lmsvcp60 -Wl,--enable-auto-import" RSP= + LF2="-lmpfr -lgmp -lws2_32 -Wl,--enable-auto-import" RSP= mingw32-readline-mpfr: $(MAK) all \ CC=gcc O=.o \ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -DHAVE_MPFR -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ - LF2="-lmpfr -lgmp -lreadline -lws2_32 -lmsvcp60 -Wl,--enable-auto-import" RSP= + LF2="-lmpfr -lgmp -lreadline -lws2_32 -Wl,--enable-auto-import" RSP= # Define BIND for BINDless compiles, otherwise $($(BIND)) may break. BIND = EMPTY PBIND = EMPTY EMPTY= -CFLAGS = $(CF) -DGAWK -I. -I./support -DHAVE_CONFIG_H -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) -DLOCALEDIR=$(LOCALEDIR) +CFLAGS = $(CF) -DGAWK -I. -I./support -DHAVE_CONFIG_H -DDEFPATH=$(DEFPATH) -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) -DLOCALEDIR=$(LOCALEDIR) # object files AWKOBJS1 = array$O builtin$O eval$O field$O floatcomp$O gawkmisc$O io$O main$O @@ -241,7 +242,10 @@ # LIBOBJS # GNU and other stuff that gawk uses as library routines. -LIBOBJS= getopt$O getopt1$O dfa$O regex$O random$O localeinfo$O +DYNOBJS= dynarray_resize$O dynarray_emplace_enlarge$O dynarray_finalize$O \ + dynarray_at_failure$O dynarray_resize_clear$O + +LIBOBJS= getopt$O getopt1$O dfa$O random$O localeinfo$O regex$O $(DYNOBJS) GAWKOBJS = $(ALLOBJS) $(LIBOBJS) @@ -271,9 +275,11 @@ # and we have -I. on the compiler command line. unistd.h is # included by awk.h. # 2. custom.h is not mentioned because pc ports don't use it. -$(ALLOBJS) $(LIBOBJS): \ +$(ALLOBJS) $(LIBOBJS) $(DYNOBJS): \ awk.h regex.h config.h gettext.h mbsupport.h protos.h dfa.h getopt.h nonposix.h +$(DYNOBJS) regex$O: dynarray.h libc-config.h malloc/dynarray.h malloc/dynarray-skeleton.c + builtin$O: floatmagic.h random.h popen.h random$O: random.h diff -urN gawk-5.1.0/pc/Makefile.ext gawk-5.1.1/pc/Makefile.ext --- gawk-5.1.0/pc/Makefile.ext 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/pc/Makefile.ext 2020-04-26 17:07:19.000000000 +0300 @@ -1,6 +1,6 @@ # extension/Makefile for the MinGW build # -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013, 2015, 2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -urN gawk-5.1.0/pc/Makefile.tst gawk-5.1.1/pc/Makefile.tst --- gawk-5.1.0/pc/Makefile.tst 2020-04-14 14:45:00.000000000 +0300 +++ gawk-5.1.1/pc/Makefile.tst 2021-10-28 20:21:01.000000000 +0300 @@ -1,6 +1,6 @@ # Makefile for GNU Awk test suite. # -# Copyright (C) 1988-2018 the Free Software Foundation, Inc. +# Copyright (C) 1988-2020 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -141,87 +141,80 @@ # try to keep these sorted. each letter starts a new line BASIC_TESTS = \ - addcomma anchgsub anchor argarray arrayind1 arrayind2 arrayind3 arrayparm \ - arrayprm2 arrayprm3 arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 \ - arynasty arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ - aryprm8 aryprm9 arysubnm aryunasgn asgext awkpath \ - assignnumfield assignnumfield2 \ - back89 backgsub badassign1 badbuild \ - callparam childin clobber closebad clsflnam compare compare2 \ - concat1 concat2 concat3 concat4 concat5 convfmt \ - datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \ - escapebrace eofsplit eofsrc1 exit2 exitval1 exitval2 exitval3 \ - fcall_exit fcall_exit2 fldchg fldchgnf fldterm fnamedat fnarray fnarray2 \ - fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fscaret fsnul1 \ - fsrs fsspcoln fstabplus funsemnl funsmnam funstack \ - getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \ - gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 \ - gsubtst8 \ - hex hex2 hsprint \ - inpref inputred intest intprec iobug1 \ - leaddig leadnl litoct longsub longwrds \ - manglprm math membug1 memleak messages minusstr mmap8k \ - nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \ - nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl noparms \ - nors nulinsrc nulrsend numindex numrange numstr1 numsubstr \ - octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \ - opasnidx opasnslf \ - paramasfunc1 paramasfunc2 paramdup paramres paramtyp paramuninitglobal \ - parse1 parsefld parseme pcntplus posix2008sub prdupval prec printf0 \ - printf1 printfchar prmarscl prmreuse prt1eval prtoeval \ - rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \ - regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \ - rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnulw \ - rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \ - scalar sclforin sclifin setrec0 setrec1 \ - sigpipe1 sortempty sortglos spacere splitargv splitarr \ - splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \ - subamp subback subi18n subsepnm subslash substr swaplns synerr1 synerr2 synerr3 \ - tailrecurse tradanch trailbs tweakfld \ - uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs uplus \ - wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \ - zero2 zeroe0 zeroflag + addcomma anchgsub anchor argarray argcasfile arrayind1 arrayind2 \ + arrayind3 arrayparm arrayprm2 arrayprm3 arrayref arrymem1 \ + arryref2 arryref3 arryref4 arryref5 arynasty arynocls aryprm1 \ + aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 aryprm8 aryprm9 \ + arysubnm aryunasgn asgext awkpath assignnumfield assignnumfield2 \ + back89 backgsub badassign1 badbuild callparam childin clobber \ + closebad clsflnam compare compare2 concat1 concat2 concat3 concat4 \ + concat5 convfmt datanonl defref delargv delarpm2 delarprm delfunc \ + dfacheck2 dfamb1 dfastress dynlj escapebrace eofsplit eofsrc1 \ + exit2 exitval1 exitval2 exitval3 fcall_exit fcall_exit2 fldchg \ + fldchgnf fldterm fnamedat fnarray fnarray2 fnaryscl fnasgnm \ + fnmisc fordel forref forsimp fsbs fscaret fsnul1 fsrs fsspcoln \ + fstabplus funsemnl funsmnam funstack getline getline2 getline3 \ + getline4 getline5 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \ + gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 gsubtst8 \ + hex hex2 hsprint inpref inputred intest intprec iobug1 leaddig \ + leadnl litoct longsub longwrds manglprm math membug1 memleak \ + messages minusstr mmap8k nasty nasty2 negexp negrange nested \ + nfldstr nfloop nfneg nfset nlfldsep nlinstr nlstrina noeffect \ + nofile nofmtch noloop1 noloop2 nonl noparms nors nulinsrc \ + nulrsend numindex numrange numstr1 numsubstr octsub ofmt \ + ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl opasnidx \ + opasnslf paramasfunc1 paramasfunc2 paramdup paramres paramtyp \ + paramuninitglobal parse1 parsefld parseme pcntplus posix_compare \ + posix2008sub prdupval prec printf0 printf1 printfchar prmarscl \ + prmreuse prt1eval prtoeval rand randtest range1 range2 readbuf \ + rebrackloc rebt8b1 rebuild redfilnm regeq regexpbrack regexpbrack2 \ + regexprange regrange reindops reparse resplit rri1 rs rscompat \ + rsnul1nl rsnulbig rsnulbig2 rsnullre rsnulw rstest1 rstest2 \ + rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin setrec0 \ + setrec1 sigpipe1 sortempty sortglos spacere splitargv splitarr \ + splitdef splitvar splitwht status-close strcat1 strfieldnum \ + strnum1 strnum2 strtod subamp subback subi18n subsepnm subslash \ + substr swaplns synerr1 synerr2 synerr3 tailrecurse tradanch \ + trailbs tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized \ + unterm uparrfs uplus wideidx wideidx2 widesub widesub2 widesub3 \ + widesub4 wjposer1 zero2 zeroe0 zeroflag UNIX_TESTS = \ fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \ space strftlng GAWK_EXT_TESTS = \ - aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort arraysort2 \ - arraytype \ - backw badargs beginfile1 beginfile2 binmode1 \ - charasbytes colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \ - clos1way6 crlf \ - dbugeval dbugeval2 dbugeval3 dbugtypedre1 dbugtypedre2 delsub \ - devfd devfd1 devfd2 dfacheck1 dumpvars \ - errno exit fieldwdth forcenum \ - fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpatnull \ - fsfwfs funlen functab1 functab2 functab3 \ - fwtest fwtest2 fwtest3 fwtest4 fwtest5 fwtest6 fwtest7 fwtest8 \ - genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind \ - icasefs icasers id igncdym igncfs ignrcas2 ignrcas4 ignrcase incdupe \ - incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 include include2 \ - indirectbuiltin indirectcall indirectcall2 intarray isarrayunset \ - lint lintexp lintindex lintint lintlength lintold lintset lintwarn \ - manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \ - nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \ - nsawk1a nsawk1b nsawk1c nsawk2a nsawk2b \ - nsbad nsbad_cmd nsforloop nsfuncrecurse nsindirect1 nsindirect2 nsprof1 nsprof2 \ - patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge \ - procinfs profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ - profile7 profile8 profile9 profile10 profile11 profile12 profile13 pty1 pty2 \ - rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin \ - rsstart1 rsstart2 rsstart3 rstest6 \ - sandbox1 shadow shadowbuiltin sortfor sortfor2 sortu \ - sourcesplit split_after_fpat \ - splitarg4 strftfld strftime strtonum strtonum1 \ - stupid1 stupid2 stupid3 stupid4 \ + aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ + arraysort2 arraytype backw badargs beginfile1 beginfile2 binmode1 \ + charasbytes colonwarn clos1way clos1way2 clos1way3 clos1way4 \ + clos1way5 clos1way6 commas crlf dbugeval dbugeval2 dbugeval3 \ + dbugtypedre1 dbugtypedre2 delsub devfd devfd1 devfd2 dfacheck1 \ + dumpvars errno exit fieldwdth forcenum fpat1 fpat2 fpat3 fpat4 \ + fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull fsfwfs funlen functab1 \ + functab2 functab3 functab6 fwtest fwtest2 fwtest3 fwtest4 fwtest5 \ + fwtest6 fwtest7 fwtest8 genpot gensub gensub2 gensub3 getlndir \ + gnuops2 gnuops3 gnureops gsubind icasefs icasers id igncdym igncfs \ + ignrcas2 ignrcas4 ignrcase incdupe incdupe2 incdupe3 incdupe4 \ + incdupe5 incdupe6 incdupe7 include include2 indirectbuiltin \ + indirectcall indirectcall2 inf-nan-torture intarray iolint \ + isarrayunset lint lintexp lintindex lintint lintlength lintplus \ + lintold lintset lintwarn manyfiles match1 match2 match3 mbstr1 \ + mbstr2 mixed1 mktime modifiers muldimposix nastyparm negtime \ + next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 nsawk1a nsawk1b \ + nsawk1c nsawk2a nsawk2b nsbad nsbad_cmd nsforloop nsfuncrecurse \ + nsindirect1 nsindirect2 nsprof1 nsprof2 octdec patsplit posix \ + printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ + profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ + profile7 profile8 profile9 profile10 profile11 profile12 profile13 \ + profile14 profile15 profile16 pty1 pty2 rebuf regexsub regnul1 regnul2 \ + regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ + rsstart2 rsstart3 rstest6 sandbox1 shadow shadowbuiltin sortfor \ + sortfor2 sortu sourcesplit split_after_fpat splitarg4 strftfld \ + strftime strtonum strtonum1 stupid1 stupid2 stupid3 stupid4 \ switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 symtab7 \ - symtab8 symtab9 symtab10 symtab11 \ - timeout typedregex1 typedregex2 typedregex3 typedregex4 \ - typedregex5 typedregex6 \ - typeof1 typeof2 typeof3 typeof4 typeof5 \ - watchpoint1 + symtab8 symtab9 symtab10 symtab11 timeout typedregex1 typedregex2 \ + typedregex3 typedregex4 typedregex5 typedregex6 typeof1 typeof2 \ + typeof3 typeof4 typeof5 typeof6 watchpoint1 ARRAYDEBUG_TESTS = arrdbg EXTRA_TESTS = inftest regtest ignrcas3 @@ -235,7 +228,7 @@ SHLIB_TESTS = \ apiterm \ - filefuncs fnmatch fork fork2 fts functab4 \ + filefuncs fnmatch fork fork2 fts functab4 functab5 \ getfile \ inplace1 inplace2 inplace2bcomp inplace3 inplace3bcomp \ ordchr ordchr2 \ @@ -245,32 +238,36 @@ # List of the tests which should be run with --debug option: -NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 dbugeval3 symtab10 +NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 dbugeval3 # List of the tests which should be run with --lint option: NEED_LINT = \ - defref fmtspcl lintexp lintindex lintint lintlength lintwarn \ - noeffect nofmtch nonl shadow uninit2 uninit3 uninit4 uninit5 uninitialized + defref fmtspcl lintexp lintindex lintint lintlength lintplus \ + lintwarn noeffect nofmtch nonl shadow uninit2 uninit3 uninit4 \ + uninit5 uninitialized # List of the tests which should be run with --lint-old option: NEED_LINT_OLD = lintold # List of tests that must be run with -M -NEED_MPFR = mpfrbigint mpfrbigint2 mpfrexprange mpfrfield mpfrieee mpfrmemok1 \ - mpfrnegzero mpfrnr mpfrrem mpfrrnd mpfrrndeval mpfrsort mpfrsqrt \ - mpfrstrtonum mpgforcenum mpfruplus mpfranswer42 +NEED_MPFR = \ + mpfrbigint mpfrbigint2 mpfrcase mpfrcase2 mpfrexprange mpfrfield \ + mpfrieee mpfrmemok1 mpfrnegzero mpfrnonum mpfrnr mpfrrem mpfrrnd \ + mpfrrndeval mpfrsort mpfrsqrt mpfrstrtonum mpgforcenum mpfruplus \ + mpfranswer42 # List of tests that need --non-decimal-data NEED_NONDEC = mpfrbigint2 nondec2 intarray forcenum # List of tests that need --posix -NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix +NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix posix_compare # List of tests that need --pretty-print NEED_PRETTY = nsprof1 nsprof2 \ - profile4 profile5 profile8 profile9 profile10 profile11 profile13 + profile4 profile5 profile8 profile9 profile10 profile11 profile13 \ + profile14 profile15 profile16 # List of tests that need --re-interval @@ -283,7 +280,7 @@ NEED_TRADITIONAL = litoct tradanch rscompat # Lists of tests that run a shell script -RUN_SHELL = exit fflush localenl next randtest rtlen rtlen01 +RUN_SHELL = exit fflush localenl modifiers next randtest rtlen rtlen01 # List of the tests which fail with EXIT CODE 1 FAIL_CODE1 = \ @@ -293,22 +290,18 @@ paramdup paramres parseme readbuf synerr1 synerr2 unterm -# List of files which have .ok versions for MPFR -CHECK_MPFR = \ - rand fnarydel fnparydl - - # Lists of tests that need particular locales NEED_LOCALE_C = \ clos1way gsubtst6 range2 NEED_LOCALE_EN = \ - backbigs1 backsmalls1 backsmalls2 concat4 dfamb1 ignrcas2 lc_num1 \ - mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 printhuge reint2 \ - rri1 subamp subi18n wideidx wideidx2 widesub widesub2 widesub3 widesub4 + backbigs1 backsmalls1 backsmalls2 commas concat4 dfamb1 ignrcas2 lc_num1 \ + mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 posix_compare \ + printhuge reint2 rri1 subamp subi18n wideidx wideidx2 \ + widesub widesub2 widesub3 widesub4 -# Unused at the moment, since nlstringtest has additional stufff it does +# Unused at the moment, since nlstringtest has additional stuff it does # NEED_LOCALE_FR = # Same for ignrcas3 # NEED_LOCALE_GR = @@ -328,22 +321,23 @@ # List of tests that fail on MinGW EXPECTED_FAIL_MINGW = \ backbigs1 backsmalls1 clos1way6 devfd devfd1 devfd2 \ - errno exitval2 fork fork2 fts getfile getlnhd ignrcas3 inetdayt \ - inetecht mbfw1 mbprintf1 mbprintf4 mbstr1 mbstr2 pid pipeio2 \ - pty1 pty2 readdir rstest4 rstest5 status-close timeout + errno exitval2 fork fork2 fts functab5 \ + getfile getlnhd ignrcas3 inetdayt inetecht inf-nan-torture \ + mbfw1 mbprintf1 mbprintf4 mbstr1 mbstr2 \ + pid pipeio2 pty1 pty2 readdir rstest4 rstest5 status-close timeout # List of tests that fail on z/OS EXPECTED_FAIL_ZOS = \ aasort aasorti arraysort asort asorti backbigs1 backsmalls1 \ - backsmalls2 beginfile1 beginfile2 charasbytes clos1way6 concat4 \ + backsmalls2 beginfile1 beginfile2 charasbytes commas clos1way6 concat4 \ dfamb1 double1 double2 errno fmttest forcenum getlndir gsubtst5 \ - ignrcas2 lc_num1 localenl localenl mbfw1 mbprintf1 mbprintf2 \ - mbprintf3 mbprintf4 mbprintf5 mbstr1 mbstr2 mtchi18n nlstringtest \ - nofile nonfatal2 numrange printhuge profile5 profile5 rebt8b2 \ - regrange reint2 rri1 sigpipe1 sort1 sortfor sortu space sprintfc \ - subamp subi18n symtab1 symtab11 symtab8 timeout wideidx wideidx2 \ - widesub widesub2 widesub3 widesub4 + ignrcas2 inf-nan-torture iolint lc_num1 mbfw1 mbprintf1 \ + mbprintf2 mbprintf3 mbprintf4 mbprintf5 mbstr1 mbstr2 mtchi18n \ + nlstringtest nofile nonfatal2 numrange posix_compare printhuge \ + profile5 rebt8b2 regrange reint2 rri1 sigpipe1 sort1 sortfor \ + sortu space sprintfc subamp subi18n symtab1 symtab11 symtab8 \ + timeout wideidx wideidx2 widesub widesub2 widesub3 widesub4 # List of the files that appear in manual tests or are for reserve testing: @@ -582,8 +576,8 @@ # This cannot be autogenerated; we want it to read the input name # on the command line. errno: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -785,8 +779,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ beginfile1:: - @echo Expect $@ to fail with DJGPP. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP. @AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -828,8 +822,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ profile5: - @echo $@ - @AWKPATH="$(srcdir)" $(AWK) --pretty=_$@ -f $@.awk 2> _$@.err + @echo $@ $(ZOS_FAIL) + @-AWKPATH="$(srcdir)" $(AWK) --pretty=_$@ -f $@.awk 2> _$@.err @cat _$@.err >> _$@ ; rm -f _$@.err @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -1032,7 +1026,9 @@ @echo $@ @$(AWK) ' /^(@load|BEGIN)/,/^}/' "$(top_srcdir)"/extension/testext.c > testext.awk @$(AWK) -f ./testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk testexttmp.txt + @-if echo "$$GAWK_TEST_ARGS" | egrep -e '-M|--bignum' > /dev/null; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ testext.awk testexttmp.txt ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk testexttmp.txt ; fi getfile: @echo $@ @@ -1174,8 +1170,10 @@ arrdbg: @echo $@ - @$(AWK) -v "okfile=./$@.ok" -f "$(srcdir)"/$@.awk | grep array_f >_$@ || echo EXIT CODE: $$? >> _$@ - @-$(CMP) ./$@.ok _$@ && rm -f _$@ ./$@.ok + @$(AWK) -v "okfile=./$@.ok" -v "mpfr_okfile=./$@-mpfr.ok" -f "$(srcdir)"/$@.awk | grep array_f >_$@ || echo EXIT CODE: $$? >> _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -e '-M|--bignum' > /dev/null; \ + then $(CMP) "."/$@-mpfr.ok _$@ && rm -f _$@ $@.ok $@-mpfr.ok ; \ + else $(CMP) "."/$@.ok _$@ && rm -f _$@ $@.ok $@-mpfr.ok ; fi sourcesplit: @echo $@ @@ -1201,7 +1199,7 @@ # 4/2018: On first call to $(CMP), send to /dev/null even with -s for MinGW. nlstringtest:: - @echo $@ + @echo $@ $(ZOS_FAIL) @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=FRA_FRA.1252 ; export GAWKLOCALE ; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-if $(CMP) -s "$(srcdir)"/nlstringtest-nogettext.ok _$@ > /dev/null ; \ @@ -1225,6 +1223,18 @@ @echo $@ @$(AWK) -v x=@$(SLASH)foo/ -f "$(srcdir)"/$@.awk y=@$(SLASH)bar/ /dev/null >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +iolint: + @echo $@ $(ZOS_FAIL) + @echo hello > 'echo hello' + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-$(RM) -f cat 'echo hello' f1 f2 cksum + +argcasfile: + @echo $@ + @$(AWK) -f "$(srcdir)"/$@.awk ARGC=1 ' /no/such/file' < "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: @@ -1483,6 +1493,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +dfacheck2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + dfamb1: @echo $@ $(ZOS_FAIL) @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ @@ -1909,7 +1924,9 @@ numrange: @echo $@ $(ZOS_FAIL) @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi numstr1: @echo $@ @@ -2026,6 +2043,12 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +posix_compare: + @echo $@ $(ZOS_FAIL) + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + posix2008sub: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2078,10 +2101,10 @@ rand: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi randtest: @echo $@ @@ -2181,6 +2204,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +rsnullre: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + rsnulw: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2244,8 +2272,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ sigpipe1: - @echo Expect $@ to fail with DJGPP. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP. @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -2295,6 +2323,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +strfieldnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + strnum1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2538,7 +2571,9 @@ arraytype: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi backw: @echo $@ @@ -2578,11 +2613,17 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ clos1way6: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +commas: + @echo $@ $(ZOS_FAIL) + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2673,6 +2714,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat9: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2703,6 +2749,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +functab6: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fwtest: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2759,8 +2810,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ getlndir: - @echo Expect $@ to fail with DJGPP. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP. @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -2848,6 +2899,12 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +inf-nan-torture: + @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with MinGW. + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + intarray: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --non-decimal-data >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2883,6 +2940,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +lintplus: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + lintold: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint-old < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2914,15 +2976,15 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ mbstr1: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ mbstr2: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -2932,6 +2994,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +modifiers: + @echo $@ + @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + muldimposix: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2958,8 +3025,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ nonfatal2: - @echo Expect $@ to fail with DJGPP. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP. @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -3004,6 +3071,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +octdec: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + patsplit: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3070,6 +3142,26 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile14: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +profile15: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +profile16: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +regexsub: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + regnul1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3229,7 +3321,7 @@ symtab10: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --debug < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ symtab11: @@ -3238,8 +3330,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ timeout: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -3293,6 +3385,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +typeof6: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + double1: @echo $@ $(ZOS_FAIL) @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3319,15 +3416,15 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ backbigs1: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ backsmalls1: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -3345,17 +3442,17 @@ fnarydel: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi fnparydl: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi lc_num1: @echo $@ $(ZOS_FAIL) @@ -3364,22 +3461,22 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ mbfw1: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ mbprintf1: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ mbprintf2: @echo $@ $(ZOS_FAIL) - @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=; export GAWKLOCALE; \ + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=JPN_JPN.932; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -3390,8 +3487,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ mbprintf4: - @echo Expect $@ to fail with DJGPP and MinGW. @echo $@ $(ZOS_FAIL) + @echo Expect $@ to fail with DJGPP and MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -3444,6 +3541,12 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +functab5: + @echo $@ + @echo Expect $@ to fail with MinGW. + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ordchr: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3479,6 +3582,16 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M --non-decimal-data < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrcase: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +mpfrcase2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrfield: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3489,6 +3602,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrnonum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrnr: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3531,8 +3649,7 @@ clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ - readdir_test.ok readdir_retest.ok \ - profile1.ok + readdir_test.ok readdir_retest.ok profile1.ok X_* # An attempt to print something that can be grepped for in build logs pass-fail: @@ -3551,9 +3668,9 @@ echo ============== $$i ============= ; \ base=`echo $$i | sed 's/^_//'` ; \ if [ -r $${base}.ok ]; then \ - diff -c $${base}.ok $$i ; \ + diff -u $${base}.ok $$i ; \ else \ - diff -c "$(srcdir)"/$${base}.ok $$i ; \ + diff -u "$(srcdir)"/$${base}.ok $$i ; \ fi ; \ fi ; \ done | more diff -urN gawk-5.1.0/pc/Makefile.tst.prologue gawk-5.1.1/pc/Makefile.tst.prologue --- gawk-5.1.0/pc/Makefile.tst.prologue 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/pc/Makefile.tst.prologue 2020-04-26 17:07:19.000000000 +0300 @@ -1,6 +1,6 @@ # Makefile for GNU Awk test suite. # -# Copyright (C) 1988-2018 the Free Software Foundation, Inc. +# Copyright (C) 1988-2020 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. diff -urN gawk-5.1.0/pc/popen.c gawk-5.1.1/pc/popen.c --- gawk-5.1.0/pc/popen.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/pc/popen.c 2020-04-26 17:07:19.000000000 +0300 @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2010, 2013, 2014, 2016, the Free Software Foundation, Inc. + * + * This file is part of GAWK, the GNU implementation of the + * AWK Programming Language. + * + * GAWK 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. + * + * GAWK 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + #include #include #include diff -urN gawk-5.1.0/pc/popen.h gawk-5.1.1/pc/popen.h --- gawk-5.1.0/pc/popen.h 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/pc/popen.h 2020-04-26 17:07:19.000000000 +0300 @@ -1,6 +1,27 @@ /* ** popen.h -- prototypes for pipe functions */ +/* + * Copyright (C) 2010, 2013, 2014, 2016, the Free Software Foundation, Inc. + * + * This file is part of GAWK, the GNU implementation of the + * AWK Programming Language. + * + * GAWK 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. + * + * GAWK 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + #if !defined (__DJGPP__) # if defined (popen) # undef popen diff -urN gawk-5.1.0/pc/socket.h gawk-5.1.1/pc/socket.h --- gawk-5.1.0/pc/socket.h 2019-08-28 21:54:05.000000000 +0300 +++ gawk-5.1.1/pc/socket.h 2020-04-26 17:07:19.000000000 +0300 @@ -1,4 +1,24 @@ /* An emulation for socket.h header for pc/ systems. */ +/* + * Copyright (C) 2013, 2016, the Free Software Foundation, Inc. + * + * This file is part of GAWK, the GNU implementation of the + * AWK Programming Language. + * + * GAWK 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. + * + * GAWK 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ #ifndef GAWK_SOCKET_H #define GAWK_SOCKET_H diff -urN gawk-5.1.0/po/bg.po gawk-5.1.1/po/bg.po --- gawk-5.1.0/po/bg.po 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/po/bg.po 2021-10-27 07:58:41.000000000 +0300 @@ -0,0 +1,3834 @@ +# Bulgarian translation of GNU gawl po-file. +# Copyright (C) 2021 Free Software Foundation, Inc. +# This file is distributed under the same license as the gawk package. +# Alexander Shopov , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gawk-5.1.1e\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-09-05 20:46+0200\n" +"Last-Translator: Alexander Shopov \n" +"Language-Team: Bulgarian \n" +"Language: bg\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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: array.c:249 +#, c-format +msgid "from %s" +msgstr "от „%s“" + +#: array.c:350 +msgid "attempt to use a scalar value as array" +msgstr "опит Ñкаларна ÑтойноÑÑ‚ да Ñе ползва като маÑив" + +#: array.c:352 +#, c-format +msgid "attempt to use scalar parameter `%s' as an array" +msgstr "опит ÑкаларниÑÑ‚ параметър „%s“ да Ñе ползва като маÑив" + +#: array.c:355 +#, c-format +msgid "attempt to use scalar `%s' as an array" +msgstr "опит Ñкаларът „%s“ да Ñе ползва като маÑив" + +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 +#, c-format +msgid "attempt to use array `%s' in a scalar context" +msgstr "опит маÑивът „%s“ да Ñе ползва в Ñкаларен контекÑÑ‚" + +#: array.c:576 +#, c-format +msgid "delete: index `%.*s' not in array `%s'" +msgstr "изтриване: индекÑÑŠÑ‚ „%.*s“ не е в маÑива „%s“" + +#: array.c:590 +#, c-format +msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" +msgstr "опит Ñкаларът „%s[\"%.*s\"]“ да Ñе ползва като маÑив" + +#: array.c:784 array.c:834 +#, c-format +msgid "%s: first argument is not an array" +msgstr "%s: първиÑÑ‚ аргумент трÑбва да е маÑив" + +#: array.c:826 +#, c-format +msgid "%s: second argument is not an array" +msgstr "%s: вториÑÑ‚ аргумент трÑбва да е маÑив" + +#: array.c:829 field.c:1004 field.c:1096 +#, c-format +msgid "%s: cannot use %s as second argument" +msgstr "%s: не може да ползвате „%s“ като втори аргумент" + +#: array.c:837 +#, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "" +"%s: първиÑÑ‚ аргумент не трÑбва да е таблицата от Ñимволи, ако нÑма втори " +"аргумент" + +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "" +"%s: първиÑÑ‚ аргумент не трÑбва да е таблицата от функции, когато липÑва " +"втори аргумент" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti: ползването на един и Ñъщи маÑив като източник и като цел, без " +"да е даден трети аргумент, е неумеÑтно." + +#: array.c:851 +#, c-format +msgid "%s: cannot use a subarray of first argument for second argument" +msgstr "%s: вториÑÑ‚ аргумент не трÑбва да е подмаÑив на първиÑ" + +#: array.c:856 +#, c-format +msgid "%s: cannot use a subarray of second argument for first argument" +msgstr "%s: първиÑÑ‚ аргумент не трÑбва да е подмаÑив на вториÑ" + +#: array.c:1370 +#, c-format +msgid "`%s' is invalid as a function name" +msgstr "%s: неправилно име на функциÑ" + +#: array.c:1374 +#, c-format +msgid "sort comparison function `%s' is not defined" +msgstr "функциÑта „%s“ за Ñравнение при подредба не е дефинирана" + +#: awkgram.y:276 +#, c-format +msgid "%s blocks must have an action part" +msgstr "блоковете „%s“ изиÑкват чаÑÑ‚ за дейÑтвие" + +#: awkgram.y:279 +msgid "each rule must have a pattern or an action part" +msgstr "вÑÑко правило трÑбва да има шаблон или чаÑÑ‚ за дейÑтвие" + +#: awkgram.y:420 awkgram.y:432 +msgid "old awk does not support multiple `BEGIN' or `END' rules" +msgstr "" +"Ñтарите верÑии на awk не поддържат повече от едно правило „BEGIN“ и „END“" + +#: awkgram.y:485 +#, c-format +msgid "`%s' is a built-in function, it cannot be redefined" +msgstr "„%s“ е вградена Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ не може да Ñе предефинира" + +#: awkgram.y:549 +msgid "regexp constant `//' looks like a C++ comment, but is not" +msgstr "" +"конÑтантата за регулÑрен израз „//“ изглежда като коментар на C++, но не е" + +#: awkgram.y:553 +#, c-format +msgid "regexp constant `/%s/' looks like a C comment, but is not" +msgstr "" +"конÑтантата за регулÑрен израз „/%s/“ изглежда като коментар на C, но не е" + +#: awkgram.y:680 +#, c-format +msgid "duplicate case values in switch body: %s" +msgstr "повтарÑщи Ñе ÑтойноÑти за „case“ в Ñ‚Ñлото на „switch“: %s" + +#: awkgram.y:701 +msgid "duplicate `default' detected in switch body" +msgstr "повтарÑщи Ñе ÑтойноÑти за „default“ в Ñ‚Ñлото на „switch“: %s" + +#: awkgram.y:1037 awkgram.y:4470 +msgid "`break' is not allowed outside a loop or switch" +msgstr "„break“ не може да Ñе ползва извън цикъл или „switch“" + +#: awkgram.y:1047 awkgram.y:4462 +msgid "`continue' is not allowed outside a loop" +msgstr "„continue“ не може да Ñе ползва извън цикъл" + +#: awkgram.y:1058 +#, c-format +msgid "`next' used in %s action" +msgstr "„next“ е ползван в дейÑтвие „%s“" + +#: awkgram.y:1069 +#, c-format +msgid "`nextfile' used in %s action" +msgstr "„nextfile“ е ползван в дейÑтвие „%s“" + +#: awkgram.y:1097 +msgid "`return' used outside function context" +msgstr "„return“ е ползван извън функциÑ" + +#: awkgram.y:1170 +msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" +msgstr "" +"обикновениÑÑ‚ „print“ в правилата „BEGIN“ и „END“ вероÑтно трÑбва да е „print " +"\"\"“" + +#: awkgram.y:1240 awkgram.y:1289 +msgid "`delete' is not allowed with SYMTAB" +msgstr "„delete“ не може да Ñе прилага към таблицата ÑÑŠÑ Ñимволи" + +#: awkgram.y:1242 awkgram.y:1291 +msgid "`delete' is not allowed with FUNCTAB" +msgstr "„delete“ не може да Ñе прилага към таблицата Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸" + +#: awkgram.y:1276 awkgram.y:1280 +msgid "`delete(array)' is a non-portable tawk extension" +msgstr "„delete(МÐСИВ)“ е разширение на tawk, което не Ñе поддържа навÑÑкъде" + +#: awkgram.y:1416 +msgid "multistage two-way pipelines don't work" +msgstr "двупоÑочните многоÑтепенни конвейери не работÑÑ‚" + +#: awkgram.y:1418 +msgid "concatenation as I/O `>' redirection target is ambiguous" +msgstr "" +"Ñвързване, защото целта на пренаÑочването на входа/изхода Ñ â€ž>“ не е " +"еднозначна" + +#: awkgram.y:1630 +msgid "regular expression on right of assignment" +msgstr "регулÑрен израз в дÑÑната Ñтрана на приÑвоÑване" + +#: awkgram.y:1645 awkgram.y:1658 +msgid "regular expression on left of `~' or `!~' operator" +msgstr "регулÑрен израз в лÑвата Ñтрана на оператор „~“ или „!~“" + +#: awkgram.y:1675 awkgram.y:1825 +msgid "old awk does not support the keyword `in' except after `for'" +msgstr "Ñтарите верÑии на awk поддържат ключовата дума „in“ Ñамо Ñлед „for“" + +#: awkgram.y:1685 +msgid "regular expression on right of comparison" +msgstr "регулÑрен израз в дÑÑната Ñтрана на Ñравнение" + +#: awkgram.y:1804 +#, c-format +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "„getline“ без пренаÑочване не може да Ñе ползва в правило „%s“" + +#: awkgram.y:1807 +msgid "non-redirected `getline' undefined inside END action" +msgstr "„getline“ без пренаÑочване не може да Ñе ползва в дейÑтвие „END“" + +#: awkgram.y:1827 +msgid "old awk does not support multidimensional arrays" +msgstr "Ñтарите верÑии на awk не поддържат многомерни маÑиви" + +#: awkgram.y:1930 +msgid "call of `length' without parentheses is not portable" +msgstr "ползване на „length“ без Ñкоби не Ñе поддържа навÑÑкъде" + +#: awkgram.y:2004 +msgid "indirect function calls are a gawk extension" +msgstr "недиректното извикване на функции е разширение на gawk" + +#: awkgram.y:2017 +#, c-format +msgid "cannot use special variable `%s' for indirect function call" +msgstr "" +"Ñпециалната променлива „%s“ не може да Ñе ползва за недиректно извикване на " +"функциÑ" + +#: awkgram.y:2050 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "опит да Ñе извика „%s“, което не е функциÑ" + +#: awkgram.y:2115 +msgid "invalid subscript expression" +msgstr "неправилен индекÑиращ израз" + +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 +msgid "warning: " +msgstr "предупреждение: " + +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 +msgid "fatal: " +msgstr "фатална грешка: " + +#: awkgram.y:2559 +msgid "unexpected newline or end of string" +msgstr "неочакван нов ред или край на низ" + +#: awkgram.y:2580 +msgid "" +"source files / command-line arguments must contain complete functions or " +"rules" +msgstr "" +"файловете Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код/аргументите на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ трÑбва да Ñъдържат цели " +"функции или правила" + +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 +#, c-format +msgid "cannot open source file `%s' for reading: %s" +msgstr "изходниÑÑ‚ файл Ñ ÐºÐ¾Ð´ „%s“ не може да Ñе отвори за четене: %s" + +#: awkgram.y:2863 awkgram.y:3000 +#, c-format +msgid "cannot open shared library `%s' for reading: %s" +msgstr "Ñподелената библиотека „%s“ не може да Ñе отвори за четене: %s" + +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 +msgid "reason unknown" +msgstr "непозната причина" + +#: awkgram.y:2874 awkgram.y:2898 +#, c-format +msgid "cannot include `%s' and use it as a program file" +msgstr "„%s“ не може да Ñе вмъкне, за да Ñе ползва като файл Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°" + +#: awkgram.y:2887 +#, c-format +msgid "already included source file `%s'" +msgstr "файлът Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код „%s“ вече е вмъкнат" + +#: awkgram.y:2888 +#, c-format +msgid "already loaded shared library `%s'" +msgstr "Ñподелената библиотека „%s“ вече е заредена" + +#: awkgram.y:2925 +msgid "@include is a gawk extension" +msgstr "„@include“ е разширение на gawk" + +#: awkgram.y:2931 +msgid "empty filename after @include" +msgstr "празно име на файл Ñлед „@include“" + +#: awkgram.y:2980 +msgid "@load is a gawk extension" +msgstr "„@load“ е разширение на gawk" + +#: awkgram.y:2987 +msgid "empty filename after @load" +msgstr "празно име на файл Ñлед „@load“" + +#: awkgram.y:3130 +msgid "empty program text on command line" +msgstr "празен текÑÑ‚ на програма на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´" + +#: awkgram.y:3246 debug.c:470 debug.c:628 +#, c-format +msgid "cannot read source file `%s': %s" +msgstr "файлът Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код „%s“ не може да Ñе отвори: %s" + +#: awkgram.y:3257 +#, c-format +msgid "source file `%s' is empty" +msgstr "файлът Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код „%s“ е празен" + +#: awkgram.y:3317 +#, c-format +msgid "error: invalid character '\\%03o' in source code" +msgstr "ГРЕШКÐ: неправилен знак „\\%03o“ в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´" + +#: awkgram.y:3544 +msgid "source file does not end in newline" +msgstr "файлът Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код не завършва Ñ Ð½Ð¾Ð² ред" + +#: awkgram.y:3665 +msgid "unterminated regexp ends with `\\' at end of file" +msgstr "незавършен регулÑрен израз Ñвършва Ñ â€ž\\“ в ÐºÑ€Ð°Ñ Ð½Ð° файл" + +#: awkgram.y:3692 +#, c-format +msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" +msgstr "" +"%s: %d: модификаторът на регулÑрен израз на tawk „/…/%c“ не работи в gawk" + +#: awkgram.y:3696 +#, c-format +msgid "tawk regex modifier `/.../%c' doesn't work in gawk" +msgstr "модификаторът на регулÑрен израз на tawk „/…/%c“ не работи в gawk" + +#: awkgram.y:3709 +msgid "unterminated regexp" +msgstr "незавършен регулÑрен израз" + +#: awkgram.y:3713 +msgid "unterminated regexp at end of file" +msgstr "ЛипÑва нов ред в ÐºÑ€Ð°Ñ Ð½Ð° файла" + +#: awkgram.y:3802 +msgid "use of `\\ #...' line continuation is not portable" +msgstr "ползването на „\\ #…“ за пренаÑÑне на ред не Ñе поддържа навÑÑкъде" + +#: awkgram.y:3824 +msgid "backslash not last character on line" +msgstr "„\\“ не е поÑледниÑÑ‚ знак на реда" + +#: awkgram.y:3871 awkgram.y:3873 +msgid "multidimensional arrays are a gawk extension" +msgstr "многомерните маÑиви Ñа разширение на gawk" + +#: awkgram.y:3898 awkgram.y:3909 +#, c-format +msgid "POSIX does not allow operator `%s'" +msgstr "POSIX не поддържа оператора „%s“" + +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 +#, c-format +msgid "operator `%s' is not supported in old awk" +msgstr "операторът „%s“ не Ñе поддържа от Ñтарите верÑии на awk" + +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 +msgid "unterminated string" +msgstr "незавършен низ" + +#: awkgram.y:4061 main.c:1223 +msgid "POSIX does not allow physical newlines in string values" +msgstr "POSIX не позволÑва доÑловен знак за нов ред в низовите променливи" + +#: awkgram.y:4063 node.c:453 +msgid "backslash string continuation is not portable" +msgstr "пренаÑÑнето на низ Ñ â€ž\\“ не Ñе поддържа навÑÑкъде" + +#: awkgram.y:4301 +#, c-format +msgid "invalid char '%c' in expression" +msgstr "неправилен знак „%c“ в израза" + +#: awkgram.y:4396 +#, c-format +msgid "`%s' is a gawk extension" +msgstr "„%s“ е разширение на gawk" + +#: awkgram.y:4401 +#, c-format +msgid "POSIX does not allow `%s'" +msgstr "POSIX не позволÑва „%s“" + +#: awkgram.y:4409 +#, c-format +msgid "`%s' is not supported in old awk" +msgstr "„%s“ не Ñе поддържа от Ñтарите верÑии на awk" + +#: awkgram.y:4507 +msgid "`goto' considered harmful!" +msgstr "„goto“ Ñе Ñчита за вреден!" + +#: awkgram.y:4576 +#, c-format +msgid "%d is invalid as number of arguments for %s" +msgstr "%d е неправилен брой аргументи за „%s“" + +#: awkgram.y:4611 +#, c-format +msgid "%s: string literal as last argument of substitute has no effect" +msgstr "" +"%s: низов литерал като поÑледен аргумент при замеÑтване нÑма никакъв ефект" + +#: awkgram.y:4616 +#, c-format +msgid "%s third parameter is not a changeable object" +msgstr "третиÑÑ‚ параметър на „%s“ е обект, който не може да Ñе променÑ" + +#: awkgram.y:4720 awkgram.y:4723 +msgid "match: third argument is a gawk extension" +msgstr "match: третиÑÑ‚ аргумент е разширение на gawk" + +#: awkgram.y:4777 awkgram.y:4780 +msgid "close: second argument is a gawk extension" +msgstr "close: вториÑÑ‚ аргумент е разширение на gawk" + +#: awkgram.y:4792 +msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" +msgstr "неправилна употреба на „dcgettext(_\"…\")“: изтрийте Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº „_“" + +#: awkgram.y:4807 +msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" +msgstr "неправилна употреба на „dcngettext(_\"…\")“: изтрийте Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº „_“" + +#: awkgram.y:4826 +msgid "index: regexp constant as second argument is not allowed" +msgstr "index: не Ñе приема конÑтанта-регулÑрен израз като втори аргумент" + +#: awkgram.y:4879 +#, c-format +msgid "function `%s': parameter `%s' shadows global variable" +msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: параметърът „%s“ заÑенчва глобална променлива" + +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 +#, c-format +msgid "could not open `%s' for writing: %s" +msgstr "„%s“ не може да Ñе отвори за запиÑ: %s" + +#: awkgram.y:4929 +msgid "sending variable list to standard error" +msgstr "извеждане на ÑпиÑъка Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð»Ð¸Ð²Ð¸ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´" + +#: awkgram.y:4937 +#, c-format +msgid "%s: close failed: %s" +msgstr "%s: неуÑпешно изпълнение на „close“: %s" + +#: awkgram.y:4962 +msgid "shadow_funcs() called twice!" +msgstr "„shadow_funcs()“ е извикана повторно!" + +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "има заÑенчени променливи" + +#: awkgram.y:5047 +#, c-format +msgid "function name `%s' previously defined" +msgstr "вече има Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¸Ð¼Ðµ „%s“" + +#: awkgram.y:5098 +#, c-format +msgid "function `%s': cannot use function name as parameter name" +msgstr "" +"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: името на функциÑта не може да Ñе ползва за име на параметър" + +#: awkgram.y:5101 +#, c-format +msgid "function `%s': cannot use special variable `%s' as a function parameter" +msgstr "" +"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: Ñпециалната променлива „%s“ не може да Ñе ползва за име на " +"параметър" + +#: awkgram.y:5105 +#, c-format +msgid "function `%s': parameter `%s' cannot contain a namespace" +msgstr "" +"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: параметърът „%s“ не може да Ñъдържа проÑтранÑтво от имена" + +#: awkgram.y:5112 +#, c-format +msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" +msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: параметър â„–%d, „%s“ Ð¿Ð¾Ð²Ñ‚Ð°Ñ€Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚ÑŠÑ€ â„–%d" + +#: awkgram.y:5201 +#, c-format +msgid "function `%s' called but never defined" +msgstr "функциÑта „%s“ е извикана, но не е дефинирана" + +#: awkgram.y:5205 +#, c-format +msgid "function `%s' defined but never called directly" +msgstr "функциÑта „%s“ е дефинирана, но никога не е извикана прÑко" + +#: awkgram.y:5237 +#, c-format +msgid "regexp constant for parameter #%d yields boolean value" +msgstr "конÑтантата-регулÑрен израз за параметър â„–%d дава булева ÑтойноÑÑ‚" + +#: awkgram.y:5252 +#, c-format +msgid "" +"function `%s' called with space between name and `(',\n" +"or used as a variable or an array" +msgstr "" +"функциÑта „%s“ е извикана Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð» между името и „(“,\n" +"или е ползвана като променлива или маÑив" + +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 +msgid "division by zero attempted" +msgstr "опит за делене на нула" + +#: awkgram.y:5480 mpfr.c:1558 +#, c-format +msgid "division by zero attempted in `%%'" +msgstr "опит за делене на нула в „%%“" + +#: awkgram.y:5825 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" +"не може да Ñе приÑвои ÑтойноÑÑ‚ на резултата на поÑледващо увеличаване на поле" + +#: awkgram.y:5828 +#, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "неправилна цел на приÑвоÑване (код за Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ â€ž%s“)" + +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "изразът е без ефект" + +#: awkgram.y:6728 +#, c-format +msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" +msgstr "" +"идентификатор „%s“: квалифицирани имена не Ñа позволени в Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ " +"(POSIX) режим" + +#: awkgram.y:6733 +#, c-format +msgid "identifier %s: namespace separator is two colons, not one" +msgstr "" +"идентификатор „%s“: разделителÑÑ‚ за проÑтранÑтво от имена трÑбва да е две " +"двоеточиÑ, не едно" + +#: awkgram.y:6739 +#, c-format +msgid "qualified identifier `%s' is badly formed" +msgstr "ÐºÐ²Ð°Ð»Ð¸Ñ„Ð¸Ñ†Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ „%s“ е неправилен" + +#: awkgram.y:6746 +#, c-format +msgid "" +"identifier `%s': namespace separator can only appear once in a qualified name" +msgstr "" +"идентификатор „%s“: разделителÑÑ‚ за проÑтранÑтво от имена може да Ñе ползва " +"Ñамо веднъж в квалифицирано име" + +#: awkgram.y:6795 awkgram.y:6846 +#, c-format +msgid "using reserved identifier `%s' as a namespace is not allowed" +msgstr "" +"резервираниÑÑ‚ идентификатор „%s“ не трÑбва да Ñе ползва като проÑтранÑтво от " +"имена" + +#: awkgram.y:6802 awkgram.y:6812 +#, c-format +msgid "" +"using reserved identifier `%s' as second component of a qualified name is " +"not allowed" +msgstr "" +"резервираниÑÑ‚ идентификатор „%s“ не трÑбва да Ñе ползва като втора чаÑÑ‚ от " +"квалифицирано име" + +#: awkgram.y:6830 +msgid "@namespace is a gawk extension" +msgstr "„@namespace“ е разширение на gawk" + +#: awkgram.y:6837 +#, c-format +msgid "namespace name `%s' must meet identifier naming rules" +msgstr "" +"името на проÑтранÑтво от имена „%s“ трÑбва да Ñпазва правилата за " +"идентификатор" + +#: builtin.c:144 +#, c-format +msgid "%s to \"%s\" failed: %s" +msgstr "%s към „%s“ не уÑпÑ: %s" + +#: builtin.c:148 +msgid "standard output" +msgstr "Ñтандартен изход" + +#: builtin.c:149 +msgid "standard error" +msgstr "Ñтандартна грешка" + +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 +#, c-format +msgid "%s: received non-numeric argument" +msgstr "%s: очаква Ñе нечиÑлов аргумент" + +#: builtin.c:169 +#, c-format +msgid "exp: argument %g is out of range" +msgstr "exp: аргументът %g е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: builtin.c:246 +#, c-format +msgid "fflush: cannot flush: pipe `%.*s' opened for reading, not writing" +msgstr "" +"fflush: буферите не може да Ñе изчиÑÑ‚ÑÑ‚ — програмниÑÑ‚ канал „%.*s“ е отворен " +"за четене, а не за запиÑ" + +#: builtin.c:249 +#, c-format +msgid "fflush: cannot flush: file `%.*s' opened for reading, not writing" +msgstr "" +"fflush: буферите не може да Ñе изчиÑÑ‚ÑÑ‚ — файлът „%.*s“ е отворен за четене, " +"а не за запиÑ" + +#: builtin.c:260 +#, c-format +msgid "fflush: cannot flush file `%.*s': %s" +msgstr "fflush: буферите към файла „%.*s“ не може да Ñе изчиÑÑ‚ÑÑ‚: %s" + +#: builtin.c:265 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%.*s' has closed write end" +msgstr "" +"fflush: буферите не може да Ñе изчиÑÑ‚ÑÑ‚ — Ñтраната за Ð·Ð°Ð¿Ð¸Ñ Ð² двупоÑочниÑÑ‚ " +"програмен канал „%.*s“ е затворена" + +#: builtin.c:271 +#, c-format +msgid "fflush: `%.*s' is not an open file, pipe or co-process" +msgstr "" +"fflush: „%.*s“ не е нито отворен файл, нито програмен канал, нито копроцеÑ" + +#: builtin.c:378 builtin.c:2023 +#, c-format +msgid "%s: received non-string first argument" +msgstr "%s: първиÑÑ‚ получен аргумент трÑбва да е низ" + +#: builtin.c:380 +#, c-format +msgid "%s: received non-string second argument" +msgstr "%s: вториÑÑ‚ получен аргумент трÑбва да е низ" + +#: builtin.c:532 +msgid "length: received array argument" +msgstr "length: получен е аргумент-маÑив" + +#: builtin.c:535 +msgid "`length(array)' is a gawk extension" +msgstr "„length(маÑив)“ е разширение на gawk" + +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 +#, c-format +msgid "%s: received non-string argument" +msgstr "%s: получен е аргумент, който не е низ" + +#: builtin.c:586 builtin.c:1790 +#, c-format +msgid "%s: received negative argument %g" +msgstr "%s: получен е аргумент, който е отрицателно чиÑло, а не трÑбва: %g" + +#: builtin.c:791 builtin.c:796 builtin.c:950 +msgid "fatal: must use `count$' on all formats or none" +msgstr "" +"ФÐТÐЛÐРГРЕШКÐ: „count$“ трÑбва да Ñе ползва или за вÑички формати, или за " +"никои" + +#: builtin.c:869 +#, c-format +msgid "field width is ignored for `%%' specifier" +msgstr "" +"дължината на полето нÑма значение при ползването на ÑпецификациÑта „%%“" + +#: builtin.c:871 +#, c-format +msgid "precision is ignored for `%%' specifier" +msgstr "точноÑтта нÑма значение при ползването на ÑпецификациÑта „%%“" + +#: builtin.c:873 +#, c-format +msgid "field width and precision are ignored for `%%' specifier" +msgstr "" +"дължината на полето и точноÑтта нÑмат значение при ползването на " +"ÑпецификациÑта „%%“" + +#: builtin.c:924 +msgid "fatal: `$' is not permitted in awk formats" +msgstr "ФÐТÐЛÐРГРЕШКÐ: знакът „$“ не е позволен във форматите на awk" + +#: builtin.c:933 +msgid "fatal: argument index with `$' must be > 0" +msgstr "" +"ФÐТÐЛÐРГРЕШКÐ: аргументът-Ð¸Ð½Ð´ÐµÐºÑ ÐºÑŠÐ¼ „$“ трÑбва да е Ñтрого положителен" + +#: builtin.c:937 +#, c-format +msgid "" +"fatal: argument index %ld greater than total number of supplied arguments" +msgstr "" +"ФÐТÐЛÐРГРЕШКÐ: индекÑÑŠÑ‚ за аргумент %ld е по-голÑм от Ð¾Ð±Ñ‰Ð¸Ñ Ð±Ñ€Ð¾Ð¹ подадени " +"аргументи" + +#: builtin.c:941 +msgid "fatal: `$' not permitted after period in format" +msgstr "ФÐТÐЛÐРГРЕШКÐ: знакът „$“ не е позволен Ñлед точка във формат" + +#: builtin.c:960 +msgid "fatal: no `$' supplied for positional field width or precision" +msgstr "" +"ФÐТÐЛÐРГРЕШКÐ: не е указан „$“ за поле по Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ñ Ð´ÑŠÐ»Ð¶Ð¸Ð½Ð° или точноÑÑ‚" + +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "знакът „%c“ е безÑмиÑлен във форматите на awk и Ñе преÑкача" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "" +"ФÐТÐЛÐРГРЕШКÐ: знакът „%c“ не е позволен във форматите на awk по POSIX" + +#: builtin.c:1070 +#, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: ÑтойноÑтта %g е прекалено голÑма за форма̀та „%%c“" + +#: builtin.c:1083 +#, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: ÑтойноÑтта %g не е правилен широк знак" + +#: builtin.c:1475 +#, c-format +msgid "[s]printf: value %g is out of range for `%%%c' format" +msgstr "[s]printf: ÑтойноÑтта %g извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ за „%%%c“" + +#: builtin.c:1483 +#, c-format +msgid "[s]printf: value %s is out of range for `%%%c' format" +msgstr "[s]printf: ÑтойноÑтта %s извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ за „%%%c“" + +#: builtin.c:1508 +#, c-format +msgid "%%%c format is POSIX standard but not portable to other awks" +msgstr "форматът „%%%c“ е в Ñтандарта POSIX, но не Ñе поддържа навÑÑкъде" + +#: builtin.c:1619 +#, c-format +msgid "ignoring unknown format specifier character `%c': no argument converted" +msgstr "" +"преÑкачане на Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ñ Ð·Ð½Ð°Ðº за форматиране „%c“: никой аргумент не е покрит" + +#: builtin.c:1624 +msgid "fatal: not enough arguments to satisfy format string" +msgstr "ФÐТÐЛÐРГРЕШКИ: нÑма доÑтатъчно аргументи за Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð½Ð¸Ð·" + +#: builtin.c:1626 +msgid "^ ran out for this one" +msgstr "↑ не работи за този" + +#: builtin.c:1633 +msgid "[s]printf: format specifier does not have control letter" +msgstr "[s]printf: липÑва контролна буква във форматиращата комбинациÑ" + +#: builtin.c:1636 +msgid "too many arguments supplied for format string" +msgstr "прекалено много аргументи към Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð½Ð¸Ð·" + +#: builtin.c:1696 +msgid "sprintf: no arguments" +msgstr "sprintf: липÑват аргументи" + +#: builtin.c:1719 builtin.c:1730 +msgid "printf: no arguments" +msgstr "printf: липÑват аргументи" + +#: builtin.c:1745 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" +"printf: опит за пиÑане към Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð·Ð° Ð·Ð°Ð¿Ð¸Ñ ÐºÑ€Ð°Ð¹ на двупоÑочен програмен " +"канал" + +#: builtin.c:1821 +#, c-format +msgid "substr: length %g is not >= 1" +msgstr "substr: дължината %g трÑбва да е >= 1" + +#: builtin.c:1823 +#, c-format +msgid "substr: length %g is not >= 0" +msgstr "substr: дължината %g трÑбва да е >= 0" + +#: builtin.c:1837 +#, c-format +msgid "substr: non-integer length %g will be truncated" +msgstr "substr: дължината %g, коÑто не е цÑло чиÑло, ще бъде отрÑзана" + +#: builtin.c:1842 +#, c-format +msgid "substr: length %g too big for string indexing, truncating to %g" +msgstr "" +"substr: дължината %g е прекалено голÑма за индекÑиране на низ, Ñ‚Ñ Ñ‰Ðµ бъде " +"отрÑзана до %g" + +#: builtin.c:1854 +#, c-format +msgid "substr: start index %g is invalid, using 1" +msgstr "substr: началниÑÑ‚ Ð¸Ð½Ð´ÐµÐºÑ %g е неправилен, ще Ñе ползва 1" + +#: builtin.c:1859 +#, c-format +msgid "substr: non-integer start index %g will be truncated" +msgstr "substr: началниÑÑ‚ Ð¸Ð½Ð´ÐµÐºÑ %g, който не е цÑло чиÑло, ще бъде отрÑзан" + +#: builtin.c:1882 +msgid "substr: source string is zero length" +msgstr "substr: изходниÑÑ‚ низ е Ñ Ð½ÑƒÐ»ÐµÐ²Ð° дължина" + +#: builtin.c:1896 +#, c-format +msgid "substr: start index %g is past end of string" +msgstr "substr: началниÑÑ‚ Ð¸Ð½Ð´ÐµÐºÑ %g е Ñлед ÐºÑ€Ð°Ñ Ð½Ð° низа" + +#: builtin.c:1904 +#, c-format +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: дължината %g при начален Ð¸Ð½Ð´ÐµÐºÑ %g е по-голÑма от дължината на " +"Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ (%lu)" + +#: builtin.c:1977 +msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" +msgstr "" +"strftime: ÑтойноÑтта за форматиране в PROCINFO[\"strftime\"] е от цифров вид" + +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 +#, c-format +msgid "%s: received non-numeric second argument" +msgstr "%s: вториÑÑ‚ получен аргумент трÑбва да е чиÑло" + +#: builtin.c:2007 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "" +"strftime: вториÑÑ‚ аргумент е или по-малък от 0, или прекалено голÑм за time_t" + +#: builtin.c:2014 +msgid "strftime: second argument out of range for time_t" +msgstr "" +"strftime: вториÑÑ‚ аргумент е извън диапазона на позволени ÑтойноÑти за time_t" + +#: builtin.c:2030 +msgid "strftime: received empty format string" +msgstr "strftime: получен е празен форматиращ низ" + +#: builtin.c:2132 +msgid "mktime: at least one of the values is out of the default range" +msgstr "" +"mktime: поне една от величините е извън ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ на позволени " +"ÑтойноÑти" + +#: builtin.c:2168 +msgid "'system' function not allowed in sandbox mode" +msgstr "в безопаÑен режим функциÑта „system“ е изключена" + +#: builtin.c:2242 builtin.c:2317 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" +"print: опит за пиÑане към Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð·Ð° Ð·Ð°Ð¿Ð¸Ñ ÐºÑ€Ð°Ð¹ на двупоÑочен програмен " +"канал" + +#: builtin.c:2340 +#, c-format +msgid "reference to uninitialized field `$%d'" +msgstr "указател към неинициализирано поле „$%d“" + +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 +#, c-format +msgid "%s: received non-numeric first argument" +msgstr "%s: първиÑÑ‚ аргумент трÑбва да е чиÑлова ÑтойноÑÑ‚" + +#: builtin.c:2671 +msgid "match: third argument is not an array" +msgstr "match: третиÑÑ‚ аргумент трÑбва да е маÑив" + +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s: „%s“ не може да Ñе ползва като трети аргумент" + +#: builtin.c:2916 +#, c-format +msgid "gensub: third argument `%.*s' treated as 1" +msgstr "gensub: третиÑÑ‚ аргумент „%.*s“ Ñе приема за 1" + +#: builtin.c:3267 +#, c-format +msgid "%s: can be called indirectly only with two arguments" +msgstr "%s: недиректно извикване е възможно Ñамо Ñ Ð´Ð²Ð° аргумента" + +#: builtin.c:3390 +#, c-format +msgid "indirect call to %s requires at least two arguments" +msgstr "недиректното извикване на „%s“ изиÑква поне два аргумента" + +#: builtin.c:3465 +#, c-format +msgid "lshift(%f, %f): negative values are not allowed" +msgstr "lshift(%f, %f): не Ñа позволени отрицателни ÑтойноÑти" + +#: builtin.c:3469 +#, c-format +msgid "lshift(%f, %f): fractional values will be truncated" +msgstr "lshift(%f, %f): деÑетичните дроби ще бъдат отрÑзани до цели ÑтойноÑти" + +#: builtin.c:3471 +#, c-format +msgid "lshift(%f, %f): too large shift value will give strange results" +msgstr "" +"lshift(%f, %f): прекалено големите ÑтойноÑти за побитово измеÑтване дават " +"Ñтранни резултати" + +#: builtin.c:3504 +#, c-format +msgid "rshift(%f, %f): negative values are not allowed" +msgstr "rshift(%f, %f): не Ñа позволени отрицателни ÑтойноÑти" + +#: builtin.c:3508 +#, c-format +msgid "rshift(%f, %f): fractional values will be truncated" +msgstr "rshift(%f, %f): деÑетичните дроби ще бъдат отрÑзани до цели ÑтойноÑти" + +#: builtin.c:3510 +#, c-format +msgid "rshift(%f, %f): too large shift value will give strange results" +msgstr "" +"rshift(%f, %f): прекалено големите ÑтойноÑти за побитово измеÑтване дават " +"Ñтранни резултати" + +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 +#, c-format +msgid "%s: called with less than two arguments" +msgstr "%s: извикана без или Ñ ÐµÐ´Ð¸Ð½ аргумент" + +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 +#, c-format +msgid "%s: argument %d is non-numeric" +msgstr "%s: аргумент %d трÑбва да е чиÑло" + +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 +#, c-format +msgid "%s: argument %d negative value %g is not allowed" +msgstr "%s: аргумент %d не приема отрицателни ÑтойноÑти като %g" + +#: builtin.c:3632 +#, c-format +msgid "compl(%f): negative value is not allowed" +msgstr "compl(%f): отрицателни ÑтойноÑти не Ñе приемат" + +#: builtin.c:3635 +#, c-format +msgid "compl(%f): fractional value will be truncated" +msgstr "compl(%f): деÑетичните дроби ще бъдат отрÑзани до цели ÑтойноÑти" + +#: builtin.c:3821 +#, c-format +msgid "dcgettext: `%s' is not a valid locale category" +msgstr "dcgettext: „%s“ не е поддържана ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸" + +#: builtin.c:4048 mpfr.c:1261 +msgid "intdiv: third argument is not an array" +msgstr "intdiv: третиÑÑ‚ аргумент трÑбва да е маÑив" + +#: builtin.c:4067 mpfr.c:1310 +msgid "intdiv: division by zero attempted" +msgstr "intdiv: опит за делене на нула" + +#: builtin.c:4106 +msgid "typeof: second argument is not an array" +msgstr "typeof: вториÑÑ‚ аргумент трÑбва да е маÑив" + +#: builtin.c:4178 +#, c-format +msgid "" +"typeof detected invalid flags combination `%s'; please file a bug report" +msgstr "" +"„typeof“ заÑече неправилна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ флагове „%s“. Молим да докладвате " +"тази грешка" + +#: builtin.c:4198 +#, c-format +msgid "typeof: invalid argument type `%s'" +msgstr "typeof: неправилен вид аргумент „%s“" + +#: builtin.c:4202 +#, c-format +msgid "typeof: unknown argument type `%s'" +msgstr "typeof: непознат вид аргумент „%s“" + +#: cint_array.c:1268 cint_array.c:1296 +#, c-format +msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" +msgstr "в безопаÑен режим не може да Ñе добави нов файл (%.*s) към ARGV" + +#: command.y:228 +#, c-format +msgid "Type (g)awk statement(s). End with the command `end'\n" +msgstr "Въведете изрази на (g)awk. Завършете командата Ñ â€žend“\n" + +#: command.y:292 +#, c-format +msgid "invalid frame number: %d" +msgstr "неправилен номер на рамка: %d" + +#: command.y:298 +#, c-format +msgid "info: invalid option - `%s'" +msgstr "info: неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€” „%s“" + +#: command.y:324 +#, c-format +msgid "source: `%s': already sourced" +msgstr "source: „%s“: вече е вмъкнат" + +#: command.y:329 +#, c-format +msgid "save: `%s': command not permitted" +msgstr "save: „%s“: командата не е позволена" + +#: command.y:342 +msgid "cannot use command `commands' for breakpoint/watchpoint commands" +msgstr "" +"командата „commands“ не може да Ñе използва за точки за прекъÑване или " +"наблюдение" + +#: command.y:344 +msgid "no breakpoint/watchpoint has been set yet" +msgstr "не Ñа зададени точки за прекъÑване или наблюдение" + +#: command.y:346 +msgid "invalid breakpoint/watchpoint number" +msgstr "неправилен номер на точка за прекъÑване или наблюдение" + +#: command.y:351 +#, c-format +msgid "Type commands for when %s %d is hit, one per line.\n" +msgstr "" +"Въведете команди за изпълнение, по една на ред, при доÑтигането на %s %d.\n" + +#: command.y:353 +#, c-format +msgid "End with the command `end'\n" +msgstr "Завършете командата Ñ â€žend“\n" + +#: command.y:360 +msgid "`end' valid only in command `commands' or `eval'" +msgstr "командата „end“ може Ñа Ñе ползва Ñамо в командите „commands“ и „eval“" + +#: command.y:370 +msgid "`silent' valid only in command `commands'" +msgstr "командата „silent“ може Ñа Ñе ползва Ñамо в командата „commands“" + +#: command.y:376 +#, c-format +msgid "trace: invalid option - `%s'" +msgstr "trace: неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€” „%s“" + +#: command.y:390 +msgid "condition: invalid breakpoint/watchpoint number" +msgstr "condition: неправилен номер на точка за прекъÑване или наблюдение" + +#: command.y:452 +msgid "argument not a string" +msgstr "аргументът трÑбва да е низ" + +#: command.y:462 command.y:467 +#, c-format +msgid "option: invalid parameter - `%s'" +msgstr "option: неправилен аргумент — „%s“" + +#: command.y:477 +#, c-format +msgid "no such function - `%s'" +msgstr "нÑма Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¸Ð¼Ðµ „%s“" + +#: command.y:534 +#, c-format +msgid "enable: invalid option - `%s'" +msgstr "enable: неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€” „%s“" + +#: command.y:600 +#, c-format +msgid "invalid range specification: %d - %d" +msgstr "неправилен диапазон: %d - %d" + +#: command.y:662 +msgid "non-numeric value for field number" +msgstr "нечиÑлова ÑтойноÑÑ‚ за номер на поле" + +#: command.y:683 command.y:690 +msgid "non-numeric value found, numeric expected" +msgstr "номерът на поле не приема нечиÑлови ÑтойноÑти" + +#: command.y:715 command.y:721 +msgid "non-zero integer value" +msgstr "цÑло чиÑло над 0" + +#: command.y:820 +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" +msgstr "" +"backtrace [БРОЙ] — извеждане на ÑÑŠÑтоÑнието на този БРОЙ рамки на изпълнение " +"най-отгоре на Ñтека (или най-отдолу, ако БРОÑÑ‚ < 0)" + +#: command.y:822 +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location" +msgstr "" +"break [[ИМЕ_ÐÐ_ФÐЙЛ:]РЕД|ФУÐКЦИЯ] — задаване на точки на прекъÑване на " +"зададеното мÑÑто" + +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" +msgstr "" +"clear [[ИМЕ_ÐÐ_ФÐЙЛ:]РЕД|ФУÐКЦИЯ] — изтриване на вече зададени точки на " +"прекъÑване" + +#: command.y:826 +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit" +msgstr "" +"commands [ÐОМЕР] — начало на ÑпиÑък Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ за изпълнение при това " +"доÑтигане на точката за прекъÑване или наблюдение" + +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" +msgstr "" +"condition ÐОМЕР [ИЗРÐЗ] — задаване или изчиÑтване на уÑловие при доÑтигане " +"на точка за прекъÑване или наблюдение" + +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [БРОЙ] — продължаване на изпълнението на траÑираната програма" + +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "" +"delete [ТОЧКÐ_ÐÐ_ПРЕКЪСВÐÐЕ…] [ОБХВÐТ] — изтриване на зададените точки на " +"прекъÑване" + +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" +msgstr "" +"disable [ТОЧКÐ_ÐÐ_ПРЕКЪСВÐÐЕ…] [ОБХВÐТ] — изключване на зададените точки на " +"прекъÑване" + +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" +msgstr "" +"display [ПРОМЕÐЛИВÐ] — извеждане на ÑтойноÑтта на променливата при вÑÑко " +"Ñпиране на програмата" + +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [БРОЙ] — премеÑтване Ñ Ñ‚Ð¾Ð·Ð¸ БРОЙ рамки надолу в Ñтека" + +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" +msgstr "" +"dump [ИМЕ_ÐÐ_ФÐЙЛ] — извеждане на инÑтрукциите във файл или на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ " +"изход" + +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" +msgstr "" +"enable [once|del] [ТОЧКÐ_ÐÐ_ПРЕКЪСВÐÐЕ…] [ОБХВÐТ] — включване на зададените " +"точки на прекъÑване" + +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end — завършване на ÑпиÑък на команди или изрази на awk" + +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "" +"eval ИЗРÐЗ|[ПРОМЕÐЛИВÐ_1, ПРОМЕÐЛИВÐ_2, …] — изчиÑлÑване на изрази на awk" + +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit — (Ñъщото като „quit“) изход от дебъгера" + +#: command.y:850 +msgid "finish - execute until selected stack frame returns" +msgstr "finish — изпълнение до приключване на изпълнението на текущата рамка" + +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "" +"frame [ÐОМЕР] — избор и отпечатване на рамката за изпълнение Ñ Ñ‚Ð¾Ð·Ð¸ ÐОМЕР" + +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" +msgstr "" +"help [КОМÐÐДÐ] — извеждане на ÑпиÑъка Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ или обÑÑнение за КОМÐÐДÐта" + +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" +msgstr "ignore N БРОЙ — точка на прекъÑване N да Ñе преÑкочи този БРОЙ пъти" + +#: command.y:858 +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch" +msgstr "" +"info ТЕМР— source|sources|variables|functions|break|frame|args|locals|" +"display|watch" + +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" +msgstr "" +"list [-|+|[ИМЕ_ÐÐ_ФÐЙЛ:]ÐОМЕР_ÐÐ_РЕД|ФУÐКЦИЯ|ОБХВÐТ] — извеждане на " +"указаните редове" + +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" +msgstr "" +"next [БРОЙ] — траÑиране на програмата като извикваниÑта на функции Ñа една " +"Ñтъпка" + +#: command.y:864 +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" +msgstr "" +"nexti [БРОЙ] — изпълнение на този брой Ñтъпки от програмата като " +"извикваниÑта на функции Ñа една Ñтъпка" + +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [ИМЕ[=СТОЙÐОСТ]] — задаване или извеждане на Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° дебъгера" + +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "" +"print ПРОМЕÐЛИВР[ПРОМЕÐЛИВÐ] — извеждане на ÑтойноÑтта на променлива или " +"маÑив" + +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf ФОРМÐТ, [ÐРГУМЕÐТ], … — форматиран изход" + +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit — изход от дебъгера" + +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" +msgstr "" +"return [ÐОМЕР] — рамката за изпълнение Ñ Ñ‚Ð¾Ð·Ð¸ номер да Ñе върне към " +"извикалата Ñ" + +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run — (наново) начало на изпълнение на програма" + +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save ФÐЙЛ — запазване на командите от ÑеÑиÑта в този ФÐЙЛ" + +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" +msgstr "" +"set ПРОМЕÐЛИВР= СТОЙÐОСТ — задаване на СТОЙÐОСТ на Ñкаларна ПРОМЕÐЛИВÐ" + +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" +msgstr "" +"silent — без обичайните ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ Ñпиране при точка за прекъÑване или " +"наблюдение" + +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source ФÐЙЛ — изпълнение на командите в ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¤ÐЙЛ" + +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" +msgstr "" +"step [БРОЙ] — изпълнение на този брой Ñтъпки на програмата или до доÑтигане " +"на различен ред код" + +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [БРОЙ] — изпълнение на този брой Ñтъпки (или 1) на програмата" + +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "" +"tbreak [[ИМЕ_ÐÐ_ФÐЙЛ:]РЕД|ФУÐКЦИЯ] — задаване на временна точка на прекъÑване" + +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off — дали инÑтрукциите да Ñе извеждат преди изпълнението им" + +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" +msgstr "" +"undisplay [ПРОМЕÐЛИВÐ] — без извеждане на ÑтойноÑтта на ПРОМЕÐЛИВÐта при " +"вÑÑко Ñпиране на програмата" + +#: command.y:898 +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame" +msgstr "" +"until [[ИМЕ_ÐÐ_ФÐЙЛ:]РЕД|ФУÐКЦИЯ] — изпълнение докато програмата Ñтигне " +"различен ред или този РЕД в текущата рамка на изпълнение" + +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [ÐОМЕР] — изваждане на променлива/и от ÑпиÑъка за наблюдение" + +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [БРОЙ] — премеÑтване Ñ Ñ‚Ð¾Ð·Ð¸ БРОЙ рамки нагоре в Ñтека" + +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch ПРОМЕÐЛИВР— задаване на точка за наблюдение на променлива" + +#: command.y:906 +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames" +msgstr "" +"where [БРОЙ] — (Ñъщото като backtrace) извеждане на ÑÑŠÑтоÑнието на този БРОЙ " +"рамки на изпълнение най-отгоре на Ñтека (или най-отдолу, ако БРОÑÑ‚ < 0)" + +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 +#, c-format +msgid "error: " +msgstr "грешка:" + +#: command.y:1061 +#, c-format +msgid "cannot read command: %s\n" +msgstr "командата не може да Ñе прочете: %s\n" + +#: command.y:1075 +#, c-format +msgid "cannot read command: %s" +msgstr "командата не може да Ñе прочете: %s" + +#: command.y:1126 +msgid "invalid character in command" +msgstr "неправилен знак в команда" + +#: command.y:1162 +#, c-format +msgid "unknown command - `%.*s', try help" +msgstr "неизвеÑтна команда — „%.*s“, проверете ръководÑтвото" + +#: command.y:1232 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.y:1294 +msgid "invalid character" +msgstr "неправилeн знак" + +#: command.y:1498 +#, c-format +msgid "undefined command: %s\n" +msgstr "недефинирана команда: %s\n" + +#: debug.c:257 +msgid "set or show the number of lines to keep in history file" +msgstr "" +"задаване или извеждане на Ð±Ñ€Ð¾Ñ Ñ€ÐµÐ´Ð¾Ð²Ðµ, които да Ñе държат във файла Ñ " +"иÑториÑта" + +#: debug.c:259 +msgid "set or show the list command window size" +msgstr "задаване или извеждане на размера на прозореца за извеждане на ÑпиÑъка" + +#: debug.c:261 +msgid "set or show gawk output file" +msgstr "задаване или извеждане на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» на gawk" + +#: debug.c:263 +msgid "set or show debugger prompt" +msgstr "задаване или показване на началото на реда на дебъгера" + +#: debug.c:265 +msgid "(un)set or show saving of command history (value=on|off)" +msgstr "" +"задаване, изтриване или извеждане на ÑÑŠÑтоÑнието на запазването на иÑториÑта " +"на командите (СТОЙÐОСТ=on|off)" + +#: debug.c:267 +msgid "(un)set or show saving of options (value=on|off)" +msgstr "" +"задаване, изтриване или извеждане на ÑÑŠÑтоÑнието на опциите (СТОЙÐОСТ=on|off)" + +#: debug.c:269 +msgid "(un)set or show instruction tracing (value=on|off)" +msgstr "" +"задаване, изтриване или извеждане на траÑирането на инÑтрукции (СТОЙÐОСТ=on|" +"off)" + +#: debug.c:358 +msgid "program not running" +msgstr "програмата не Ñе изпълнÑва" + +#: debug.c:475 +#, c-format +msgid "source file `%s' is empty.\n" +msgstr "празен файл Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код „%s“.\n" + +#: debug.c:502 +msgid "no current source file" +msgstr "нÑма текущ файл Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код" + +#: debug.c:527 +#, c-format +msgid "cannot find source file named `%s': %s" +msgstr "файлът Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код „%s“ липÑва: %s" + +#: debug.c:551 +#, c-format +msgid "warning: source file `%s' modified since program compilation.\n" +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: файлът Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код „%s“ е променÑн Ñлед компилирането на " +"програмата.\n" + +#: debug.c:573 +#, c-format +msgid "line number %d out of range; `%s' has %d lines" +msgstr "номерът на ред %d е извън диапазона: „%s“ има %d реда" + +#: debug.c:633 +#, c-format +msgid "unexpected eof while reading file `%s', line %d" +msgstr "неочакван край на файл при прочитането на „%s“, ред %d" + +#: debug.c:642 +#, c-format +msgid "source file `%s' modified since start of program execution" +msgstr "" +"файлът Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код „%s“ е променÑн Ñлед началото на изпълнението на " +"програмата." + +#: debug.c:754 +#, c-format +msgid "Current source file: %s\n" +msgstr "Текущ файл Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код: „%s“\n" + +#: debug.c:755 +#, c-format +msgid "Number of lines: %d\n" +msgstr "Брой редове: %d\n" + +#: debug.c:762 +#, c-format +msgid "Source file (lines): %s (%d)\n" +msgstr "Файл Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код (редове): %s (%d)\n" + +#: debug.c:776 +msgid "" +"Number Disp Enabled Location\n" +"\n" +msgstr "" +"Ред Изв. Включ. МÑÑто\n" +"\n" + +#: debug.c:787 +#, c-format +msgid "\tnumber of hits = %ld\n" +msgstr " брой Ð¿Ð¾Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ = %ld\n" + +#: debug.c:789 +#, c-format +msgid "\tignore next %ld hit(s)\n" +msgstr " преÑкачане на Ñледващите %ld попадениÑ\n" + +#: debug.c:791 debug.c:931 +#, c-format +msgid "\tstop condition: %s\n" +msgstr " уÑловие за край: %s\n" + +#: debug.c:793 debug.c:933 +msgid "\tcommands:\n" +msgstr " команди:\n" + +#: debug.c:815 +#, c-format +msgid "Current frame: " +msgstr "Текуща рамка: " + +#: debug.c:818 +#, c-format +msgid "Called by frame: " +msgstr "Извикана от рамка: " + +#: debug.c:822 +#, c-format +msgid "Caller of frame: " +msgstr "Извикал рамката: " + +#: debug.c:840 +#, c-format +msgid "None in main().\n" +msgstr "Ðищо в „main()“.\n" + +#: debug.c:870 +msgid "No arguments.\n" +msgstr "ÐÑма аргументи.\n" + +#: debug.c:871 +msgid "No locals.\n" +msgstr "ÐÑма локални променливи.\n" + +#: debug.c:879 +msgid "" +"All defined variables:\n" +"\n" +msgstr "" +"Ð’Ñички дефинирани променливи:\n" +"\n" + +#: debug.c:889 +msgid "" +"All defined functions:\n" +"\n" +msgstr "" +"Ð’Ñички дефинирани функции:\n" +"\n" + +#: debug.c:908 +msgid "" +"Auto-display variables:\n" +"\n" +msgstr "" +"Променливи за поÑтоÑнно извеждане:\n" +"\n" + +#: debug.c:911 +msgid "" +"Watch variables:\n" +"\n" +msgstr "" +"Променливи за оценка:\n" +"\n" + +#: debug.c:1051 +#, c-format +msgid "no symbol `%s' in current context\n" +msgstr "Ð’ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼Ð°Ñив нÑма Ñимвол „%s“\n" + +#: debug.c:1063 debug.c:1451 +#, c-format +msgid "`%s' is not an array\n" +msgstr "„%s“ трÑбва да е маÑив\n" + +#: debug.c:1077 +#, c-format +msgid "$%ld = uninitialized field\n" +msgstr "$%ld = неинициализирано поле\n" + +#: debug.c:1098 +#, c-format +msgid "array `%s' is empty\n" +msgstr "маÑивът „%s“ е празен\n" + +#: debug.c:1141 debug.c:1193 +#, c-format +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "[\"%.*s\"] не е в маÑива „%s“\n" + +#: debug.c:1197 +#, c-format +msgid "`%s[\"%.*s\"]' is not an array\n" +msgstr "„%s[\"%.*s\"]“ не е маÑив\n" + +#: debug.c:1258 debug.c:5115 +#, c-format +msgid "`%s' is not a scalar variable" +msgstr "„%s“: не е Ñкаларна променлива" + +#: debug.c:1281 debug.c:5145 +#, c-format +msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" +msgstr "опит за ползване на маÑива „%s[\"%.*s\"]“ в Ñкаларен контекÑÑ‚" + +#: debug.c:1304 debug.c:5156 +#, c-format +msgid "attempt to use scalar `%s[\"%.*s\"]' as array" +msgstr "опит за ползване на Ñкалара „%s[\"%.*s\"]“ като маÑив" + +#: debug.c:1447 +#, c-format +msgid "`%s' is a function" +msgstr "„%s“ е функциÑ" + +#: debug.c:1489 +#, c-format +msgid "watchpoint %d is unconditional\n" +msgstr "точката за наблюдение â„–%d не е уÑловна\n" + +#: debug.c:1523 +#, c-format +msgid "no display item numbered %ld" +msgstr "нÑма елемент за извеждане â„–%ld" + +#: debug.c:1526 +#, c-format +msgid "no watch item numbered %ld" +msgstr "нÑма елемент за наблюдение â„–%ld" + +#: debug.c:1552 +#, c-format +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: [\"%.*s\"] не е в маÑива „%s“\n" + +#: debug.c:1791 +msgid "attempt to use scalar value as array" +msgstr "опит за ползване на Ñкаларна ÑтойноÑÑ‚ като маÑив" + +#: debug.c:1882 +#, c-format +msgid "Watchpoint %d deleted because parameter is out of scope.\n" +msgstr "Точката за наблюдение â„–%d е изтрита, защото е извън обхват.\n" + +#: debug.c:1893 +#, c-format +msgid "Display %d deleted because parameter is out of scope.\n" +msgstr "Променливата за извеждане â„–%d е изтрита, защото е извън обхват.\n" + +#: debug.c:1926 +#, c-format +msgid " in file `%s', line %d\n" +msgstr "файл „%s“, ред %d\n" + +#: debug.c:1947 +#, c-format +msgid " at `%s':%d" +msgstr "при „%s“:%d" + +#: debug.c:1963 debug.c:2026 +#, c-format +msgid "#%ld\tin " +msgstr "â„–%ld в " + +#: debug.c:2000 +#, c-format +msgid "More stack frames follow ...\n" +msgstr "Следват още рамки от Ñтека…\n" + +#: debug.c:2043 +msgid "invalid frame number" +msgstr "неправилен номер на рамка" + +#: debug.c:2226 +#, c-format +msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" +msgstr "" +"Бележка: точка за прекъÑване â„–%d (включена, ще Ñе преÑкочи Ñледващите %ld " +"пъти), Ñъщо зададена на %s:%d" + +#: debug.c:2233 +#, c-format +msgid "Note: breakpoint %d (enabled), also set at %s:%d" +msgstr "Бележка: точка за прекъÑване â„–%d (включена), Ñъщо зададена на %s:%d" + +#: debug.c:2240 +#, c-format +msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" +msgstr "" +"Бележка: точка за прекъÑване â„–%d (изключена, ще Ñе преÑкочи Ñледващите %ld " +"пъти), Ñъщо зададена на %s:%d" + +#: debug.c:2247 +#, c-format +msgid "Note: breakpoint %d (disabled), also set at %s:%d" +msgstr "Бележка: точка за прекъÑване â„–%d (изключена), Ñъщо зададена на %s:%d" + +#: debug.c:2264 +#, c-format +msgid "Breakpoint %d set at file `%s', line %d\n" +msgstr "Зададена и точка за прекъÑване %d във файл „%s“, ред %d\n" + +#: debug.c:2366 +#, c-format +msgid "cannot set breakpoint in file `%s'\n" +msgstr "неуÑпешно задаване на точка за прекъÑване във файл „%s“\n" + +#: debug.c:2395 +#, c-format +msgid "line number %d in file `%s' is out of range" +msgstr "номерът на ред %d във файла „%s“ е извън диапазона" + +#: debug.c:2399 +#, c-format +msgid "internal error: cannot find rule\n" +msgstr "вътрешна грешка: правилото не може да бъде открито\n" + +#: debug.c:2401 +#, c-format +msgid "cannot set breakpoint at `%s':%d\n" +msgstr "неуÑпешно задаване на точка за прекъÑване във файл „%s“, ред %d\n" + +#: debug.c:2413 +#, c-format +msgid "cannot set breakpoint in function `%s'\n" +msgstr "неуÑпешно задаване на точка за прекъÑване във функциÑта „%s“\n" + +#: debug.c:2431 +#, c-format +msgid "breakpoint %d set at file `%s', line %d is unconditional\n" +msgstr "точката за прекъÑване %d във файл „%s“, ред %d не е уÑловна\n" + +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "номерът на ред %d във файла „%s“ е извън диапазона" + +#: debug.c:2536 debug.c:2558 +#, c-format +msgid "Deleted breakpoint %d" +msgstr "Изтрита точка за прекъÑване %d" + +#: debug.c:2542 +#, c-format +msgid "No breakpoint(s) at entry to function `%s'\n" +msgstr "ÐÑма точка на прекъÑване при влизане във функциÑта „%s“\n" + +#: debug.c:2569 +#, c-format +msgid "No breakpoint at file `%s', line #%d\n" +msgstr "ÐÑма точка за прекъÑване във файл „%s“, ред â„–%d\n" + +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 +msgid "invalid breakpoint number" +msgstr "неправилен номер на точка за прекъÑване" + +#: debug.c:2640 +msgid "Delete all breakpoints? (y or n) " +msgstr "Да Ñе изтриÑÑ‚ ли вÑички точки на прекъÑване? („y“ — да или „n“ — не) " + +#: debug.c:2641 debug.c:2951 debug.c:3004 +msgid "y" +msgstr "y" + +#: debug.c:2690 +#, c-format +msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" +msgstr "" +"Следващите %ld доÑÑ‚Ð¸Ð³Ð°Ð½Ð¸Ñ Ð½Ð° точката за прекъÑване â„–%d ще бъдат пропуÑнати.\n" + +#: debug.c:2694 +#, c-format +msgid "Will stop next time breakpoint %d is reached.\n" +msgstr "Спиране при Ñледващото доÑтигане на точката за прекъÑване â„–%d.\n" + +#: debug.c:2811 +#, c-format +msgid "Can only debug programs provided with the `-f' option.\n" +msgstr "Само програми подадени Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-f“ може да бъдат траÑирани.\n" + +#: debug.c:2936 +#, c-format +msgid "Failed to restart debugger" +msgstr "ÐеуÑпешно реÑтартиране на дебъгера" + +#: debug.c:2950 +msgid "Program already running. Restart from beginning (y/n)? " +msgstr "Програмата вече Ñе изпълнÑва. Да Ñе Ñтартира ли от началото (y/n)? " + +#: debug.c:2954 +#, c-format +msgid "Program not restarted\n" +msgstr "Програмата не е реÑтартирана\n" + +#: debug.c:2964 +#, c-format +msgid "error: cannot restart, operation not allowed\n" +msgstr "грешка: реÑтартирането е невъзможно, дейÑтвието не е позволено\n" + +#: debug.c:2970 +#, c-format +msgid "error (%s): cannot restart, ignoring rest of the commands\n" +msgstr "" +"грешка (%s): реÑтартирането е невъзможно, оÑтаналите дейÑÑ‚Ð²Ð¸Ñ Ñе преÑкачат\n" + +#: debug.c:2978 +#, c-format +msgid "Starting program:\n" +msgstr "Стартиране на програма:\n" + +#: debug.c:2988 +#, c-format +msgid "Program exited abnormally with exit value: %d\n" +msgstr "Програмата завърши Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ — изходен код: %d\n" + +#: debug.c:2989 +#, c-format +msgid "Program exited normally with exit value: %d\n" +msgstr "Програмата завърши уÑпешно — изходен код: %d\n" + +#: debug.c:3003 +msgid "The program is running. Exit anyway (y/n)? " +msgstr "Програмата вÑе още Ñе изпълнÑва. Да Ñе излезе ли от Ð½ÐµÑ (y/n)? " + +#: debug.c:3038 +#, c-format +msgid "Not stopped at any breakpoint; argument ignored.\n" +msgstr "При Ð½Ð¸ÐºÐ¾Ñ Ñ‚Ð¾Ñ‡ÐºÐ° на прекъÑване не Ñе Ñпира, аргументът Ñе преÑкача.\n" + +#: debug.c:3043 +#, c-format +msgid "invalid breakpoint number %d" +msgstr "неправилен â„–%d на точка за прекъÑване" + +#: debug.c:3048 +#, c-format +msgid "Will ignore next %ld crossings of breakpoint %d.\n" +msgstr "" +"Следващите %ld доÑÑ‚Ð¸Ð³Ð°Ð½Ð¸Ñ Ð½Ð° точката за прекъÑване â„–%d ще бъдат пропуÑнати.\n" + +#: debug.c:3235 +#, c-format +msgid "'finish' not meaningful in the outermost frame main()\n" +msgstr "" +"Командата „finish“ е безÑмиÑлена на нивото на оÑновната рамка на „main()“\n" + +#: debug.c:3240 +#, c-format +msgid "Run until return from " +msgstr "Изпълнение до излизане от " + +#: debug.c:3283 +#, c-format +msgid "'return' not meaningful in the outermost frame main()\n" +msgstr "" +"Командата „return“ е безÑмиÑлена на нивото на оÑновната рамка на „main()“\n" + +#: debug.c:3397 +#, c-format +msgid "cannot find specified location in function `%s'\n" +msgstr "указаното меÑтоположение не може да бъде открито във функциÑта „%s“\n" + +#: debug.c:3405 +#, c-format +msgid "invalid source line %d in file `%s'" +msgstr "неправилен номер на ред %d във файл „%s“" + +#: debug.c:3420 +#, c-format +msgid "cannot find specified location %d in file `%s'\n" +msgstr "указаното меÑтоположение %d във файл „%s“ не може да бъде открито\n" + +#: debug.c:3452 +#, c-format +msgid "element not in array\n" +msgstr "елементът не е в маÑива\n" + +#: debug.c:3452 +#, c-format +msgid "untyped variable\n" +msgstr "променлива без тип\n" + +#: debug.c:3494 +#, c-format +msgid "Stopping in %s ...\n" +msgstr "Спиране в %s…\n" + +#: debug.c:3571 +#, c-format +msgid "'finish' not meaningful with non-local jump '%s'\n" +msgstr "„finish“ не работи Ñ Ð½ÐµÐ»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ â€ž%s“\n" + +#: debug.c:3578 +#, c-format +msgid "'until' not meaningful with non-local jump '%s'\n" +msgstr "„until“ не работи Ñ Ð½ÐµÐ»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ â€ž%s“\n" + +#. TRANSLATORS: don't translate the 'q' inside the brackets. +#: debug.c:4335 +msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" +msgstr " ——————[Enter] за да продължите или [q] + [Enter] за изход——————" + +#: debug.c:5152 +#, c-format +msgid "[\"%.*s\"] not in array `%s'" +msgstr "[\"%.*s\"] не е в маÑив „%s“" + +#: debug.c:5358 +#, c-format +msgid "sending output to stdout\n" +msgstr "добавÑне на изхода към ÑтандартниÑ\n" + +#: debug.c:5398 +msgid "invalid number" +msgstr "грешно чиÑло" + +#: debug.c:5532 +#, c-format +msgid "`%s' not allowed in current context; statement ignored" +msgstr "Командата „%s“ не е позволена в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑÑ‚ и Ñе преÑкача" + +#: debug.c:5540 +msgid "`return' not allowed in current context; statement ignored" +msgstr "Командата „return“ не е позволена в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑÑ‚ и Ñе преÑкача" + +#: debug.c:5764 +#, c-format +msgid "no symbol `%s' in current context" +msgstr "в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼Ð°Ñив нÑма Ñимвол „%s“" + +#: eval.c:403 +#, c-format +msgid "unknown nodetype %d" +msgstr "непознат вид възел %d" + +#: eval.c:414 eval.c:430 +#, c-format +msgid "unknown opcode %d" +msgstr "непознат код на Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ %d" + +#: eval.c:427 +#, c-format +msgid "opcode %s not an operator or keyword" +msgstr "кодът на Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ â€ž%s“ не е нито команда, нито ключова дума" + +#: eval.c:485 +msgid "buffer overflow in genflags2str" +msgstr "препълване на буфера в „genflags2str“" + +#: eval.c:689 +#, c-format +msgid "" +"\n" +"\t# Function Call Stack:\n" +"\n" +msgstr "" +"\n" +" # Стек Ñ Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñта на функции:\n" +"\n" + +#: eval.c:715 +msgid "`IGNORECASE' is a gawk extension" +msgstr "„IGNORECASE“ е разширение на gawk" + +#: eval.c:736 +msgid "`BINMODE' is a gawk extension" +msgstr "„BINMODE“ е разширение на gawk" + +#: eval.c:793 +#, c-format +msgid "BINMODE value `%s' is invalid, treated as 3" +msgstr "неправилна ÑтойноÑÑ‚ за „BINMODE“: „%s“ — обработва Ñе като 3" + +#: eval.c:916 +#, c-format +msgid "bad `%sFMT' specification `%s'" +msgstr "неправилен указател на „%sFMT“ — „%s“" + +#: eval.c:986 +msgid "turning off `--lint' due to assignment to `LINT'" +msgstr "" +"опциÑта „--lint“ Ñе изключва, защото на променливата „LINT“ е приÑвоена " +"ÑтойноÑÑ‚" + +#: eval.c:1180 +#, c-format +msgid "reference to uninitialized argument `%s'" +msgstr "указател към неинициализиран аргумент „%s“" + +#: eval.c:1181 +#, c-format +msgid "reference to uninitialized variable `%s'" +msgstr "указател към неинициализирана променлива „%s“" + +#: eval.c:1199 +msgid "attempt to field reference from non-numeric value" +msgstr "опит за указател към поле от нечиÑлова ÑтойноÑÑ‚" + +#: eval.c:1201 +msgid "attempt to field reference from null string" +msgstr "опит за указател към поле от нулев низ" + +#: eval.c:1209 +#, c-format +msgid "attempt to access field %ld" +msgstr "опит за доÑтъп до поле %ld" + +#: eval.c:1218 +#, c-format +msgid "reference to uninitialized field `$%ld'" +msgstr "указател към неинициализирано поле „%ld“" + +#: eval.c:1282 +#, c-format +msgid "function `%s' called with more arguments than declared" +msgstr "функциÑта „%s“ е извикана Ñ Ð¿Ð¾Ð²ÐµÑ‡Ðµ аргументи от декларираното" + +#: eval.c:1486 +#, c-format +msgid "unwind_stack: unexpected type `%s'" +msgstr "unwind_stack: неочакван вид „%s“" + +#: eval.c:1579 +msgid "division by zero attempted in `/='" +msgstr "опит за делене на нула в „/=“" + +#: eval.c:1586 +#, c-format +msgid "division by zero attempted in `%%='" +msgstr "опит за делене на нула в „%%=“" + +#: ext.c:51 +msgid "extensions are not allowed in sandbox mode" +msgstr "в безопаÑен режим разширениÑта Ñа изключени" + +#: ext.c:54 +msgid "-l / @load are gawk extensions" +msgstr "„-l“/„@load“ Ñа Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° gawk" + +#: ext.c:57 +msgid "load_ext: received NULL lib_name" +msgstr "load_ext: получено е име на библиотека NULL" + +#: ext.c:60 +#, c-format +msgid "load_ext: cannot open library `%s': %s" +msgstr "load_ext: директориÑта „%s“ не може да Ñе отвори: %s" + +#: ext.c:66 +#, c-format +msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible': %s" +msgstr "" +"load_ext: библиотеката „%s“: не дефинира „plugin_is_GPL_compatible“: %s" + +#: ext.c:72 +#, c-format +msgid "load_ext: library `%s': cannot call function `%s': %s" +msgstr "" +"load_ext: библиотеката „%s“: функциÑта „%s“ не може да бъде извикана: %s" + +#: ext.c:76 +#, c-format +msgid "load_ext: library `%s' initialization routine `%s' failed" +msgstr "" +"load_ext: неуÑпешно изпълнение на инициализиращата Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%2$s“ на " +"библиотеката „%1$s“" + +#: ext.c:92 +msgid "make_builtin: missing function name" +msgstr "make_builtin: липÑва име на функциÑ" + +#: ext.c:100 ext.c:111 +#, c-format +msgid "make_builtin: cannot use gawk built-in `%s' as function name" +msgstr "" +"make_builtin: името на вградената Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“ не може да Ñе използва като " +"име на друга функциÑ" + +#: ext.c:109 +#, c-format +msgid "make_builtin: cannot use gawk built-in `%s' as namespace name" +msgstr "" +"make_builtin: името на вградената Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“ не може да Ñе използва като " +"име на проÑтранÑтво от имена" + +#: ext.c:126 +#, c-format +msgid "make_builtin: cannot redefine function `%s'" +msgstr "make_builtin: функциÑта „%s“ не може да Ñе предефинира" + +#: ext.c:130 +#, c-format +msgid "make_builtin: function `%s' already defined" +msgstr "make_builtin: функциÑта „%s“ вече е дефинирана" + +#: ext.c:134 +#, c-format +msgid "make_builtin: function name `%s' previously defined" +msgstr "make_builtin: името на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“ вече е дефинирано" + +#: ext.c:138 +#, c-format +msgid "make_builtin: negative argument count for function `%s'" +msgstr "" +"make_builtin: отрицателен брой аргументи за функциÑта „%s“, което е " +"неправилно" + +#: ext.c:214 +#, c-format +msgid "function `%s': argument #%d: attempt to use scalar as an array" +msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: аргумент â„–%d: опит за ползване на Ñкалар като маÑив" + +#: ext.c:218 +#, c-format +msgid "function `%s': argument #%d: attempt to use array as a scalar" +msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: аргумент â„–%d: опит за ползване на маÑив като Ñкалар" + +#: ext.c:232 +msgid "dynamic loading of libraries is not supported" +msgstr "динамичното зареждане на библиотеки не Ñе поддържа" + +#: extension/filefuncs.c:446 +#, c-format +msgid "stat: unable to read symbolic link `%s'" +msgstr "stat: неуÑпешно прочитане на Ñимволна връзка „%s“" + +#: extension/filefuncs.c:479 +msgid "stat: first argument is not a string" +msgstr "stat: първиÑÑ‚ аргумент трÑбва да е низ" + +#: extension/filefuncs.c:484 +msgid "stat: second argument is not an array" +msgstr "stat: вториÑÑ‚ аргумент трÑбва да е маÑив" + +#: extension/filefuncs.c:528 +msgid "stat: bad parameters" +msgstr "stat: неправилни аргументи" + +#: extension/filefuncs.c:594 +#, c-format +msgid "fts init: could not create variable %s" +msgstr "fts init: променливата „%s“ не може да Ñе Ñъздаде" + +#: extension/filefuncs.c:615 +msgid "fts is not supported on this system" +msgstr "fts не Ñе поддържа на тази ÑиÑтема" + +#: extension/filefuncs.c:634 +msgid "fill_stat_element: could not create array, out of memory" +msgstr "fill_stat_element: нÑма доÑтатъчно памет за Ñъздаването на маÑив" + +#: extension/filefuncs.c:643 +msgid "fill_stat_element: could not set element" +msgstr "fill_stat_element: елементът не може да Ñе зададе" + +#: extension/filefuncs.c:658 +msgid "fill_path_element: could not set element" +msgstr "fill_path_element: елементът не може да Ñе зададе" + +#: extension/filefuncs.c:674 +msgid "fill_error_element: could not set element" +msgstr "fill_error_element: елементът не може да Ñе зададе" + +#: extension/filefuncs.c:726 extension/filefuncs.c:773 +msgid "fts-process: could not create array" +msgstr "fts-process: маÑивът не може да Ñе Ñъздаде" + +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 +msgid "fts-process: could not set element" +msgstr "fts-process: елементът не може да Ñе зададе" + +#: extension/filefuncs.c:850 +msgid "fts: called with incorrect number of arguments, expecting 3" +msgstr "fts: неправилен брой аргументи — трÑбва да е 3" + +#: extension/filefuncs.c:853 +msgid "fts: first argument is not an array" +msgstr "fts: първиÑÑ‚ аргумент трÑбва да е маÑив" + +#: extension/filefuncs.c:859 +msgid "fts: second argument is not a number" +msgstr "fts: вториÑÑ‚ аргумент трÑбва да е чиÑло" + +#: extension/filefuncs.c:865 +msgid "fts: third argument is not an array" +msgstr "fts: третиÑÑ‚ аргумент трÑбва да е маÑив" + +#: extension/filefuncs.c:872 +msgid "fts: could not flatten array\n" +msgstr "fts: маÑивът не може да Ñе ÑплеÑка\n" + +#: extension/filefuncs.c:890 +msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." +msgstr "fts: неочакваниÑÑ‚ флаг „FTS_NOSTAT“ Ñе преÑкача." + +#: extension/fnmatch.c:120 +msgid "fnmatch: could not get first argument" +msgstr "fnmatch: първиÑÑ‚ аргумент не може да бъде получен" + +#: extension/fnmatch.c:125 +msgid "fnmatch: could not get second argument" +msgstr "fnmatch: вториÑÑ‚ аргумент не може да бъде получен" + +#: extension/fnmatch.c:130 +msgid "fnmatch: could not get third argument" +msgstr "fnmatch: третиÑÑ‚ аргумент не може да бъде получен" + +#: extension/fnmatch.c:143 +msgid "fnmatch is not implemented on this system\n" +msgstr "fnmatch липÑва на тази ÑиÑтема\n" + +#: extension/fnmatch.c:175 +msgid "fnmatch init: could not add FNM_NOMATCH variable" +msgstr "fnmatch init: променливата „FNM_NOMATCH“ не може да Ñе добави" + +#: extension/fnmatch.c:185 +#, c-format +msgid "fnmatch init: could not set array element %s" +msgstr "fnmatch init: eлементът от маÑив „%s“ не може да Ñе зададе" + +#: extension/fnmatch.c:195 +msgid "fnmatch init: could not install FNM array" +msgstr "fnmatch init: маÑивът FNM не може да Ñе инÑталира" + +#: extension/fork.c:92 +msgid "fork: PROCINFO is not an array!" +msgstr "fork: PROCINFO трÑбва да е маÑив" + +#: extension/inplace.c:131 +msgid "inplace::begin: in-place editing already active" +msgstr "inplace::begin: вече има редактиране на мÑÑто" + +#: extension/inplace.c:134 +#, c-format +msgid "inplace::begin: expects 2 arguments but called with %d" +msgstr "inplace::begin: подадени Ñа %d аргументи, а трÑбва за да 2" + +#: extension/inplace.c:137 +msgid "inplace::begin: cannot retrieve 1st argument as a string filename" +msgstr "inplace::begin: първиÑÑ‚ аргумент трÑбва да е низ — име на файл" + +#: extension/inplace.c:145 +#, c-format +msgid "inplace::begin: disabling in-place editing for invalid FILENAME `%s'" +msgstr "" +"inplace::begin: редактирането на мÑÑто Ñе изключва при неправилно " +"ИМЕ_ÐÐ_ФÐЙЛ: „%s“" + +#: extension/inplace.c:152 +#, c-format +msgid "inplace::begin: Cannot stat `%s' (%s)" +msgstr "" +"inplace::begin: не може да Ñе получи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° „%s“ чрез „stat“: %s" + +#: extension/inplace.c:159 +#, c-format +msgid "inplace::begin: `%s' is not a regular file" +msgstr "inplace::begin: „%s“ не е обикновен файл" + +#: extension/inplace.c:170 +#, c-format +msgid "inplace::begin: mkstemp(`%s') failed (%s)" +msgstr "inplace::begin: неуÑпешно изпълнение на mkstemp(„%s“): %s" + +#: extension/inplace.c:182 +#, c-format +msgid "inplace::begin: chmod failed (%s)" +msgstr "inplace::begin: неуÑпешно изпълнение на chmod: %s" + +#: extension/inplace.c:189 +#, c-format +msgid "inplace::begin: dup(stdout) failed (%s)" +msgstr "inplace::begin: неуÑпешно изпълнение на dup(stdout): %s" + +#: extension/inplace.c:192 +#, c-format +msgid "inplace::begin: dup2(%d, stdout) failed (%s)" +msgstr "inplace::begin: неуÑпешно изпълнение на dup2(%d, stdout): %s" + +#: extension/inplace.c:195 +#, c-format +msgid "inplace::begin: close(%d) failed (%s)" +msgstr "inplace::begin: неуÑпешно изпълнение на close(%d): %s" + +#: extension/inplace.c:211 +#, c-format +msgid "inplace::end: expects 2 arguments but called with %d" +msgstr "inplace::end: приема точно 2 аргумента, а не %d" + +#: extension/inplace.c:214 +msgid "inplace::end: cannot retrieve 1st argument as a string filename" +msgstr "inplace::end: първиÑÑ‚ аргумент трÑбва да е низ — име на файл" + +#: extension/inplace.c:221 +msgid "inplace::end: in-place editing not active" +msgstr "inplace::end: редактирането на мÑÑто не е включено" + +#: extension/inplace.c:227 +#, c-format +msgid "inplace::end: dup2(%d, stdout) failed (%s)" +msgstr "inplace::end: неуÑпешно изпълнение на dup2(%d, stdout): %s" + +#: extension/inplace.c:230 +#, c-format +msgid "inplace::end: close(%d) failed (%s)" +msgstr "inplace::end: неуÑпешно изпълнение на close(%d): %s" + +#: extension/inplace.c:234 +#, c-format +msgid "inplace::end: fsetpos(stdout) failed (%s)" +msgstr "inplace::end: неуÑпешно изпълнение на fsetpos(stdout): %s" + +#: extension/inplace.c:247 +#, c-format +msgid "inplace::end: link(`%s', `%s') failed (%s)" +msgstr "inplace::end: неуÑпешно изпълнение на link(„%s“, „%s“): %s" + +#: extension/inplace.c:257 +#, c-format +msgid "inplace::end: rename(`%s', `%s') failed (%s)" +msgstr "inplace::end: неуÑпешно изпълнение на rename(„%s“, „%s“): %s" + +#: extension/ordchr.c:72 +msgid "ord: first argument is not a string" +msgstr "ord: първиÑÑ‚ аргумент трÑбва да е низ" + +#: extension/ordchr.c:99 +msgid "chr: first argument is not a number" +msgstr "chr: първиÑÑ‚ аргумент трÑбва да е чиÑло" + +#: extension/readdir.c:277 +#, c-format +msgid "dir_take_control_of: opendir/fdopendir failed: %s" +msgstr "dir_take_control_of: неуÑпешно изпълнение на „opendir/fdopendir“: %s" + +#: extension/readfile.c:131 +msgid "readfile: called with wrong kind of argument" +msgstr "readfile: неправилен вид аргумент" + +#: extension/revoutput.c:127 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "revoutput: променливата „REVOUT“ не може да бъде инициализирана" + +#: extension/rwarray.c:119 +msgid "do_writea: first argument is not a string" +msgstr "do_writea: първиÑÑ‚ аргумент трÑбва да е низ" + +#: extension/rwarray.c:125 +msgid "do_writea: second argument is not an array" +msgstr "do_writea: вториÑÑ‚ аргумент трÑбва да е маÑив" + +#: extension/rwarray.c:172 extension/rwarray0.c:167 +msgid "write_array: could not flatten array" +msgstr "write_array: маÑивът не може да Ñе ÑплеÑка" + +#: extension/rwarray.c:188 extension/rwarray0.c:181 +msgid "write_array: could not release flattened array" +msgstr "write_array: ÑплеÑканиÑÑ‚ маÑив не може да Ñе оÑвободи" + +#: extension/rwarray.c:255 +#, c-format +msgid "array value has unknown type %d" +msgstr "ÑтойноÑтта на маÑива е от непознат вид %d" + +#: extension/rwarray.c:292 +msgid "do_reada: first argument is not a string" +msgstr "do_reada: първиÑÑ‚ аргумент трÑбва да е низ" + +#: extension/rwarray.c:298 +msgid "do_reada: second argument is not an array" +msgstr "do_reada: вториÑÑ‚ аргумент трÑбва да е маÑив" + +#: extension/rwarray.c:342 extension/rwarray0.c:317 +msgid "do_reada: clear_array failed" +msgstr "do_reada: неуÑпешно изпълнение на „clear_array“" + +#: extension/rwarray.c:379 extension/rwarray0.c:353 +msgid "read_array: set_array_element failed" +msgstr "read_array: неуÑпешно изпълнение на „set_array_element“" + +#: extension/rwarray.c:489 +#, c-format +msgid "treating recovered value with unknown type code %d as a string" +msgstr "" +"възÑтановената ÑтойноÑÑ‚ Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтен код за вид %d Ñе интерпретира като низ" + +#: extension/rwarray0.c:114 +msgid "do_writea: argument 0 is not a string" +msgstr "do_writea: нулевиÑÑ‚ аргумент трÑбва да е низ" + +#: extension/rwarray0.c:120 +msgid "do_writea: argument 1 is not an array" +msgstr "do_writea: първиÑÑ‚ аргумент трÑбва да е маÑив" + +#: extension/rwarray0.c:267 +msgid "do_reada: argument 0 is not a string" +msgstr "do_reada: нулевиÑÑ‚ аргумент трÑбва да е низ" + +#: extension/rwarray0.c:273 +msgid "do_reada: argument 1 is not an array" +msgstr "do_reada: първиÑÑ‚ аргумент трÑбва да е маÑив" + +#: extension/time.c:141 +msgid "gettimeofday: not supported on this platform" +msgstr "gettimeofday: не Ñе поддържа на тази ÑиÑтема" + +#: extension/time.c:162 +msgid "sleep: missing required numeric argument" +msgstr "sleep: чиÑловиÑÑ‚ аргумент е задължителен" + +#: extension/time.c:168 +msgid "sleep: argument is negative" +msgstr "sleep: аргументът трÑбва да е неотрицателен" + +#: extension/time.c:202 +msgid "sleep: not supported on this platform" +msgstr "sleep: не Ñе поддържа на тази ÑиÑтема" + +#: field.c:287 +msgid "input record too large" +msgstr "входниÑÑ‚ Ð·Ð°Ð¿Ð¸Ñ Ðµ твърде дълъг" + +#: field.c:408 +msgid "NF set to negative value" +msgstr "„NF“ е зададена да е отрицателна" + +#: field.c:413 +msgid "decrementing NF is not portable to many awk versions" +msgstr "намалÑването на „NF“ не Ñе поддържа навÑÑкъде" + +#: field.c:861 +msgid "accessing fields from an END rule may not be portable" +msgstr "доÑтъпът до полета от крайното правило „END“ не Ñе поддържа навÑÑкъде" + +#: field.c:986 field.c:995 +msgid "split: fourth argument is a gawk extension" +msgstr "split: четвъртиÑÑ‚ аргумент е разширение на gawk" + +#: field.c:990 +msgid "split: fourth argument is not an array" +msgstr "split: четвъртиÑÑ‚ аргумент трÑбва да е маÑив" + +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: „%s“ не може да Ñе ползва като четвърти аргумент" + +#: field.c:1002 +msgid "split: second argument is not an array" +msgstr "split: вториÑÑ‚ аргумент трÑбва да е маÑив" + +#: field.c:1008 +msgid "split: cannot use the same array for second and fourth args" +msgstr "split: вториÑÑ‚ и четвъртиÑÑ‚ аргумент трÑбва да не Ñа ÑÑŠÑ‰Ð¸Ñ Ð¼Ð°Ñив" + +#: field.c:1013 +msgid "split: cannot use a subarray of second arg for fourth arg" +msgstr "split: четвъртиÑÑ‚ аргумент трÑбва да не е подмаÑив на вториÑ" + +#: field.c:1016 +msgid "split: cannot use a subarray of fourth arg for second arg" +msgstr "split: вториÑÑ‚ аргумент трÑбва да не е подмаÑив на четвъртиÑ" + +#: field.c:1050 +msgid "split: null string for third arg is a non-standard extension" +msgstr "split: нулев низ за трети аргумент не Ñе поддържа навÑÑкъде" + +#: field.c:1087 +msgid "patsplit: fourth argument is not an array" +msgstr "patsplit: четвъртиÑÑ‚ аргумент трÑбва да е маÑив" + +#: field.c:1094 +msgid "patsplit: second argument is not an array" +msgstr "patsplit: вториÑÑ‚ аргумент трÑбва да е маÑив" + +#: field.c:1105 +msgid "patsplit: third argument must be non-null" +msgstr "patsplit: третиÑÑ‚ аргумент трÑбва да не е null" + +#: field.c:1109 +msgid "patsplit: cannot use the same array for second and fourth args" +msgstr "patsplit: вториÑÑ‚ и четвъртиÑÑ‚ аргумент трÑбва да не Ñа ÑÑŠÑ‰Ð¸Ñ Ð¼Ð°Ñив" + +#: field.c:1114 +msgid "patsplit: cannot use a subarray of second arg for fourth arg" +msgstr "split: четвъртиÑÑ‚ аргумент трÑбва да не е подмаÑив на вториÑ" + +#: field.c:1117 +msgid "patsplit: cannot use a subarray of fourth arg for second arg" +msgstr "split: вториÑÑ‚ аргумент трÑбва да не е подмаÑив на четвъртиÑ" + +#: field.c:1167 +msgid "`FIELDWIDTHS' is a gawk extension" +msgstr "„FIELDWIDTHS“ е разширение на gawk" + +#: field.c:1236 +msgid "`*' must be the last designator in FIELDWIDTHS" +msgstr "„*“ трÑбва да е поÑледниÑÑ‚ обозначител във „FIELDWIDTHS“" + +#: field.c:1257 +#, c-format +msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" +msgstr "неправилна ÑтойноÑÑ‚ на „FIELDWIDTHS“ — за поле â„–%d, до „%s“" + +#: field.c:1330 +msgid "null string for `FS' is a gawk extension" +msgstr "ÑтойноÑÑ‚ нулев низ за „FS“ е разширение на gawk" + +#: field.c:1334 +msgid "old awk does not support regexps as value of `FS'" +msgstr "" +"Ñтарите верÑии на awk не поддържат регулÑрни изрази за ÑтойноÑÑ‚ на „FS“" + +#: field.c:1460 +msgid "`FPAT' is a gawk extension" +msgstr "„FPAT“ е разширение на gawk" + +#: gawkapi.c:154 +msgid "awk_value_to_node: received null retval" +msgstr "awk_value_to_node: получената върната ÑтойноÑÑ‚ е null" + +#: gawkapi.c:171 gawkapi.c:182 +msgid "awk_value_to_node: not in MPFR mode" +msgstr "" +"awk_value_to_node: извън режим на многообразна точноÑÑ‚ Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ " +"(MPFR)" + +#: gawkapi.c:176 gawkapi.c:186 +msgid "awk_value_to_node: MPFR not supported" +msgstr "" +"awk_value_to_node: не Ñе поддържа многообразна точноÑÑ‚ Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ " +"(MPFR)" + +#: gawkapi.c:190 +#, c-format +msgid "awk_value_to_node: invalid number type `%d'" +msgstr "awk_value_to_node: неправилен вид чиÑло “%d“" + +#: gawkapi.c:377 +msgid "add_ext_func: received NULL name_space parameter" +msgstr "add_ext_func: параметърът name_space не трÑбва да е нулев" + +#: gawkapi.c:515 +#, c-format +msgid "" +"node_to_awk_value: detected invalid numeric flags combination `%s'; please " +"file a bug report" +msgstr "" +"node_to_awk_value: заÑечена е неправилна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ чиÑлови флагове „%s“. " +"Молим, подайте доклад за грешка" + +#: gawkapi.c:543 +msgid "node_to_awk_value: received null node" +msgstr "node_to_awk_value: получен е нулев възел" + +#: gawkapi.c:546 +msgid "node_to_awk_value: received null val" +msgstr "node_to_awk_value: получена е нулева ÑтойноÑÑ‚" + +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 +#, c-format +msgid "" +"node_to_awk_value detected invalid flags combination `%s'; please file a bug " +"report" +msgstr "" +"node_to_awk_value: заÑечена е неправилна ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ флагове „%s“. Молим, " +"подайте доклад за грешка" + +#: gawkapi.c:1074 +msgid "remove_element: received null array" +msgstr "remove_element: получен е нулев низ" + +#: gawkapi.c:1077 +msgid "remove_element: received null subscript" +msgstr "remove_element: получен е нулев индекÑ" + +#: gawkapi.c:1209 +#, c-format +msgid "api_flatten_array_typed: could not convert index %d to %s" +msgstr "" +"api_flatten_array_typed: индекÑÑŠÑ‚ не може да Ñе преобразува от %d към „%s“" + +#: gawkapi.c:1214 +#, c-format +msgid "api_flatten_array_typed: could not convert value %d to %s" +msgstr "" +"api_flatten_array_typed: индекÑÑŠÑ‚ не може да Ñе преобразува от %d към „%s“" + +#: gawkapi.c:1310 gawkapi.c:1327 +msgid "api_get_mpfr: MPFR not supported" +msgstr "" +"api_get_mpfr: не Ñе поддържа режим на многообразна точноÑÑ‚ Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ " +"(MPFR)" + +#: gawkapi.c:1358 +msgid "cannot find end of BEGINFILE rule" +msgstr "краÑÑ‚ на правилото „BEGINFILE“ не може да Ñе открие" + +#: gawkapi.c:1412 +#, c-format +msgid "cannot open unrecognized file type `%s' for `%s'" +msgstr "непознатиÑÑ‚ вид файл „%s“ не може да Ñе отвори за „%s“" + +#: io.c:426 +#, c-format +msgid "command line argument `%s' is a directory: skipped" +msgstr "аргументът на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ „%s“ е Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸ Ñе преÑкача" + +#: io.c:429 io.c:543 +#, c-format +msgid "cannot open file `%s' for reading: %s" +msgstr "файлът „%s“ не може да Ñе отвори за четене: „%s“" + +#: io.c:672 +#, c-format +msgid "close of fd %d (`%s') failed: %s" +msgstr "неуÑпешно затварÑне на файлов деÑкриптор %d („%s“): „%s“" + +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "„%.*s“ е ползван и за входен файл, и за изходен файл" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "„%.*s“ е ползван и за входен файл, и за входен канал" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "„%.*s“ е ползван и за входен файл, и за двупоÑочен канал" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "„%.*s“ е ползван и за входен файл, и за изходен канал" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "ненужно ÑмеÑване на „>“ и „>>“ за файла „%.*s“" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "„%.*s“ е ползван и за входен канал, и за изходен файл" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "„%.*s“ е ползван и за изходен файл, и за изходен канал" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "„%.*s“ е ползван и за изходен файл, и за двупоÑочен канал" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "„%.*s“ е ползван и за входен канал, и за изходен канал" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "„%.*s“ е ползван и за входен канал, и за двупоÑочен канал" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "„%.*s“ е ползван и за изходен канал, и за двупоÑочен канал" + +#: io.c:813 +msgid "redirection not allowed in sandbox mode" +msgstr "в безопаÑен режим пренаÑочването е изключено" + +#: io.c:847 +#, c-format +msgid "expression in `%s' redirection is a number" +msgstr "изразът в пренаÑочването „%s“ дава чиÑло" + +#: io.c:851 +#, c-format +msgid "expression for `%s' redirection has null string value" +msgstr "изразът в пренаÑочването „%s“ дава нулев низ" + +#: io.c:856 +#, c-format +msgid "" +"filename `%.*s' for `%s' redirection may be result of logical expression" +msgstr "" +"името на файл „%.*s“ в пренаÑочването „%s“ може да е резултат от логичеÑки " +"израз" + +#: io.c:953 io.c:978 +#, c-format +msgid "get_file cannot create pipe `%s' with fd %d" +msgstr "" +"get_file: програмниÑÑ‚ канал „%s“ не може да Ñе Ñъздаде Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² деÑкриптор %d" + +#: io.c:968 +#, c-format +msgid "cannot open pipe `%s' for output: %s" +msgstr "програмниÑÑ‚ канал „%s“ не може да Ñе отвори за изход: %s" + +#: io.c:983 +#, c-format +msgid "cannot open pipe `%s' for input: %s" +msgstr "програмниÑÑ‚ канал „%s“ не може да Ñе отвори за вход: %s" + +#: io.c:1007 +#, c-format +msgid "" +"get_file socket creation not supported on this platform for `%s' with fd %d" +msgstr "" +"get_file: тази платформа не поддържа Ñъздаването на гнезда за „%s“ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² " +"деÑкриптор %d" + +#: io.c:1018 +#, c-format +msgid "cannot open two way pipe `%s' for input/output: %s" +msgstr "не може да Ñе отвори двупоÑочен програмен канал „%s“ за вход/изход: %s" + +#: io.c:1105 +#, c-format +msgid "cannot redirect from `%s': %s" +msgstr "неуÑпешно пренаÑочване от „%s“: %s" + +#: io.c:1108 +#, c-format +msgid "cannot redirect to `%s': %s" +msgstr "неуÑпешно пренаÑочване към „%s“: %s" + +#: io.c:1210 +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"доÑтигнато е ÑиÑтемното ограничение за отворени файлове: започване на " +"мултиплекÑиране на файловите деÑкриптори" + +#: io.c:1226 +#, c-format +msgid "close of `%s' failed: %s" +msgstr "неуÑпешно затварÑне на „%s“: %s" + +#: io.c:1234 +msgid "too many pipes or input files open" +msgstr "отворени Ñа прекалено много входни файлове или програмни канали" + +#: io.c:1260 +msgid "close: second argument must be `to' or `from'" +msgstr "close: вториÑÑ‚ аргумент трÑбва да е „to“ (към) или „from“ (от)" + +#: io.c:1278 +#, c-format +msgid "close: `%.*s' is not an open file, pipe or co-process" +msgstr "close: „%.*s“ не е отворен файл, програмен канал или копроцеÑ" + +#: io.c:1283 +msgid "close of redirection that was never opened" +msgstr "close: това пренаÑочване не е било отворено" + +#: io.c:1382 +#, c-format +msgid "close: redirection `%s' not opened with `|&', second argument ignored" +msgstr "" +"close: пренаÑочването „%s“ не е отворено Ñ â€ž|&“, вториÑÑ‚ аргумент Ñе преÑкача" + +#: io.c:1399 +#, c-format +msgid "failure status (%d) on pipe close of `%s': %s" +msgstr "код за грешка (%d) при затварÑнето на Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» „%s“: %s" + +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "" +"код за грешка (%d) при затварÑнето на двупоÑÐ¾Ñ‡Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÐµÐ½ канал „%s“: %s" + +#: io.c:1405 +#, c-format +msgid "failure status (%d) on file close of `%s': %s" +msgstr "код за грешка (%d) при затварÑнето на файла „%s“: %s" + +#: io.c:1425 +#, c-format +msgid "no explicit close of socket `%s' provided" +msgstr "гнездото „%s“ не е изрично затворено" + +#: io.c:1428 +#, c-format +msgid "no explicit close of co-process `%s' provided" +msgstr "копроцеÑÑŠÑ‚ „%s“ не е изрично затворен" + +#: io.c:1431 +#, c-format +msgid "no explicit close of pipe `%s' provided" +msgstr "програмниÑÑ‚ канал „%s“ не е изрично затворен" + +#: io.c:1434 +#, c-format +msgid "no explicit close of file `%s' provided" +msgstr "файлът „%s“ не е изрично затворен" + +#: io.c:1471 +#, c-format +msgid "fflush: cannot flush standard output: %s" +msgstr "fflush: буферът на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ не може да Ñе изчиÑти: %s" + +#: io.c:1472 +#, c-format +msgid "fflush: cannot flush standard error: %s" +msgstr "fflush: буферът на Ñтандартната грешка не може да Ñе изчиÑти: %s" + +#: io.c:1477 io.c:1568 main.c:666 main.c:713 +#, c-format +msgid "error writing standard output: %s" +msgstr "грешка при Ð·Ð°Ð¿Ð¸Ñ ÐºÑŠÐ¼ ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´: %s" + +#: io.c:1478 io.c:1581 main.c:668 +#, c-format +msgid "error writing standard error: %s" +msgstr "грешка при Ð·Ð°Ð¿Ð¸Ñ ÐºÑŠÐ¼ Ñтандартната грешка: %s" + +#: io.c:1517 +#, c-format +msgid "pipe flush of `%s' failed: %s" +msgstr "неуÑпешно изчиÑтване на буфера на Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» „%s“: %s" + +#: io.c:1520 +#, c-format +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "" +"неуÑпешно изчиÑтване на буфера на Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» „%s“ на копроцеÑа: %s" + +#: io.c:1523 +#, c-format +msgid "file flush of `%s' failed: %s" +msgstr "неуÑпешно изчиÑтване на буфера на файла „%s“: %s" + +#: io.c:1670 +#, c-format +msgid "local port %s invalid in `/inet': %s" +msgstr "локалниÑÑ‚ порт %s не е валиден в „/inet“: %s" + +#: io.c:1673 +#, c-format +msgid "local port %s invalid in `/inet'" +msgstr "локалниÑÑ‚ порт %s не е валиден в „/inet“" + +#: io.c:1696 +#, c-format +msgid "remote host and port information (%s, %s) invalid: %s" +msgstr "отдалечениÑÑ‚ хоÑÑ‚ и порт (%s, %s) Ñа неправилни: %s" + +#: io.c:1699 +#, c-format +msgid "remote host and port information (%s, %s) invalid" +msgstr "отдалечениÑÑ‚ хоÑÑ‚ и порт (%s, %s) Ñа неправилни" + +#: io.c:1941 +msgid "TCP/IP communications are not supported" +msgstr "не Ñе поддържа връзка по TCP/IP" + +#: io.c:2069 io.c:2112 +#, c-format +msgid "could not open `%s', mode `%s'" +msgstr "„%s“ не може да Ñе отвори в режим „%s“" + +#: io.c:2077 io.c:2129 +#, c-format +msgid "close of master pty failed: %s" +msgstr "неуÑпешно затварÑне на оÑÐ½Ð¾Ð²Ð½Ð¸Ñ Ð¿Ñевдотерминал: „%s“" + +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 +#, c-format +msgid "close of stdout in child failed: %s" +msgstr "неуÑпешно затварÑне на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ в дъщерен процеÑ: „%s“" + +#: io.c:2082 io.c:2134 +#, c-format +msgid "moving slave pty to stdout in child failed (dup: %s)" +msgstr "" +"неуÑпешно премеÑтване в Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Ð¿Ð¾Ð´Ñ‡Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð» да е " +"ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ (dup: %s)" + +#: io.c:2084 io.c:2136 io.c:2483 +#, c-format +msgid "close of stdin in child failed: %s" +msgstr "неуÑпешно затварÑне на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ в дъщерен процеÑ: „%s“" + +#: io.c:2087 io.c:2139 +#, c-format +msgid "moving slave pty to stdin in child failed (dup: %s)" +msgstr "" +"неуÑпешно премеÑтване в Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Ð¿Ð¾Ð´Ñ‡Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð» да е " +"ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ (dup: %s)" + +#: io.c:2089 io.c:2141 io.c:2163 +#, c-format +msgid "close of slave pty failed: %s" +msgstr "неуÑпешно затварÑне на Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð¿Ñевдотерминал: „%s“" + +#: io.c:2325 +msgid "could not create child process or open pty" +msgstr "неуÑпешно Ñъздаване на дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð»Ð¸ отварÑне на пÑевдотерминал" + +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 +#, c-format +msgid "moving pipe to stdout in child failed (dup: %s)" +msgstr "" +"неуÑпешно премеÑтване в Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» да е ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ " +"изход (dup: %s)" + +#: io.c:2420 io.c:2486 +#, c-format +msgid "moving pipe to stdin in child failed (dup: %s)" +msgstr "" +"неуÑпешно премеÑтване в Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» да е ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ " +"вход (dup: %s)" + +#: io.c:2446 io.c:2715 +msgid "restoring stdout in parent process failed" +msgstr "неуÑпешно възÑтановÑване на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ в родителÑÐºÐ¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ" + +#: io.c:2454 +msgid "restoring stdin in parent process failed" +msgstr "неуÑпешно възÑтановÑване на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ в родителÑÐºÐ¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ" + +#: io.c:2489 io.c:2727 io.c:2742 +#, c-format +msgid "close of pipe failed: %s" +msgstr "неуÑпешно затварÑне на програмен канал: %s" + +#: io.c:2548 +msgid "`|&' not supported" +msgstr "„|&“ не Ñе поддържа" + +#: io.c:2678 +#, c-format +msgid "cannot open pipe `%s': %s" +msgstr "програмниÑÑ‚ канал „%s“ не може да Ñе отвори: %s" + +#: io.c:2736 +#, c-format +msgid "cannot create child process for `%s' (fork: %s)" +msgstr "неуÑпешно Ñъздаване на дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° „%s“ (fork: %s)" + +#: io.c:2874 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" +"getline: опит за четене от Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ñ ÐºÑ€Ð°Ð¹ за четене от двупоÑочен програмен " +"канал" + +#: io.c:3199 +msgid "register_input_parser: received NULL pointer" +msgstr "register_input_parser: получен е нулев указател" + +#: io.c:3227 +#, c-format +msgid "input parser `%s' conflicts with previously installed input parser `%s'" +msgstr "входниÑÑ‚ анализатор „%s“ е в конфликт Ñ Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¾ инÑÑ‚Ð°Ð»Ð¸Ñ€Ð°Ð½Ð¸Ñ â€ž%s“" + +#: io.c:3234 +#, c-format +msgid "input parser `%s' failed to open `%s'" +msgstr "входниÑÑ‚ анализатор „%s“ не може да отвори „%s“" + +#: io.c:3254 +msgid "register_output_wrapper: received NULL pointer" +msgstr "register_output_wrapper: получен е нулев указател" + +#: io.c:3282 +#, c-format +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgstr "" +"функционалноÑтта за обработка на изхода „%s“ е в конфликт Ñ Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¾ " +"инÑталираната „%s“" + +#: io.c:3289 +#, c-format +msgid "output wrapper `%s' failed to open `%s'" +msgstr "функционалноÑтта за обработка на изхода „%s“ не може да отвори „%s“" + +#: io.c:3310 +msgid "register_output_processor: received NULL pointer" +msgstr "register_output_processor: получен е нулев указател" + +#: io.c:3339 +#, c-format +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" +msgstr "двупоÑÐ¾Ñ‡Ð½Ð¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€ „%s“ е в конфликт Ñ Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¾ инÑÑ‚Ð°Ð»Ð¸Ñ€Ð°Ð½Ð¸Ñ â€ž%s“" + +#: io.c:3348 +#, c-format +msgid "two way processor `%s' failed to open `%s'" +msgstr "двупоÑÐ¾Ñ‡Ð½Ð¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€ „%s“ не уÑÐ¿Ñ Ð´Ð° отвори „%s“" + +#: io.c:3472 +#, c-format +msgid "data file `%s' is empty" +msgstr "празен файл Ñ Ð´Ð°Ð½Ð½Ð¸ „%s“" + +#: io.c:3514 io.c:3522 +msgid "could not allocate more input memory" +msgstr "повече памет не може да Ñе задели" + +#: io.c:4140 +msgid "multicharacter value of `RS' is a gawk extension" +msgstr "ÑтойноÑÑ‚ от повече от един знак за „RS“ е разширение на gawk" + +#: io.c:4294 +msgid "IPv6 communication is not supported" +msgstr "не Ñе поддържат връзки по IPv6" + +#: main.c:338 +msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" +msgstr "" +"променливата на Ñредата „POSIXLY_CORRECT“ е зададена: включва Ñе опциÑта „--" +"posix“" + +#: main.c:345 +msgid "`--posix' overrides `--traditional'" +msgstr "опциÑта „--posix“ е Ñ Ð¿Ñ€ÐµÐ²ÐµÑ Ð½Ð°Ð´ „--traditional“" + +#: main.c:356 +msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" +msgstr "опциите „--posix“/„--traditional“ Ñа Ñ Ð¿Ñ€ÐµÐ²ÐµÑ Ð½Ð°Ð´ „--non-decimal-data“" + +#: main.c:361 +msgid "`--posix' overrides `--characters-as-bytes'" +msgstr "опциÑта „--posix“ е Ñ Ð¿Ñ€ÐµÐ²ÐµÑ Ð½Ð°Ð´ „--characters-as-bytes“" + +#: main.c:371 +#, c-format +msgid "running %s setuid root may be a security problem" +msgstr "" +"изпълнението на „%s“ ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ флаг за изпълнение като „root“ е проблем за " +"ÑигурноÑтта" + +#: main.c:424 +#, c-format +msgid "cannot set binary mode on stdin: %s" +msgstr "неуÑпешно задаване на двоичен режим за ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´: „%s“" + +#: main.c:427 +#, c-format +msgid "cannot set binary mode on stdout: %s" +msgstr "неуÑпешно задаване на двоичен режим за ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´: „%s“" + +#: main.c:429 +#, c-format +msgid "cannot set binary mode on stderr: %s" +msgstr "неуÑпешно задаване на двоичен режим за Ñтандартната грешка: „%s“" + +#: main.c:491 +msgid "no program text at all!" +msgstr "липÑва код на програмата!" + +#: main.c:585 +#, c-format +msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" +msgstr "Употреба: %s [ОПЦИЯ_ПО_POSIX_И_GNU…] -f ПРОГРÐМЕÐ_ФÐЙЛ [--] ФÐЙЛ…\n" + +#: main.c:587 +#, c-format +msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" +msgstr "Употреба: %s [ОПЦИЯ_ПО_POSIX_И_GNU…] [--] %cПРОГРÐМЕÐ_ФÐЙЛ%c ФÐЙЛ…\n" + +#: main.c:592 +msgid "POSIX options:\t\tGNU long options: (standard)\n" +msgstr "Опции по POSIX: Дълги опции по GNU: (Ñтандартни)\n" + +#: main.c:593 +msgid "\t-f progfile\t\t--file=progfile\n" +msgstr " -f ПРОГРÐМЕÐ_ФÐЙЛ --file=ПРОГРÐМЕÐ_ФÐЙЛ\n" + +#: main.c:594 +msgid "\t-F fs\t\t\t--field-separator=fs\n" +msgstr " -F РÐЗДEЛИТЕЛ --field-separator=РÐЗДЕЛИТЕЛ\n" + +#: main.c:595 +msgid "\t-v var=val\t\t--assign=var=val\n" +msgstr " -v ПРОМЕÐЛИВÐ=СТОЙÐОСТ --assign=ПРОМЕÐЛИВÐ=СТОЙÐОСТ\n" + +#: main.c:596 +msgid "Short options:\t\tGNU long options: (extensions)\n" +msgstr "КъÑи опции: Дълги опции по GNU: (разширени)\n" + +#: main.c:597 +msgid "\t-b\t\t\t--characters-as-bytes\n" +msgstr " -b --characters-as-bytes\n" + +#: main.c:598 +msgid "\t-c\t\t\t--traditional\n" +msgstr " -c --traditional\n" + +#: main.c:599 +msgid "\t-C\t\t\t--copyright\n" +msgstr " -C --copyright\n" + +#: main.c:600 +msgid "\t-d[file]\t\t--dump-variables[=file]\n" +msgstr " -d[ФÐЙЛ] --dump-variables[=ФÐЙЛ]\n" + +#: main.c:601 +msgid "\t-D[file]\t\t--debug[=file]\n" +msgstr " -D[ФÐЙЛ] --debug[=ФÐЙЛ]\n" + +#: main.c:602 +msgid "\t-e 'program-text'\t--source='program-text'\n" +msgstr " -e 'ПРОГРÐМÐ' --source='ПРОГРÐМÐ'\n" + +#: main.c:603 +msgid "\t-E file\t\t\t--exec=file\n" +msgstr " -E ФÐЙЛ --exec=ФÐЙЛ\n" + +#: main.c:604 +msgid "\t-g\t\t\t--gen-pot\n" +msgstr " -g --gen-pot\n" + +#: main.c:605 +msgid "\t-h\t\t\t--help\n" +msgstr " -h --help\n" + +#: main.c:606 +msgid "\t-i includefile\t\t--include=includefile\n" +msgstr " -i ФÐЙЛ_ЗÐ_ВМЪКВÐÐЕ --include=ФÐЙЛ_ЗÐ_ВМЪКВÐÐЕ\n" + +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr " -I --trace\n" + +#: main.c:608 +msgid "\t-l library\t\t--load=library\n" +msgstr " -l БИБЛИОТЕКР--load=БИБЛИОТЕКÐ\n" + +#. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:613 +msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" +msgstr " -L[fatal|invalid|no-ext] --lint[=fatal|invalid|no-ext]\n" + +#: main.c:614 +msgid "\t-M\t\t\t--bignum\n" +msgstr " -M --bignum\n" + +#: main.c:615 +msgid "\t-N\t\t\t--use-lc-numeric\n" +msgstr " -N --use-lc-numeric\n" + +#: main.c:616 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr " -n --non-decimal-data\n" + +#: main.c:617 +msgid "\t-o[file]\t\t--pretty-print[=file]\n" +msgstr " -oФÐЙЛ --pretty-print[=ФÐЙЛ]\n" + +#: main.c:618 +msgid "\t-O\t\t\t--optimize\n" +msgstr " -O --optimize\n" + +#: main.c:619 +msgid "\t-p[file]\t\t--profile[=file]\n" +msgstr " -p[ФÐЙЛ] --profile[=ФÐЙЛ]\n" + +#: main.c:620 +msgid "\t-P\t\t\t--posix\n" +msgstr " -P --posix\n" + +#: main.c:621 +msgid "\t-r\t\t\t--re-interval\n" +msgstr " -r --re-interval\n" + +#: main.c:622 +msgid "\t-s\t\t\t--no-optimize\n" +msgstr " -s --no-optimize\n" + +#: main.c:623 +msgid "\t-S\t\t\t--sandbox\n" +msgstr " -S --sandbox\n" + +#: main.c:624 +msgid "\t-t\t\t\t--lint-old\n" +msgstr " -t --lint-old\n" + +#: main.c:625 +msgid "\t-V\t\t\t--version\n" +msgstr " -V --version\n" + +#: main.c:627 +msgid "\t-W nostalgia\t\t--nostalgia\n" +msgstr " -W nostalgia --nostalgia\n" + +#: main.c:630 +msgid "\t-Y\t\t\t--parsedebug\n" +msgstr " -Y --parsedebug\n" + +#: main.c:633 +msgid "\t-Z locale-name\t\t--locale=locale-name\n" +msgstr " -Z ИМЕ_ÐÐ_ЛОКÐЛ --locale=ИМЕ_ÐÐ_ЛОКÐЛ\n" + +#. TRANSLATORS: --help output (end) +#. no-wrap +#: main.c:639 +msgid "" +"\n" +"To report bugs, see node `Bugs' in `gawk.info'\n" +"which is section `Reporting Problems and Bugs' in the\n" +"printed version. This same information may be found at\n" +"https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.\n" +"PLEASE do NOT try to report bugs by posting in comp.lang.awk,\n" +"or by using a web forum such as Stack Overflow.\n" +"\n" +msgstr "" +"\n" +"За докладването на грешки погледнете чаÑтта „Bugs“ (Грешки)\n" +"в „gawk.info“, което ÑъответÑтва на раздела „Reporting\n" +"Problems and Bugs“ (Докладване на проблеми и грешки) в\n" +"Ð¾Ñ‚Ð¿ÐµÑ‡Ð°Ñ‚Ð°Ð½Ð¸Ñ Ð²Ð°Ñ€Ð¸Ð°Ð½Ñ‚. Същата Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ðµ налична на адреÑ\n" +"https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.\n" +"МОЛИМ, не докладвайте грешки през „comp.lang.awk“ или\n" +"уеб-форуми като Stack Overflow.\n" +"\n" + +#: main.c:647 +msgid "" +"gawk is a pattern scanning and processing language.\n" +"By default it reads standard input and writes standard output.\n" +"\n" +msgstr "" +"gawk е език да търÑене и обработка по шаблони.\n" +"По подразбиране Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и Ñе извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ " +"изход.\n" +"\n" + +#: main.c:651 +#, c-format +msgid "" +"Examples:\n" +"\t%s '{ sum += $1 }; END { print sum }' file\n" +"\t%s -F: '{ print $1 }' /etc/passwd\n" +msgstr "" +"Примери:\n" +" %s '{ sum += $1 }; END { print sum }' ФÐЙЛ\n" +" %s -F: '{ print $1 }' /etc/passwd\n" + +#: main.c:683 +#, c-format +msgid "" +"Copyright (C) 1989, 1991-%d Free Software Foundation.\n" +"\n" +"This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 3 of the License, or\n" +"(at your option) any later version.\n" +"\n" +msgstr "" +"ÐвторÑки права © 1989, 1991-%d Free Software Foundation, Inc.\n" +"\n" +"Тази програма е Ñвободен Ñофтуер. Можете да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате и/или\n" +"променÑте по уÑловиÑта на ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU (GNU GPL),\n" +"както е публикуван от ФондациÑта за Ñвободен Ñофтуер — верÑÐ¸Ñ 3 на\n" +"лиценза или (по ваше решение) по-къÑна верÑиÑ.\n" +"\n" + +#: main.c:691 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +msgstr "" +"Тази програма Ñе разпроÑтранÑва Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð°Ñ‚Ð°, че ще бъде полезна,\n" +"но БЕЗ ÐИКÐКВИ ГÐРÐÐЦИИ, дори и коÑвените за ПРОДÐЖБРили\n" +"СЪОТВЕТСТВИЕ С КÐКВÐТО И ДРЕ УПОТРЕБÐ. За подробноÑти погледнете\n" +"ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU.\n" +"\n" + +#: main.c:697 +msgid "" +"You should have received a copy of the GNU General Public License\n" +"along with this program. If not, see http://www.gnu.org/licenses/.\n" +msgstr "" +"ТрÑбва да Ñте получили копие от ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU (GNU GPL)\n" +"заедно Ñ Ñ‚Ð°Ð·Ð¸ програма. Ðко не Ñте, вижте see http://www.gnu.org/licenses/.\n" + +#: main.c:738 +msgid "-Ft does not set FS to tab in POSIX awk" +msgstr "„-Ft“ не задава FS да е Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ Ð² режим POSIX на awk" + +#: main.c:1153 +#, c-format +msgid "" +"%s: `%s' argument to `-v' not in `var=value' form\n" +"\n" +msgstr "" +"%s: аргументът „%s“ към „-v“ трÑбва да е във формат „променлива=ÑтойноÑт“\n" +"\n" + +#: main.c:1179 +#, c-format +msgid "`%s' is not a legal variable name" +msgstr "„%s“: грешно име на променлива" + +#: main.c:1182 +#, c-format +msgid "`%s' is not a variable name, looking for file `%s=%s'" +msgstr "„%s“ не е име на променлива, търÑи Ñе файлът „%s=%s“" + +#: main.c:1196 +#, c-format +msgid "cannot use gawk builtin `%s' as variable name" +msgstr "" +"вградената в gawk Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“ не може да Ñе ползва за име на променлива" + +#: main.c:1201 +#, c-format +msgid "cannot use function `%s' as variable name" +msgstr "функциÑта „%s“ не може да Ñе ползва за име на променлива" + +#: main.c:1280 +msgid "floating point exception" +msgstr "изключение от плаваща запетаÑ" + +#: main.c:1290 +msgid "fatal error: internal error" +msgstr "фатална грешка: вътрешна грешка" + +#: main.c:1310 +msgid "fatal error: internal error: segfault" +msgstr "фатална грешка: вътрешна грешка — излизане от Ñегмента" + +#: main.c:1323 +msgid "fatal error: internal error: stack overflow" +msgstr "фатална грешка: вътрешна грешка — препълване на Ñтека" + +#: main.c:1383 +#, c-format +msgid "no pre-opened fd %d" +msgstr "липÑва предварително отворен файлов деÑкриптор %d" + +#: main.c:1390 +#, c-format +msgid "could not pre-open /dev/null for fd %d" +msgstr "" +"„/dev/null“ не може да Ñе отвори предварително като файлов деÑкриптор %d" + +#: main.c:1604 +msgid "empty argument to `-e/--source' ignored" +msgstr "празниÑÑ‚ аргумент към опциÑта „-e/--source“ Ñе преÑкача" + +#: main.c:1669 main.c:1674 +msgid "`--profile' overrides `--pretty-print'" +msgstr "опциÑта „--profile“ има Ð¿Ñ€ÐµÐ²ÐµÑ Ð½Ð°Ð´ „--pretty-print“" + +#: main.c:1686 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "„-M“ Ñе преÑкача: в компилата нÑма поддръжка на MPFR/GMP" + +#: main.c:1711 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž-W %s“, Ñ‚Ñ Ñе преÑкача\n" + +#: main.c:1764 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опциÑта изиÑква аргумент — %c\n" + +#: mpfr.c:605 +#, c-format +msgid "PREC value `%.*s' is invalid" +msgstr "неправилна ÑтойноÑÑ‚ „%.*s“ за точноÑтта" + +#: mpfr.c:664 +#, c-format +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "неправилна ÑтойноÑÑ‚ „%.*s“ на режима на закръглÑне" + +#: mpfr.c:728 +msgid "atan2: received non-numeric first argument" +msgstr "atan2: първиÑÑ‚ аргумент трÑбва да е чиÑло" + +#: mpfr.c:730 +msgid "atan2: received non-numeric second argument" +msgstr "atan2: вториÑÑ‚ аргумент трÑбва да е чиÑло" + +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s: получен е аргумент, който е отрицателно чиÑло, а не трÑбва: %.*s" + +#: mpfr.c:832 +msgid "int: received non-numeric argument" +msgstr "int: първиÑÑ‚ аргумент трÑбва да е чиÑло" + +#: mpfr.c:862 +msgid "compl: received non-numeric argument" +msgstr "compl: аргументите трÑбва да Ñа чиÑла" + +#: mpfr.c:874 +msgid "compl(%Rg): negative value is not allowed" +msgstr "compl(%Rg): не приема отрицателни ÑтойноÑти" + +#: mpfr.c:879 +msgid "comp(%Rg): fractional value will be truncated" +msgstr "comp(%Rg): дробната чаÑÑ‚ ще бъде отрÑзана" + +#: mpfr.c:890 +#, c-format +msgid "compl(%Zd): negative values are not allowed" +msgstr "compl(%Zd): не приема отрицателни ÑтойноÑти" + +#: mpfr.c:908 +#, c-format +msgid "%s: received non-numeric argument #%d" +msgstr "%s: аргумент â„–%d трÑбва да е чиÑло" + +#: mpfr.c:918 +msgid "%s: argument #%d has invalid value %Rg, using 0" +msgstr "%1$s: неправилна ÑтойноÑÑ‚ %3$Rg за аргумент â„–%2$d, ще Ñе ползва 0" + +#: mpfr.c:929 +msgid "%s: argument #%d negative value %Rg is not allowed" +msgstr "%s: аргумент â„–%d не приема отрицателни ÑтойноÑти като %Rg" + +#: mpfr.c:936 +msgid "%s: argument #%d fractional value %Rg will be truncated" +msgstr "" +"%s: аргумент â„–%d ще използва цÑлата чаÑÑ‚ от чиÑлото Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ %Rg" + +#: mpfr.c:950 +#, c-format +msgid "%s: argument #%d negative value %Zd is not allowed" +msgstr "%s: аргумент â„–%d не приема отрицателни ÑтойноÑти като %Zd" + +#: mpfr.c:1040 +msgid "and: called with less than two arguments" +msgstr "and: изиÑква поне два аргумента" + +#: mpfr.c:1072 +msgid "or: called with less than two arguments" +msgstr "or: изиÑква поне два аргумента" + +#: mpfr.c:1103 +msgid "xor: called with less than two arguments" +msgstr "xor: изиÑква поне два аргумента" + +#: mpfr.c:1227 +msgid "srand: received non-numeric argument" +msgstr "srand: приема Ñамо чиÑлови аргументи" + +#: mpfr.c:1269 +msgid "intdiv: received non-numeric first argument" +msgstr "intdiv: първиÑÑ‚ аргумент трÑбва да е чиÑло" + +#: mpfr.c:1271 +msgid "intdiv: received non-numeric second argument" +msgstr "intdiv: вториÑÑ‚ аргумент трÑбва да е чиÑло" + +#: msg.c:76 +#, c-format +msgid "cmd. line:" +msgstr "команден ред:" + +#: node.c:481 +msgid "could not make typed regex" +msgstr "не може да Ñе Ñъздаде типизиран регулÑрен израз" + +#: node.c:554 +#, c-format +msgid "old awk does not support the `\\%c' escape sequence" +msgstr "Ñтарите верÑии на awk не поддържат екранирането „\\%c“" + +#: node.c:605 +msgid "POSIX does not allow `\\x' escapes" +msgstr "POSIX не позволÑва екраниране „\\x“" + +#: node.c:611 +msgid "no hex digits in `\\x' escape sequence" +msgstr "в екранираната поÑледователноÑÑ‚ „\\x“ липÑват шеÑтнайÑетични цифри" + +#: node.c:632 +#, c-format +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"шеÑтнайÑетичното екраниране „\\x%.*s“ на %d знаци, най-вероÑтно ще Ñе " +"интерпретира по начин различен от това, което очаквате" + +#: node.c:647 +#, c-format +msgid "escape sequence `\\%c' treated as plain `%c'" +msgstr "екранираната поÑледователноÑÑ‚ „\\%c“ ще Ñе обработи проÑто като „%c“" + +#: node.c:783 +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale" +msgstr "" +"Получена е Ñгрешена многобайтова поÑледователноÑÑ‚. Проверете дали локалът " +"ÑъответÑтва на данните" + +#: posix/gawkmisc.c:177 +#, c-format +msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" +msgstr "" +"%s %s „%s“: флаговете на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор не може да Ñе получат: (fcntl " +"F_GETFD: %s)" + +#: posix/gawkmisc.c:189 +#, c-format +msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" +msgstr "%s %s „%s“: неуÑпешно задаване на „close-on-exec“: (fcntl F_SETFD: %s)" + +#: profile.c:73 +msgid "Program indentation level too deep. Consider refactoring your code" +msgstr "Прекалено дълбока вложеноÑÑ‚ на програмата. Променете кода" + +#: profile.c:112 +msgid "sending profile to standard error" +msgstr "извеждане на профила на изпълнение към Ñтандартната грешка" + +#: profile.c:275 +#, c-format +msgid "" +"\t# %s rule(s)\n" +"\n" +msgstr "" +" # %s правила̀\n" +"\n" + +#: profile.c:283 +#, c-format +msgid "" +"\t# Rule(s)\n" +"\n" +msgstr "" +" # Правила̀\n" +"\n" + +#: profile.c:371 +#, c-format +msgid "internal error: %s with null vname" +msgstr "вътрешна грешка: %s Ñ Ð¸Ð¼Ðµ (vname) - нулев байт" + +#: profile.c:663 +msgid "internal error: builtin with null fname" +msgstr "вътрешна грешка: вградена команда Ñ Ð¸Ð¼Ðµ (fname) - нулев байт" + +#: profile.c:1318 +#, c-format +msgid "" +"%s# Loaded extensions (-l and/or @load)\n" +"\n" +msgstr "" +"%s# Заредени Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ (чрез „-l“ и/или „@load“)\n" +"\n" + +#: profile.c:1349 +#, c-format +msgid "" +"\n" +"# Included files (-i and/or @include)\n" +"\n" +msgstr "" +"\n" +"# Вмъкнати файлове (чрез „-i“ и/или „@include“)\n" +"\n" + +#: profile.c:1413 +#, c-format +msgid "\t# gawk profile, created %s\n" +msgstr " # профил изпълнение на gawk, Ñъздаден на %s\n" + +#: profile.c:1981 +#, c-format +msgid "" +"\n" +"\t# Functions, listed alphabetically\n" +msgstr "" +"\n" +" # Функции в лекÑикографÑки ред\n" + +#: profile.c:2042 +#, c-format +msgid "redir2str: unknown redirection type %d" +msgstr "redir2str: непознат вид пренаÑочване %d" + +#: re.c:58 re.c:163 +msgid "" +"behavior of matching a regexp containing NUL characters is not defined by " +"POSIX" +msgstr "" +"поведението на регулÑрен израз Ñъдържащ нулев байт е недефинирано по POSIX" + +#: re.c:127 +msgid "invalid NUL byte in dynamic regexp" +msgstr "неправилен нулев байт в динамичен регулÑрен израз" + +#: re.c:174 +#, c-format +msgid "regexp escape sequence `\\%c' treated as plain `%c'" +msgstr "" +"екраниращата поÑледователноÑÑ‚ в регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· „\\%c“ Ñе обработва като " +"„%c“" + +#: re.c:193 +#, c-format +msgid "regexp escape sequence `\\%c' is not a known regexp operator" +msgstr "" +"екраниращата поÑледователноÑÑ‚ в регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· „\\\\%c“ не е познат " +"оператор" + +#: re.c:663 +#, c-format +msgid "regexp component `%.*s' should probably be `[%.*s]'" +msgstr "компонентът „%.*s“ вероÑтно трÑбва да е „[%.*s]“" + +#: support/dfa.c:896 +msgid "unbalanced [" +msgstr "„[“ без еш" + +#: support/dfa.c:1017 +msgid "invalid character class" +msgstr "неправилен ÐºÐ»Ð°Ñ Ð·Ð½Ð°Ñ†Ð¸" + +#: support/dfa.c:1143 +msgid "character class syntax is [[:space:]], not [:space:]" +msgstr "ÐºÐ»Ð°Ñ Ð·Ð½Ð°Ñ†Ð¸ Ñе указва чрез „[[:ИМЕ:]]“, а не „[:ИМЕ:]“" + +#: support/dfa.c:1210 +msgid "unfinished \\ escape" +msgstr "незавършена екранираща поÑледователноÑÑ‚ чрез „\\“" + +#: support/dfa.c:1371 +msgid "invalid content of \\{\\}" +msgstr "неправилно Ñъдържание в „\\{\\}“" + +#: support/dfa.c:1374 +msgid "regular expression too big" +msgstr "прекалено голÑм регулÑрен израз" + +#: support/dfa.c:1858 +msgid "unbalanced (" +msgstr "„(“ без еш" + +#: support/dfa.c:1975 +msgid "no syntax specified" +msgstr "не е зададен ÑинтакÑиÑ" + +#: support/dfa.c:1986 +msgid "unbalanced )" +msgstr "„)“ без еш" + +#: support/getopt.c:605 support/getopt.c:634 +#, c-format +msgid "%s: option '%s' is ambiguous; possibilities:" +msgstr "%s: опциÑта „%s“ не еднозначна, възможни значениÑ:" + +#: support/getopt.c:680 support/getopt.c:684 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: опциÑта „--%s“ не приема аргумент\n" + +#: support/getopt.c:693 support/getopt.c:698 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: опциÑта „%c%s“ не приема аргумент\n" + +#: support/getopt.c:741 support/getopt.c:760 +#, c-format +msgid "%s: option '--%s' requires an argument\n" +msgstr "%s: опциÑта „--%s“ изиÑква аргумент\n" + +#: support/getopt.c:798 support/getopt.c:801 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž--%s“\n" + +#: support/getopt.c:809 support/getopt.c:812 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž%c%s“\n" + +#: support/getopt.c:861 support/getopt.c:864 +#, c-format +msgid "%s: invalid option -- '%c'\n" +msgstr "%s: неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€” „%c“\n" + +#: support/getopt.c:917 support/getopt.c:934 support/getopt.c:1144 +#: support/getopt.c:1162 +#, c-format +msgid "%s: option requires an argument -- '%c'\n" +msgstr "%s: опциÑта изиÑква аргумент — „%c“\n" + +#: support/getopt.c:990 support/getopt.c:1006 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: опциÑта „-W %s“ не е еднозначна\n" + +#: support/getopt.c:1030 support/getopt.c:1048 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: опциÑта „-W %s“ не приема аргумент\n" + +#: support/getopt.c:1069 support/getopt.c:1087 +#, c-format +msgid "%s: option '-W %s' requires an argument\n" +msgstr "%s: опциÑта „-W %s“ изиÑква аргумент\n" + +#: support/regcomp.c:135 +msgid "Success" +msgstr "УÑпех" + +#: support/regcomp.c:138 +msgid "No match" +msgstr "ÐÑма ÑъвпадениÑ" + +#: support/regcomp.c:141 +msgid "Invalid regular expression" +msgstr "Ðеправилен регулÑрен израз" + +#: support/regcomp.c:144 +msgid "Invalid collation character" +msgstr "Ðеправилен знак за подредба" + +#: support/regcomp.c:147 +msgid "Invalid character class name" +msgstr "Ðеправилно име на ÐºÐ»Ð°Ñ Ð·Ð½Ð°Ñ†Ð¸" + +#: support/regcomp.c:150 +msgid "Trailing backslash" +msgstr "Самотна „\\“ накраÑ" + +#: support/regcomp.c:153 +msgid "Invalid back reference" +msgstr "Ðеправилна препратка към Ñъвпадение" + +#: support/regcomp.c:156 +msgid "Unmatched [, [^, [:, [., or [=" +msgstr "„[“, „[^“, „[:“, „[.“ или „[=“ без еш" + +#: support/regcomp.c:159 +msgid "Unmatched ( or \\(" +msgstr "„(“ или „\\(“ без еш" + +#: support/regcomp.c:162 +msgid "Unmatched \\{" +msgstr "„\\{“ без еш" + +#: support/regcomp.c:165 +msgid "Invalid content of \\{\\}" +msgstr "Ðеправилно Ñъдържание в „\\{\\}“" + +#: support/regcomp.c:168 +msgid "Invalid range end" +msgstr "Ðеправилен край на диапазон" + +#: support/regcomp.c:171 +msgid "Memory exhausted" +msgstr "Паметта Ñвърши" + +#: support/regcomp.c:174 +msgid "Invalid preceding regular expression" +msgstr "ПредхождащиÑÑ‚ регулÑрен израз е неправилен" + +#: support/regcomp.c:177 +msgid "Premature end of regular expression" +msgstr "Ранен край на регулÑрен израз" + +#: support/regcomp.c:180 +msgid "Regular expression too big" +msgstr "РегулÑрниÑÑ‚ израз е прекалено голÑм" + +#: support/regcomp.c:183 +msgid "Unmatched ) or \\)" +msgstr "„)“ или „\\)“ без еш" + +#: support/regcomp.c:676 +msgid "No previous regular expression" +msgstr "ÐÑма предхождащ регулÑрен израз" + +#: symbol.c:698 +#, c-format +msgid "function `%s': cannot use function `%s' as a parameter name" +msgstr "" +"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“: функциÑта „%s“ не може да Ñе ползва като име на параметър" + +#: symbol.c:828 +msgid "cannot pop main context" +msgstr "оÑновниÑÑ‚ контекÑÑ‚ не може да бъде изваден" diff -urN gawk-5.1.0/po/ca.po gawk-5.1.1/po/ca.po --- gawk-5.1.0/po/ca.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/ca.po 2021-10-27 07:58:41.000000000 +0300 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gawk 4.1.3h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2016-12-18 19:51+0100\n" "Last-Translator: Walter Garcia-Fontes \n" "Language-Team: Catalan \n" @@ -18,505 +18,520 @@ "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.0.1\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "de %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "s'ha intentat usar un valor escalar com a una matriu" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "s'ha intentat usar un paràmetre escalar `%s' com a una matriu" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "s'ha intentat usar la dada escalar `%s' com a una matriu" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "s'ha intentat usar la matriu `%s' en un context escalar" -#: array.c:575 +#: array.c:576 #, fuzzy, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: l'índex `%s' no està en la matriu `%s'" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "s'ha intentat usar la dada escalar `%s[\"%.*s\"]' com a una matriu" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, fuzzy, c-format msgid "%s: first argument is not an array" msgstr "asort: el primer argument no és una matriu" -#: array.c:824 +#: array.c:826 #, fuzzy, c-format msgid "%s: second argument is not an array" msgstr "split: el segon argument no és una matriu" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "" +"asort: no es pot usar una submatriu com a primer argument per al segon " +"argument" + +#: array.c:837 +#, fuzzy, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "asort: el primer argument no és una matriu" -#: array.c:838 +#: array.c:839 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "asort: el primer argument no és una matriu" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, fuzzy, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "asort: no es pot usar una submatriu com a primer argument per al segon " "argument" -#: array.c:849 +#: array.c:856 #, fuzzy, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "asort: no es pot usar una submatriu com a segon argument per al primer " "argument" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' no és vàlid com a nom de funció" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la funció de comparació d'ordenació `%s' no està definida" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s blocs han de tenir una part d'acció" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "cada regla ha de tenir un patró o una part d'acció" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "l'antic awk no suporta múltiples regles `BEGIN' i `END'" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' és una funció interna, no pot ser redefinida" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "la constant d'expressió regular `//' sembla un comentari en C++, però no ho " "és" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "la constant d'expressió regular `/%s/' sembla un comentari en C, però no ho " "és" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valors duplicats de casos al cos de l'expressió switch: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "" "s'ha detectat el cas predeterminat `default' duplicat a l'expressió switch " -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "no es permet `break' a fora d'un bucle o bifurcació" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "no es permet `continue' a fora d'un bucle" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "`next' usat a l'acció %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' usat a l'acció %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "`return' és usat fora del context d'una funció" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "el «print» simple en la regla BEGIN o END probablement ha de ser «print \"\"»" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "no es permet `delete' amb SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "no es permet `delete' a FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' és una extensió tawk no portable" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "les canonades bidireccionals multi-etapes no funcionen" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "expressió regular a la dreta d'una assignació" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "expressió regular a l'esquerra de l'operador `~' o `!~'" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "l'antic awk no dóna suport a la paraula clau `in' excepte després de `for'" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "expressió regular a la dreta de la comparació" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`getline' sense redirigir no és vàlid a dins de la regla `%s'" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "`getline' no redirigit sense definir dintre de l'acció FINAL" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "l'antic awk no suporta matrius multidimensionals" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "la crida de `length' sense parèntesis no és portable" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "les crides a funcions indirectes són una extensió gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, fuzzy, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "no es pot usar la variable especial `%s' per a una crida indirecta de funció" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "s'ha intentat usar la no-funció «%s» en una crida a funcions" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "expressió de subíndex no vàlida" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "advertiment: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "nova línia inesperada o final d'una cadena de caràcters" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, fuzzy, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "no es pot obrir el fitxer font `%s' per a lectura (%s)" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, fuzzy, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "no es pot obrir la llibreria compartida `%s' per a lectura (%s)" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "motiu desconegut" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, fuzzy, c-format msgid "cannot include `%s' and use it as a program file" msgstr "no es pot incloure `%s' i usar-lo com un fitxer de programa" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "ja s'ha inclòs el fitxer font `%s'" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "ja s'ha carregat la biblioteca compartida `%s'" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include és una extensió de gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "nom de fitxer buit després de @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load és una extensió de gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "fitxer buit després de @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "el text del programa en la línia de comandaments està buit" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, fuzzy, c-format msgid "cannot read source file `%s': %s" msgstr "no es pot llegir el fitxer font `%s' (%s)" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "el fitxer font `%s' està buit" -#: awkgram.y:3310 +#: awkgram.y:3317 #, fuzzy, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "Error PEBKAC: caràcter «\\%03o'» no vàlid al codi font" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "el fitxer font no finalitza amb un retorn de carro" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expressió regular sense finalitzar acaba amb `\\' al final del fitxer" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "expressió regular sense finalitzar" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "expressió regular sense finalitzar al final del fitxer" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "l'ús de `\\ #...' com a continuació de línia no és portable" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "la barra invertida no és l'últim caràcter en la línia" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "les matrius multidimensionals són una extensió gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, fuzzy, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX no permet l'operador `**'" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, fuzzy, c-format msgid "operator `%s' is not supported in old awk" msgstr "l'operador `^' no està suportat en l'antic awk" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "cadena sense finalitzar" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 #, fuzzy msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX no permet seqüències d'escapada `\\x'" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 #, fuzzy msgid "backslash string continuation is not portable" msgstr "l'ús de `\\ #...' com a continuació de línia no és portable" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "caràcter `%c' no vàlid en l'expressió" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' és una extensió de gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permet «%s»" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no està suportat en l'antic awk" -#: awkgram.y:4500 +#: awkgram.y:4507 #, fuzzy msgid "`goto' considered harmful!" msgstr "`goto' es considera perjudicial!\n" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d no és vàlid com a nombre d'arguments per a %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, fuzzy, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "%s: la cadena literal com a últim argument de substitució no té efecte" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s el tercer paràmetre no és un objecte intercanviable" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argument és una extensió de gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: el segon argument és una extensió de gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "índex: no es permet una constant regexp com a segon argument" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funció `%s': paràmetre `%s' ofusca la variable global" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "no es pot obrir `%s' per a escriptura: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "s'està enviant la llista de variables a l'eixida d'error estàndard" -#: awkgram.y:4930 +#: awkgram.y:4937 #, fuzzy, c-format msgid "%s: close failed: %s" msgstr "%s: tancament erroni (%s)" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() s'ha cridat dues vegades!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "hi ha hagut variables a l'ombra" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "nom de la funció `%s' definida prèviament" -#: awkgram.y:5091 +#: awkgram.y:5098 #, fuzzy, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "funció `%s»: no pot usar el nom de la funció com a paràmetre" -#: awkgram.y:5094 +#: awkgram.y:5101 #, fuzzy, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "funció `%s': no es pot usar la variable especial `%s' com a un paràmetre de " "funció" -#: awkgram.y:5098 +#: awkgram.y:5105 #, fuzzy, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "funció `%s': paràmetre `%s' ofusca la variable global" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funció `%s': paràmetre #%d, `%s', duplica al paràmetre #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "es crida a la funció `%s' però no s'ha definit" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "la funció `%s' està definida però no s'ha cridat mai directament" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" "l'expressió regular constant per al paràmetre #%d condueix a un valor booleà" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -525,66 +540,70 @@ "s'ha cridat a la funció `%s' amb espai entre el nom i el '(',\n" "o s'ha usat com a variable o matriu" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "s'ha intentat una divisió per zero" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "s'ha intentat una divisió per zero en `%%'" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "no es pot assignar un valor al resultat d'una expressió post-increment de " "camp" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "destí no vàlid d'assignació (opcode %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "la sentència no té efecte" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 #, fuzzy msgid "@namespace is a gawk extension" msgstr "@include és una extensió de gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -603,8 +622,8 @@ msgid "standard error" msgstr "sortida estàndard" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: s'ha rebut un argument que no és numèric" @@ -647,7 +666,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: `%s' no és un fitxer obert, canonada o co-procés" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, fuzzy, c-format msgid "%s: received non-string first argument" msgstr "índex: el primer argument rebut no és una cadena" @@ -665,45 +684,45 @@ msgid "`length(array)' is a gawk extension" msgstr "`length(array)' és una extensió de gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, fuzzy, c-format msgid "%s: received non-string argument" msgstr "system: s'ha rebut un argument que no és una cadena" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, fuzzy, c-format msgid "%s: received negative argument %g" msgstr "log: s'ha rebut l'argument negatiu %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: s'ha d'usar `count$' a tots els format o a cap" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "l'amplada de camp s'ignorarà per a l'especificador `%%'" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "la precisió s'ignorarà per a l'especificador `%%'" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "l'amplada de camp i la precisió s'ignoraran per a l'especificador `%%'" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no es permeten `$' en els formats awk" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy msgid "fatal: argument index with `$' must be > 0" msgstr "fatal: el recompte d'arguments amb `$' ha de ser > 0" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" @@ -711,143 +730,131 @@ "fatal: el recompte d'arguments %ld és major que el nombre total d'arguments " "proporcionats" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: no es permet `$' després d'un punt en el format" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: no es proporciona `$' per a l'ample o precisió del camp de posició" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "`l' manca de significat en els formats awk; serà ignorat" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "fatal: `l' no està permès en els formats POSIX de awk" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "`L' manca de significat en els formats awk; serà ignorat" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: `L' no està permès en els formats POSIX de awk" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "`h' manca de significat en els formats awk; serà ignorat" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: `h' no està permès en els formats POSIX de awk" - -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: el valor %g és massa gran per al format `%%c'" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: el valor %g no és un caràcter ampli vàlid" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: el valor %g està fora de rang per al format `%%%c'" -#: builtin.c:1505 +#: builtin.c:1483 #, fuzzy, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: el valor %g està fora de rang per al format `%%%c'" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "s'ignorarà el caràcter especificador de format `%c': no s'ha convertit cap " "argument" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: no hi ha prou arguments per a satisfer el format d'una cadena" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ desbordament per a aquest" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: l'especificador de format no conté lletra de control" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "s'han proporcionat masses arguments per a la cadena de format" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: sense arguments" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: sense arguments" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf: s'han intentat escriure a un final d'escriptura tancat a una " "canonada de doble via" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no és >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no és >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: la longitud sobre un nombre no enter %g serà truncada" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: la llargada %g és massa gran per a la indexació de cadenes de " "caràcters, es truncarà a %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: l'índex d'inici %g no és vàlid, usant 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: l'índex d'inici no enter %g serà truncat" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: la cadena font és de longitud zero" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: l'índex d'inici %g sobrepassa l'acabament de la cadena" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -855,160 +862,166 @@ "substr: la longitud %g a l'índex d'inici %g excedeix la longitud del primer " "argument (%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: el valor de format a PROCINFO[\"strftime\"] té tipus numèric" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, fuzzy, c-format msgid "%s: received non-numeric second argument" msgstr "lshift: el segon argument rebut no és numèric" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: el segon argument és més petit que 0 o massa gran per a time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: ssegon argument fora de rang per a time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: s'ha rebut una cadena de format buida" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: almenys un dels valors està forra del rang predeterminat" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "la funció 'system' no es permet fora del mode entorn de proves" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print: s'ha intentat escriure a un final d'escriptura tancat a una canonada " "de doble via" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referència a una variable sense inicialitzar `$%d'" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, fuzzy, c-format msgid "%s: received non-numeric first argument" msgstr "or: el primer argument rebut no és numèric" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: el tercer argument no és una matriu" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: no s'ha pogut obtenir el tercer argument" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: el tercer argument `%.*s' es tractarà com a 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: es pot cridar indirectament amb dos arguments" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "la crida indirecta a %s requereix almenys dos arguments" -#: builtin.c:3444 +#: builtin.c:3465 #, fuzzy, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): els valors fraccionaris sernn truncats" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): un valor de desplaçament massa gran donarà resultats estranys" -#: builtin.c:3483 +#: builtin.c:3504 #, fuzzy, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): els valors fraccionaris seran truncats" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): un valor de desplaçament massa gran donarà resultats estranys" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, fuzzy, c-format msgid "%s: called with less than two arguments" msgstr "or: cridat amb menys de dos arguments" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, fuzzy, c-format msgid "%s: argument %d is non-numeric" msgstr "or: l'argument %d no és numèric" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: l'argument #%d amb valor negatiu %Rg donarà resultats estranys" -#: builtin.c:3611 +#: builtin.c:3632 #, fuzzy, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): el valor negatiu donarà resultats estranys" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): el valor fraccionari serà truncat" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' no és una categoria local vàlida" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 #, fuzzy msgid "intdiv: third argument is not an array" msgstr "match: el tercer argument no és una matriu" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 #, fuzzy msgid "intdiv: division by zero attempted" msgstr "s'ha intentat una divisió per zero" -#: builtin.c:4080 +#: builtin.c:4106 #, fuzzy msgid "typeof: second argument is not an array" msgstr "split: el segon argument no és una matriu" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, fuzzy, c-format msgid "typeof: invalid argument type `%s'" msgstr "opció: paràmetre no vàlid - \"%s\"" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "" @@ -1018,466 +1031,587 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, fuzzy, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Escriviu proposició(ns) g(awk). Termineu amb la instrucció \"end\"\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "número invàlid de marc: %d" -#: command.y:297 +#: command.y:298 #, fuzzy, c-format msgid "info: invalid option - `%s'" msgstr "info: opció no vàlida - \"%s\"" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "source \"%s\": ja s'ha utilitzat." -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "save \"%s\": ordre no permesa." -#: command.y:341 +#: command.y:342 #, fuzzy msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "No es pot usar l'ordre `commands' per a ordres de punt d'interrupció/" "inspecció" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "no s'ha establert encara cap punt d'interrupció/verificació" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "número de punt d'interrupció/inspecció no vàlid" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Escriviu les ordres per a quan s'assoleix %s %d, una per línia.\n" -#: command.y:352 +#: command.y:353 #, fuzzy, c-format msgid "End with the command `end'\n" msgstr "Termineu amb l'ordre \"end\"\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' és vàlid sols a les ordres `commands' o `eval'" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "`silent' és vàlid sols a l'ordre `commands'" -#: command.y:375 +#: command.y:376 #, fuzzy, c-format msgid "trace: invalid option - `%s'" msgstr "traç: opció no vàlida - \"%s\"" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condició: número de punt d'interrupció/inspecció no vàlid" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "l'argument no és una cadena de caràcters" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, fuzzy, c-format msgid "option: invalid parameter - `%s'" msgstr "opció: paràmetre no vàlid - \"%s\"" -#: command.y:476 +#: command.y:477 #, fuzzy, c-format msgid "no such function - `%s'" msgstr "no existeix aquesta funció - \"%s\"" -#: command.y:533 +#: command.y:534 #, fuzzy, c-format msgid "enable: invalid option - `%s'" msgstr "enable: opció no vàlida - \"%s\"" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "especificació no vàlida de rang: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "valor no numèric per al número de camp" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "s'ha trobat un valor no numèric, s'esperava un valor numèric" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "valor enter no zero" -#: command.y:819 +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - imprimeix la traça de tot els N marcs interiors (exteriors " "si N < 0)." -#: command.y:821 +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" "break [[fitxer:]N|funció] - estableix el punt d'interrupció a la ubicació " "especificada." -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" "clear [[fitxer:]N|funció] - suprimeix els punts establerts prèviament." -#: command.y:825 +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [num] - inicia una llista d'ordres a executar quan s'arribi a un " "punt d'interrupció/inspecció." -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" "condition num [expr] - estableix o neteja una condició de punt d'interrupció " "o d'inspecció." -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" msgstr "continue [RECOMPTE] - continua el programa que s'està depurant." -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" "delete [punts d'interrupció] [rang] - esborra els punts d'interrupció " "especificats." -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" "disable [punts d'interrupció] [rang] - deshabilita els punts d'interrupció " "especificats." -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" msgstr "" "display [var] - imprimeix el valor de la variable cada cop que el programa " "s'atura" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" msgstr "down [N] - mou N marcs cap a baix a la pila." -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" "dump [filename] - aboca les instruccions a un fitxer o a la sortida " "estàndard." -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" "enable [once|del] [punts d'interrupció] [rang] - habilita els punts " "d'interrupció especificats." -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" msgstr "end - finalitza una llista de ordres o declaracions awk." -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "eval stmt|[p1, p2, ...] - avalua la(es) declaració(ns) awk." -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +#, fuzzy +#| msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" msgstr "exit - (igual que quit) surt del depurador." -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" msgstr "" "finish - executa fins que hi hagi un retorn del marc de pila seleccionat." -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" msgstr "frame [N] - selecciona i imprimeix el marc de pila amb número N." -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" msgstr "help [ordre] - imprimeix una llista d'ordres o una explica de l'ordre." -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" "ignore N RECOMPTE - estableix ignore-count del punt d'interrupció número N " "fins RECOMPTE." -#: command.y:857 +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" "list [-|+|[fitxer:]número-de-línia|funció|rang] - fes una llista la(es) " "línia(es) especificada(es)." -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" "next [RECOMPTE] - avança el programa pas per pas, tot procedint a través de " "les crides de subrutines." -#: command.y:863 +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [RECOMPTE] - avança una instrucció, però procedeix a través de crides " "de subrutines." -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "" "option [nom[=valor]] - estableix o mostra la(es) opció(ns) del depurador." -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" msgstr "print var [var] - imprimeix el valor de la variable o matriu." -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" msgstr "printf format, [arg], ... - sortida amb format." -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" msgstr "quit - surt del depurador." -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" msgstr "" "return [valor] - fes que el marc seleccionat de pila retorni a l'element que " "l'ha cridat." -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" msgstr "run - inicia o reinicia el programa que s'està executant." -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" msgstr "save filename - desa les ordres de la sessió a un fitxer." -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" msgstr "set var = valor - assigna un valor a una variable escalar." -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - suspèn els missatges habituals quan s'autra a un punt d'interrupció/" "inspecció." -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" msgstr "source file - executa una ordre des d'un fitxer." -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" "step [RECOMPTE] - avança pas per pas pel programa fins que arribi a una " "línia diferent de la font." -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" msgstr "stepi [RECOMPTE] - avança exactament una instrucció." -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" "tbreak [[fitxer:]N|funció] - estableix un punt temporari d'interrupció." -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" msgstr "trace on|off - imprimeix la instrucció abans d'executar-la." -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" "undisplay [N] - remou la(es) variable(s) de la llista automàtica " "visualització." -#: command.y:897 +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[fitxer:]N|funció] - executa fins que el programa arribi a una línia " "diferent a la línia N dins del marc actual." -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "unwatch [N] - remou la(es) variable(s) de la llista d'inspecció." -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" msgstr "up [N] - mou-te N marcs cap a dalt de la pila." -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" msgstr "watch var - estableix un punt d'inspecció per a una variable." -#: command.y:905 +#: command.y:906 +#, fuzzy +#| msgid "" +#| "where [N] - (same as backtrace) print trace of all or N innermost " +#| "(outermost if N < 0) frames." msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "on [N] - (igual que la traça inversa) imprimeix la traça de tots els N marcs " "interiors (exteriors si N < 0)." -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "error: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format msgid "cannot read command: %s\n" msgstr "no es pot llegir l'ordre (%s)\n" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format msgid "cannot read command: %s" msgstr "no es pot llegir l'ordre (%s)" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "caràcter no vàlida en la instucció" -#: command.y:1161 +#: command.y:1162 #, fuzzy, c-format msgid "unknown command - `%.*s', try help" msgstr "ordre desconeguda - \"%.*s\", prova l'ajuda" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "caràcter no vàlid" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "ordre no definida: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" "estableix o mostra el número de línies a mantenir al fitxer d'història." #: debug.c:259 -msgid "set or show the list command window size." +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "estableix o mostra la mida de la finestra de llista d'ordres." #: debug.c:261 -msgid "set or show gawk output file." +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "estableix o mostra el fitxer de sortida gawk." #: debug.c:263 -msgid "set or show debugger prompt." +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "estableix o mostra l'indicador del depurador." #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" "estableix(anul·la) o mostra el desament de la història d'ordres (valor=on|" "off)." #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "estableix(anul·la) o mostra el desament d'opcions (valor=on|off)." #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" "estableix(anul·la) o mostra el seguiment d'instruccions (valor=on|off)." #: debug.c:358 -msgid "program not running." +#, fuzzy +#| msgid "program not running." +msgid "program not running" msgstr "el programa no s'està executant." -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "el fitxer font `%s' està buit\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "no hi ha un fitxer font." -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format msgid "cannot find source file named `%s': %s" msgstr "no es pot trobar el fitxer font `%s' (%s)" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" "ADVERTIMENT: el fitxer font `%s' s'ha modificat des de la compilació del " "programa.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "línia número %d fora de rang; `%s' té %d línies" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "" "final de fitxer no esperat quan s'estava llegint el fitxer `%s', línia %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" "el fitxer font `%s' s'ha modificat des de l'inici de l'execució del programa" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Fitxer font actual: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Nombre de línies: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Fitxer font (línies): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1485,54 +1619,55 @@ "Ubicació habilitada per número disp\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tnúmero de accessos = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignora el(s) pròxim(s) %ld accés(sos)\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tcondició d'aturada: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tordres:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Marc actual: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Cridat per marc: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Cridador de marc: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Cap a main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Sense arguments.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "No hi ha locals.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1540,7 +1675,7 @@ "Totes les variables definides:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1548,7 +1683,7 @@ "Totes les funcions definides:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1556,7 +1691,7 @@ "Mostra automàticament les variables:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1564,389 +1699,401 @@ "Inspecciona les variables:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "no hi ha el símbol `%s' al context actual\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "`%s' no és una matriu\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = camp sense inicialitzar\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "la matriu `%s' està buida\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, fuzzy, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[\"%s\"] no està a la matriu `%s'\n" -#: debug.c:1188 +#: debug.c:1197 #, fuzzy, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s[\"%s\"]' no és una matriu\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' no és una variable escalar" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, fuzzy, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "s'ha intentat usar la matriu `%s[\"%s\"]' en un context escalar" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "s'ha intentat usar la dada escalar `%s[\"%s\"]' com a una matriu" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "`%s' és una funció" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "el punt d'inspecció %d és incondicional\n" -#: debug.c:1514 -#, c-format -msgid "No display item numbered %ld" +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "No hi ha un element de visualització numerat %ld" -#: debug.c:1517 -#, c-format -msgid "No watch item numbered %ld" +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "No hi ha un element d'inspecció numerat %ld" -#: debug.c:1543 +#: debug.c:1552 #, fuzzy, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d: [\"%s\"] no està a la matriu `%s'\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "s'ha intentat usar una dada escalar com a una matriu" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" "El punt d'inspecció %d s'ha esborrat perquè el paràmetre està fora d'abast.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "La vista %d s'ha suprimit perquè el paràmetre està fora de l'abast.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr "al fitxer `%s', línia %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " a `%s':%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\ten " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Segueixen més marcs de pila ...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "número no vàlid de rang" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: el punt d'interrupció %d (habilitat, ignora els %ld accessos " "següents), també s'ha establert a %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" "Nota: el punt d'interrupció %d (habilitat), també s'ha establert a %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: el punt d'interrupció %d (deshabilitat, ignora els %ld accessos " "següents), també s'ha establert a %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" "Nota: el punt d'interrupció %d (deshabilitat), també s'ha establert a %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Punt d'interrupció %d establert al fitxer `%s', línia %d\n" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "No es pot establir el punt d'interrupció al fitxer `%s'\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "el número de línia %d al fitxer `%s' està fora de rang" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format msgid "internal error: cannot find rule\n" msgstr "error intern: %s amb vname nul" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "No es pot establir el punt d'interrupció a `%s':%d\n" -#: debug.c:2404 +#: debug.c:2413 #, fuzzy, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "No est pot establir el punt d'interrupció a la funció `%s'\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" "el punt d'interrupció %d establert al fitxer `%s', línia %d és " "incondicional\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "el número de línia %d al fitxer `%s' està fora de rang" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Punt interrupció suprimit %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "No hi ha punt(s) d'interrupció a l'entrada a la funció `%s'\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "No hi ha un punt d'interrupció al fitxer `%s', línia #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "número no vàlid de punt d'interrupció" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Suprimir tots els punts d'interrupció (s o n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "s" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" "S'ignoraran el(s) %ld creuament(s) següent(s) del punt d'interrupció %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" "S'aturarà la pròxima vegada que s'assoleixi el punt d'interrupció %d.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Sols es poden depurar programes que tenen l'opció `-f'.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "No s'ha pogut reiniciar el depurador." -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "El programa ja està corrent. S'ha de reiniciar des del principi (s/n)?" -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "No s'ha reiniciat el programa\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "error: no es pot reiniciar, l'operació no està permesa\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "error (%s): no es pot reiniciar, s'ignoraran la resta de les ordres\n" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "S'està iniciant el programa: \n" -#: debug.c:2977 +#: debug.c:2988 #, fuzzy, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "El programa ha tingut la sortida %s amb el valor de sortida: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, fuzzy, c-format msgid "Program exited normally with exit value: %d\n" msgstr "El programa ha tingut la sortida %s amb el valor de sortida: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "El programa s'està executant. Voleu sortir tot i això (s/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "No s'ha detingut a cap punt d'interrupció; s'ignorarà l'argument.\n" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "número no vàlid de punt d'interrupció %d." -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "S'ignoraran els pròxims %ld creuaments de punt d'interrupció %d.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "'finish' no té significat al marc més extern main()\n" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "Executa fins retornar de " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "'return' no té significat al marc més extern main()\n" -#: debug.c:3386 +#: debug.c:3397 #, fuzzy, c-format msgid "cannot find specified location in function `%s'\n" msgstr "No es pot trobar la ubicació especificada a la funció `%s'\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "línia %d no vàlida de font al fitxer `%s'" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "No es pot trobar la ubicació especificada %d al fitxer `%s'\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "l'element no està a la matriu\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "variable sense tipus\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "S'està aturant a %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "'finish' no té significat amb salt no local '%s'\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' no té significat amb salt no local '%s'\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 #, fuzzy msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t------[Intro] per continuar o q [Intro] per sortir------" -#: debug.c:5141 +#: debug.c:5152 #, fuzzy, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%s\"] no està a la matriu `%s'" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "s'està enviant la sortida a la sortida estàndard\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "número no vàlid" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' no està permès al context actual; s'ignorarà la declaració" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' no està permès al context actual; s'ignorarà la declaració" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "No hi ha un símbol `%s' al context actual" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "no hi ha el símbol `%s' al context actual\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "tipus de node %d desconegut" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "opcode %d desconegut" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "l'opcode %s no és un operador o una paraula clau" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "desbordament del cau temporal en genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1957,71 +2104,71 @@ "\t# Pila de crida a les funcions:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' és una extensió de gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' és una extensió de gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "El valor BINMODE `%s' no és vàlid, es tractarà com 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "`%sFMT' especificació errònia `%s'" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "desactivant `--lint' degut a una assignació a `LINT'" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referència a un argument sense inicialitzar `%s'" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referència a una variable sense inicialitzar `%s'" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "s'ha intentat una referència de camp a partir d'un valor no numèric" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "s'ha intentat entrar una referència a partir d'una cadena nul·la" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "s'ha intentat accedir al camp %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referència a una variable sense inicialitzar `$%ld'" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "s'ha cridat a la funció `%s' amb més arguments dels declarats" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipus no esperat `%s'" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "s'ha intentat una divisió per zero en `/='" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "s'ha intentat una divisió per zero en `%%='" @@ -2112,84 +2259,84 @@ msgid "dynamic loading of libraries is not supported" msgstr "no està suportada la càrrega dinàmica de la biblioteca" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: no s'ha pogut llegir l'enllaç simbòlic `%s'" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: first argument is not a string" msgstr "do_writea: l'argument 0 no és una cadena de caràcters\n" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy msgid "stat: second argument is not an array" msgstr "split: el segon argument no és una matriu" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stata: arguments dolents" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: no s'ha pogut crear la variable %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts no està suportat en aquest sistema" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 #, fuzzy msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: no s'ha pogut crear la matriu" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: no s'ha pogut establir l'element" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: no s'ha pogut establir l'element" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: no s'ha pogut establir l'element" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: no s'ha pogut crear la matriu" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: no s'ha pogut establir l'element" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: cridat amb un nombre incorrecte d'arguments, s'esperaven 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "asort: el primer argument no és una matriu" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "split: el segon argument no és una matriu" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "match: el tercer argument no és una matriu" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: no s'ha pogut aplanar la matriu\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: s'ignorarà l'indicador FTS_NOSTAT furtiu. T'he enxampat!" @@ -2337,7 +2484,7 @@ msgid "chr: first argument is not a number" msgstr "asort: el primer argument no és una matriu" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir ha fallat: %s" @@ -2437,180 +2584,187 @@ msgid "sleep: not supported on this platform" msgstr "sleep: no està suportat en aquesta plataforma" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF s'inicialitza sobre un valor negatiu" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: el quart argument és una extensió gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: el quart argument no és una matriu" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "" +"asort: no es pot usar una submatriu com a segon argument per al primer " +"argument" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: el segon argument no és una matriu" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: no es pot usar una submatriu de segon argument per a quart argument" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: no es pot usar una submatriu de segon argument per a quart argument" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: no est pot usar una submatriu de quart argument per a segon argument" -#: field.c:1038 +#: field.c:1050 #, fuzzy msgid "split: null string for third arg is a non-standard extension" msgstr "split: la cadena nul·la per al tercer argument és una extensió de gawk" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: el quart argument no és una matriu" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: el tercer argument no és una matriu" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: el segon argument no és una matriu" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: no es pot usar la mateixa matriu per a segon i quart argument" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: no es pot usar una submatriu de segon argument per a quart argument" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: no es pot usar una submatriu de quart argument per a segon argument" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' és una extensió de gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, fuzzy, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "valor FIELDWIDTHS no vàlid, a prop de `%s'" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "la cadena nul·la per a `FS' és una extensió de gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "l'antic awk no suporta expressions regulars com a valor de `FS'" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' és una extensió gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: s'ha rebut retval nul" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 #, fuzzy msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: s'ha rebut retval nul" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 #, fuzzy msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: s'ha rebut retval nul" -#: gawkapi.c:198 +#: gawkapi.c:190 #, fuzzy, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: s'ha rebut retval nul" -#: gawkapi.c:385 +#: gawkapi.c:377 #, fuzzy msgid "add_ext_func: received NULL name_space parameter" msgstr "load_ext: s'ha rebut lib_name nul" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: s'ha rebut un node nul" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: s'ha rebut un valor nul" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: s'ha rebut una matriu nul·la" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: s'ha rebut un subíndex nul" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array: no s'ha pogut convertir l'índex %d\n" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array: no s'ha pogut convertir el valor %d\n" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "" -#: gawkapi.c:1365 +#: gawkapi.c:1358 #, fuzzy msgid "cannot find end of BEGINFILE rule" msgstr "«next» no es pot cridar des d'una regla BEGIN" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, fuzzy, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "no es pot obrir el fitxer font `%s' per a lectura (%s)" @@ -2620,31 +2774,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "l'argument `%s' de línia d'ordres és un directori: s'ignorarà" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format msgid "cannot open file `%s' for reading: %s" msgstr "no es pot obrir el fitxer `%s' per a lectura (%s)" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "la finalització del descriptor fd %d (`%s') ha fallat (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "mescla innecessària de `>' i `>>' per al fitxer `%.*s'" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "no est permeten redireccions en mode de proves" -#: io.c:787 +#: io.c:847 #, fuzzy, c-format msgid "expression in `%s' redirection is a number" msgstr "l'expressió en la redirecció `%s' solt té un valor numèric" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "l'expressió per a la redirecció `%s' té un valor de cadena nul·la" -#: io.c:796 +#: io.c:856 #, fuzzy, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2652,289 +2861,289 @@ "el fitxer `%s' per a la redirecció `%s' pot ser resultat d'una expressió " "lògica" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "mescla innecessària de `>' i `>>' per al fitxer `%.*s'" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "no es pot obrir la canonada `%s' per a l'eixida (%s)" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "no es pot obrir la canonada `%s' per a l'entrada (%s)" -#: io.c:950 +#: io.c:1007 #, fuzzy, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "gettimeofday: no està suportat en aquesta plataforma" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" "no es pot obrir una canonada bidireccional `%s' per a les entrades/eixides " "(%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format msgid "cannot redirect from `%s': %s" msgstr "no es pot redirigir des de `%s' (%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format msgid "cannot redirect to `%s': %s" msgstr "no es pot redirigir cap a `%s' (%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "s'ha arribat al límit del sistema per a fitxers oberts: es començarà a " "multiplexar els descriptors de fitxer" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "la finalització de `%s' ha fallat (%s)" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "masses canonades o fitxers d'entrada oberts" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: el segon argument hauria de ser `to' o `from'" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' no és un fitxer obert, canonada o co-procés" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "finalització d'una redirecció que no s'ha obert" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: la redirecció `%s' no s'obre amb `|&', s'ignora el segon argument" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "estat de fallada (%d) en la finalització de la canonada `%s' (%s)" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "estat de fallada (%d) en la finalització de la canonada `%s' (%s)" + +#: io.c:1405 #, fuzzy, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "estat de falla (%d) en la finalització del fitxer `%s' (%s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "no s'aporta la finalització explícita del socket `%s'" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "no s'aporta la finalització explícita del co-procés `%s'" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "no s'aporta la finalització explícita de la canonada `%s'" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "no s'aporta la finalització explícita del fitxer `%s'" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format msgid "error writing standard output: %s" msgstr "error en escriure a la sortida estàndard (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format msgid "error writing standard error: %s" msgstr "error en escriure a la sortida d'error estàndard (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "la neteja de la canonada de `%sx' ha fallat (%s)." -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "la neteja de la canonada per al co-procés de `%sx' ha fallat (%s)." -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "la neteja del fitxer `%s' ha fallat (%s)." -#: io.c:1610 +#: io.c:1670 #, fuzzy, c-format msgid "local port %s invalid in `/inet': %s" msgstr "port local %s no vàlid a `/inet'" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "port local %s no vàlid a `/inet'" -#: io.c:1636 +#: io.c:1696 #, fuzzy, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "amfitrió remot i informació de port (%s, %s) no vàlids" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "amfitrió remot i informació de port (%s, %s) no vàlids" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "les comunicacions TCP/IP no estan suportades" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "no es pot obrir `%s', mode `%s'" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format msgid "close of master pty failed: %s" msgstr "ha fallat el tancament del pty mestre (%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format msgid "close of stdout in child failed: %s" msgstr "" "ha fallat la finalització de la sortida estàndard en els processos fills (%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "ha fallat el trasllat del pty esclau cap a l'eixida estàndard dels processos " "fills (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format msgid "close of stdin in child failed: %s" msgstr "" "ha fallat la finalització de l'entrada estàndard en els processos fills (%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "ha fallat el trasllat del pty esclau cap a l'entrada estàndard dels " "processos fills (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format msgid "close of slave pty failed: %s" msgstr "ha fallat el tancament del pty esclau (%s)" -#: io.c:2265 +#: io.c:2325 #, fuzzy msgid "could not create child process or open pty" msgstr "no es pot crear el procés fill per a `%s' (fork: %s)" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "ha fallat la redirecció cap a l'eixida estàndard dels processos fills (dup: " "%s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "ha fallat la redirecció cap a l'entrada estàndard dels processos fills (dup: " "%s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy msgid "restoring stdout in parent process failed" msgstr "ha fallat la restauració de l'eixida estàndard en el procés pare\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy msgid "restoring stdin in parent process failed" msgstr "ha fallat la restauració de l'entrada estàndard en el procés pare\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format msgid "close of pipe failed: %s" msgstr "ha fallat la finalització de la canonada (%s)" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "`|&' no està suportat" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format msgid "cannot open pipe `%s': %s" msgstr "no es pot obrir la canonada `%s' (%s)" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "no es pot crear el procés fill per a `%s' (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" "getline: s'ha intentat llegir d'un final de lectura tancada d'una canonada " "de doble via" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: s'ha rebut un punter nul" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "l'analitzador d'entrades `%s' està en conflicte amb analitzador d'entrades `" "%s' instal·lat prèviament" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'analitzador d'entrada `%s' no ha pogut obrir `%s'" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: s'ha rebut un punter nul" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2942,16 +3151,16 @@ "l'embolcall de sortida `%s' està en conflicte amb l'embolcall de sortida `" "%s' instal·lat prèviament" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "l'embolcall de sortida `%s' no ha pogut obrir `%s'" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: s'ha rebut un punter nul" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2960,216 +3169,222 @@ "el processsador de dues vies `%s' està en conflicte amb el processador de " "dues vies `%s' instal·lat prèviament" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "el processador de dues vies `%s' no ha pogut obrir `%s'" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "el fitxer de dades `%s' està buit" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "no s'ha pogut assignar més memòria d'entrada" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicaràcter de `RS' és una extensió de gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "la comunicació IPv6 no està suportada" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "la variable d'entorn `POSIXLY_CORRECT' està establerta: usant `--posix'" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' solapa a `--traditional'" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix' i `--traditional' solapen a `--non-decimal-data'" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' anul·la a `--characters-as-bytes'" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "executar %s com a setuid root pot ser un problema de seguretat" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format msgid "cannot set binary mode on stdin: %s" msgstr "no es pot establir el mode binari en l'entrada estàndard (%s)" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format msgid "cannot set binary mode on stdout: %s" msgstr "no es pot establir el mode en l'eixida estàndard (%s)" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format msgid "cannot set binary mode on stderr: %s" msgstr "no es pot establir el mode en l'eixida d'error estàndard (%s)" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "no hi ha cap text per al programa!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Ús: %s [opcions d'estil POSIX o GNU] -f fitx_prog [--] fitxer ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Ús: %s [opcions d'estil POSIX o GNU] [--] %cprograma%c fitxer ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcions POSIX:\t\tOpcions llargues GNU: (estàndard)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fitx_prog\t\t--file=fitx_prog\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs (fs=sep_camp)\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valor\t\t--assign=var=valor\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opcions curtes:\t\tOpcions llargues GNU: (extensions)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[file]\t\t--debug[=file]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=fitxer a incloure\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l library\t\t--load=biblioteca\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[file]\t\t--pretty-print[=file]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 #, fuzzy msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 #, fuzzy msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy msgid "" "\n" @@ -3186,7 +3401,7 @@ "és la secció `Informant sobre problemes i errors' a la versió impresa.\n" "Informeu dels errors de traducció a \n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3196,7 +3411,7 @@ "De forma predeterminada llegeix l'entrada estàndard i escriu a la sortida " "estàndar.\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format msgid "" "Examples:\n" @@ -3207,7 +3422,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' fitxer\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3226,7 +3441,7 @@ "Llicència, o (a la vostra elecció) qualsevol versió posterior.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3240,7 +3455,7 @@ "Per a més detalls consulteu la Llicència Pública General de GNU.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3248,11 +3463,11 @@ "Junt amb aquest programa hauríeu d'haver rebut una còpia de la Llicència\n" "Pública General de GNU; si no és així, vegeu http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft no permet inicialitzar FS a un tabulador en la versió POSIX de awk" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3261,166 +3476,172 @@ "%s: `%s' l'argument per a `-v' no està en forma `var=valor'\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' no és nom legal de variable" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' no és un valor de variable, s'esperava fitxer `%s=%s'" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "no es pot usar el nom de la funció integrada `%s' com a nom de variable" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "no es pot usar el nom de la funció interna `%s' com nom de variable" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "excepció de coma flotant" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "error fatal: error intern" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "error fatal: error intern: segfault" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error intern: sobreeiximent de pila" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "no s'ha pre-obert el descriptor fd per a %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "no es pot pre-obrir /dev/null per al descriptor fd %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "s'ignonarà l'argument buit de `-e/--source'" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy msgid "`--profile' overrides `--pretty-print'" msgstr "`--posix' solapa a `--traditional'" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignorat: no s'ha compilat el suport MPFR/GMP" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: no es reconeix l'opció `-W %s', serà ignorada\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opció requereix un argument -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "Valor PREC `%.*s' no és vàlid" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "Valor RNDMODE `%.*s' no és vàlid" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argument rebut no és numèric" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segon argument rebut no és numèric" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +msgid "%s: received negative argument %.*s" +msgstr "log: s'ha rebut l'argument negatiu %g" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: s'ha rebut un argument no numèric" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: s'ha rebut un argument que no és numèric" -#: mpfr.c:816 +#: mpfr.c:874 #, fuzzy msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): el valor negatiu donarà resultats estranys" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): el valor fraccionari serà truncat" -#: mpfr.c:832 +#: mpfr.c:890 #, fuzzy, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "cmpl(%Zd): els valors negatius donaran resultats estranys" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: s'ha rebut un argument no numèric #%d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: l'argument #%d té valor no vàlid %Rg, s'usarà 0" -#: mpfr.c:871 +#: mpfr.c:929 #, fuzzy msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: l'argument #%d amb valor negatiu %Rg donarà resultats estranys" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: l'argument #%d amb valor fraccional %Rg serà truncat" -#: mpfr.c:892 +#: mpfr.c:950 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: l'argument #%d amb valor negatiu %Zd donarà resultats estranys" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: cridat amb menys de dos arguments" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: cridat amb menys de dos arguments" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xort: cridat amb menys de dos arguments" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: s'ha rebut un argument que no és numèric" -#: mpfr.c:1211 +#: mpfr.c:1269 #, fuzzy msgid "intdiv: received non-numeric first argument" msgstr "and: el primer argument rebut no és numèric" -#: mpfr.c:1213 +#: mpfr.c:1271 #, fuzzy msgid "intdiv: received non-numeric second argument" msgstr "lshift: el segon argument rebut no és numèric" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "línia cmd.:" @@ -3430,20 +3651,20 @@ msgid "could not make typed regex" msgstr "expressió regular sense finalitzar" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "l'antic awk no dóna suport a la seqüencia d'escapada `\\%c'" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX no permet seqüències d'escapada `\\x'" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "no hi ha dígits hexadecimals en la seqüència d'escapada `\\x'" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3452,15 +3673,19 @@ "probablement no s'han interpretat els caràcters hex escape \\x%.*s of %d de " "la manera que esperàveu" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "la seqüència d'escapada `\\%c' és tractada com a una simple `%c'" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "S'han detectat dades multibyte no vàlides. Pot haver-hi una discordança " "entre les vostres dades i la vostra configuració local" @@ -3507,11 +3732,11 @@ msgid "internal error: %s with null vname" msgstr "error intern: %s amb vname nul" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "error intern: funció integrada amb fname nul" -#: profile.c:1317 +#: profile.c:1318 #, fuzzy, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3520,7 +3745,7 @@ "\t# Extensions carregades (-l i/o @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, fuzzy, c-format msgid "" "\n" @@ -3530,12 +3755,12 @@ "\t# Extensions carregades (-l i/o @load)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil gawk, creat %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3544,7 +3769,7 @@ "\n" "\t# Funcions, llistades alfabèticament\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipus desconegut de redireccionament %d" @@ -3574,39 +3799,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "el component regexp `%.*s' probablement hauria de ser `[%.*s]'" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "[ sense aparellar" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "classe no vàlida de caràcters" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "la sintaxi de la classe de caràcters és [[:espai:]], no [:espai:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "seqüència d'escapada \\ sense finalitzar" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "contingut no vàlid de \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "l'expressió regular és massa gran" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "( sense aparellar" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "no s'ha especificat una sintaxi" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") sense aparellar" @@ -3738,16 +3963,32 @@ msgid "No previous regular expression" msgstr "No hi ha una expressió regular prèvia" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "funció %s»: no es pot usar la funció `%s' com a nom de paràmetre" -#: symbol.c:821 +#: symbol.c:828 #, fuzzy msgid "cannot pop main context" msgstr "no es pot mostrar el context principal" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "`L' manca de significat en els formats awk; serà ignorat" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fatal: `L' no està permès en els formats POSIX de awk" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "`h' manca de significat en els formats awk; serà ignorat" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fatal: `h' no està permès en els formats POSIX de awk" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "No hi ha un símbol `%s' al context actual" + #, fuzzy #~ msgid "fts: first parameter is not an array" #~ msgstr "asort: el primer argument no és una matriu" @@ -4185,9 +4426,6 @@ #~ msgid "`nextfile' cannot be called from an END rule" #~ msgstr "«nextfile» no es pot cridar des d'una regla FINAL" -#~ msgid "statement has no effect" -#~ msgstr "la sentència no té efecte" - #~ msgid "assignment used in conditional context" #~ msgstr "assignació usada en un context condicional" diff -urN gawk-5.1.0/po/ChangeLog gawk-5.1.1/po/ChangeLog --- gawk-5.1.0/po/ChangeLog 2020-04-14 14:41:27.000000000 +0300 +++ gawk-5.1.1/po/ChangeLog 2021-10-27 07:53:31.000000000 +0300 @@ -1,3 +1,58 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-23 Antonio Giovanni Colombo + + * it.po: Updated. + +2021-09-23 Antonio Giovanni Colombo + + * it.po: Updated. + +2021-09-10 Arnold D. Robbins + + * ko.po, pt.po, sv.po: Updated. + +2021-09-06 Arnold D. Robbins + + * bg.po, de.po, fr.po, pt_BR.po: Updated. + +2021-05-06 Antonio Giovanni Colombo + + * it.po: Updated. + +2021-02-13 Arnold D. Robbins + + * bg.po: New translation! (Bulgarian) + +2021-01-29 Arnold D. Robbins + + * es.po: Updated. + +2020-07-20 gettextize + + * Makefile.in.in: Upgrade to gettext-0.20.2. + * Rules-quot: Upgrade to gettext-0.20.2. + * en@boldquot.header: Upgrade to gettext-0.20.2. + * en@quot.header: Upgrade to gettext-0.20.2. + * insert-header.sin: Upgrade to gettext-0.20.2. + * remove-potcdate.sin: Upgrade to gettext-0.20.2. + +2020-07-12 Arnold D. Robbins + + * ko.po: Updated. + +2020-05-14 Arnold D. Robbins + + * sv.po: Updated. + +2020-05-08 Arnold D. Robbins + + * zh_CN.po: Updated. + * sr.po: New file. + * LINGUAS: Updated. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/po/da.po gawk-5.1.1/po/da.po --- gawk-5.1.0/po/da.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/da.po 2021-10-27 07:58:41.000000000 +0300 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gawk 4.1.1d\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2015-05-18 12:37+0200\n" "Last-Translator: Keld Simonsen \n" "Language-Team: Danish \n" @@ -21,502 +21,516 @@ "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "fra %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "forsøg på at bruge en skalar som array" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "forsøg på at bruge skalarparameteren '%s' som et array" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "forsøg på at bruge skalar '%s' som et array" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "forsøg på at bruge array '%s' i skalarsammenhæng" -#: array.c:575 +#: array.c:576 #, fuzzy, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "forsøg på at bruge skalaren '%s[\"%.*s\"]' som array" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, fuzzy, c-format msgid "%s: first argument is not an array" msgstr "asort: første argument er ikke et array" -#: array.c:824 +#: array.c:826 #, fuzzy, c-format msgid "%s: second argument is not an array" msgstr "split: andet argument er ikke et array" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "" +"asort: kan ikke bruge et underarray af første argument for andet argument" + +#: array.c:837 +#, fuzzy, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "asort: første argument er ikke et array" -#: array.c:838 +#: array.c:839 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "asort: første argument er ikke et array" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, fuzzy, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "asort: kan ikke bruge et underarray af første argument for andet argument" -#: array.c:849 +#: array.c:856 #, fuzzy, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "asort: kan ikke bruge et underarray af andet argument for første argument" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' er ugyldigt som funktionsnavn" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s-blokke skal have en handlingsdel" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "hver regel skal have et mønster eller en handlingsdel" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" "gamle versioner af awk understøtter ikke flere 'BEGIN'- eller 'END'-regler" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "'%s' er en indbygget funktion, den kan ikke omdefineres" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "regexp-konstanten '//' ser ud som en C++-kommentar, men er det ikke" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "regexp-konstanten '/%s/' ser ud som en C-kommentar, men er det ikke" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "dublet case-værdier i switch-krop %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "dublet 'default' opdaget i switch-krop" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' uden for en løkke eller switch er ikke tilladt" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "'continue' uden for en løkke er ikke tilladt" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "'next' brugt i %s-handling" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "'nextfile' brugt i %s-handling" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "'return' brugt uden for funktion" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "alenestående 'print' i BEGIN eller END-regel skulle muligvis være 'print " "\"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "'delete array' er en ikke-portabel udvidelse fra tawk" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "flertrins dobbeltrettede datakanaler fungerer ikke" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "regulært udtryk i højreleddet af en tildeling" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "regulært udtryk på venstre side af en '~'- eller '!~'-operator" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "gamle versioner af awk understøtter ikke nøgleordet 'in' undtagen efter 'for'" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "regulært udtryk i højreleddet af en sammenligning" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "ikke-omdirigeret 'getline' ugyldig inden i '%s'-regel" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "ikke-omdirigeret 'getline' udefineret inden i END-handling" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "gamle versioner af awk understøtter ikke flerdimensionale array" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "kald af 'length' uden parenteser er ikke portabelt" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "indirekte funktionskald er en gawk-udvidelse" -#: awkgram.y:2010 +#: awkgram.y:2017 #, fuzzy, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "kan ikke bruge specialvariabel '%s' til indirekte funktionskald" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "forsøg på at bruge ikke-funktionen '%s' som et funktionskald" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "ugyldigt indeksudtryk" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "advarsel: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "uventet nylinjetegn eller strengafslutning" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, fuzzy, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "kan ikke åbne kildefilen '%s' for læsning (%s)" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, fuzzy, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "kan ikke åbne delt bibliotek '%s' for læsning (%s)" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "ukendt årsag" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "allerede indlæst delt bibliotek '%s'" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "tomt filnavn efter @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load er en gawk-udvidelse" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "tomt filnavn efter @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "tom programtekst på kommandolinjen" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, fuzzy, c-format msgid "cannot read source file `%s': %s" msgstr "kan ikke læse kildefil '%s' (%s)" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "kildefilen '%s' er tom" -#: awkgram.y:3310 +#: awkgram.y:3317 #, fuzzy, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "Ugyldigt tegn i kommando" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "kildefilen slutter ikke med en ny linje" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "uafsluttet regulært udtryk slutter med '\\' i slutningen af filen" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "uafsluttet regulært udtryk" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "uafsluttet regulært udtryk i slutningen af filen" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "brug af '\\ #...' for linjefortsættelse er ikke portabelt" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "sidste tegn på linjen er ikke en omvendt skråstreg" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 #, fuzzy msgid "multidimensional arrays are a gawk extension" msgstr "indirekte funktionskald er en gawk-udvidelse" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, fuzzy, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX tillader ikke operatoren '**'" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, fuzzy, c-format msgid "operator `%s' is not supported in old awk" msgstr "operatoren '^' understøttes ikke i gamle versioner af awk" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "uafsluttet streng" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 #, fuzzy msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX tillader ikke '\\x'-kontrolsekvenser" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 #, fuzzy msgid "backslash string continuation is not portable" msgstr "brug af '\\ #...' for linjefortsættelse er ikke portabelt" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "ugyldigt tegn '%c' i udtryk" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' er en gawk-udvidelse" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillader ikke '%s'" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "'%s' understøttes ikke i gamle versioner af awk" -#: awkgram.y:4500 +#: awkgram.y:4507 #, fuzzy msgid "`goto' considered harmful!" msgstr "'goto' anses for skadelig!\n" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d er et ugyldigt antal argumenter for %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, fuzzy, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: bogstavelig streng som sidste argument til erstatning har ingen effekt" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argument er ikke et ændringsbart objekt" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: tredje argument er en gawk-udvidelse" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: andet argument er en gawk-udvidelse" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: regexp-konstant som andet argument er ikke tilladt" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kunne ikke åbne '%s' for skrivning: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "sender variabelliste til standard fejl" -#: awkgram.y:4930 +#: awkgram.y:4937 #, fuzzy, c-format msgid "%s: close failed: %s" msgstr "%s: lukning mislykkedes (%s)" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kaldt to gange!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "der var skyggede variable." -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnavnet '%s' er allerede defineret" -#: awkgram.y:5091 +#: awkgram.y:5098 #, fuzzy, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: awkgram.y:5094 +#: awkgram.y:5101 #, fuzzy, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "funktionen '%s': kan ikke bruge specialvariabel '%s' som en " "funktionsparameter" -#: awkgram.y:5098 +#: awkgram.y:5105 #, fuzzy, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen '%s' kaldt, men aldrig defineret" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen '%s' defineret, men aldrig kaldt direkte" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstant regulært udtryk for parameter %d giver en boolesk værdi" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -525,64 +539,68 @@ "funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n" "eller brugt som en variabel eller et array" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "forsøgte at dividere med nul" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "forsøgte at dividere med nul i '%%'" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5805 +#: awkgram.y:5828 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d er et ugyldigt antal argumenter for %s" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "kommandoen har ingen effekt" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 #, fuzzy msgid "@namespace is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -601,8 +619,8 @@ msgid "standard error" msgstr "standard ud" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" @@ -639,7 +657,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: '%s' er ikke en åben fil, datakanal eller ko-proces" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, fuzzy, c-format msgid "%s: received non-string first argument" msgstr "indeks: første argument er ikke en streng" @@ -657,182 +675,170 @@ msgid "`length(array)' is a gawk extension" msgstr "'length(array)' er en gawk-udvidelse" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, fuzzy, c-format msgid "%s: received non-string argument" msgstr "system: fik et argument som ikke er en streng" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, fuzzy, c-format msgid "%s: received negative argument %g" msgstr "log: fik et negativt argument %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: skal bruge 'count$' på alle formater eller ikke nogen" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "feltbredde ignoreret for '%%'-angivelse" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "præcision ignoreret for '%%'-angivelse" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "feltbredde og præcision ignoreret for '%%'-angivelse" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: '$' tillades ikke i awk-formater" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy msgid "fatal: argument index with `$' must be > 0" msgstr "fatal: argumentantallet med '$' skal være > 0" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "fatal: argumentantallet %ld er større end antal givne argumenter" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: '$' tillades ikke efter et punktum i formatet" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: intet '$' angivet for bredde eller præcision af positionsangivet felt" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "'l' er meningsløst i awk-formater, ignoreret" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "fatal: 'l' tillades ikke i POSIX awk-formater" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "'L' er meningsløst i awk-formater, ignoreret" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: 'L' tillades ikke i POSIX awk-formater" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "'h' er meningsløst i awk-formater, ignoreret" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: 'h' tillades ikke i POSIX awk-formater" - -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: værdi %g er for stor for %%c-format" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: værdi %g er ikke et gyldigt bredt tegn" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: værdi %g er uden for område for '%%%c'-format" -#: builtin.c:1505 +#: builtin.c:1483 #, fuzzy, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: værdi %g er uden for område for '%%%c'-format" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: for få argumenter til formatstrengen" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ sluttede her" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecifikation har intet kommandobogstav" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "for mange argumenter til formatstrengen" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: ingen argumenter" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: ingen argumenter" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: længden %g er ikke >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: længden %g er ikke >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: længden %g som ikke er et heltal vil blive trunkeret" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: længden %g for stor til strengindeksering, trunkerer til %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindeks %g er ugyldigt, bruger 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindeks %g som ikke er et heltal vil blive trunkeret" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: kildestrengen er tom" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindeks %g er forbi slutningen på strengen" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -840,155 +846,161 @@ "substr: længden %g ved startindeks %g overskrider længden af første argument " "(%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatværdi i PROCINFO[\"strftime\"] har numerisk type" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, fuzzy, c-format msgid "%s: received non-numeric second argument" msgstr "or: fik et ikke-numerisk andet argument" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andet argument mindre end 0 eller for stort til time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: andet argument uden for område for time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: fik en tom formatstreng" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: mindst én af værdierne er udenfor standardområdet" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "reference til ikke-initieret felt '$%d'" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, fuzzy, c-format msgid "%s: received non-numeric first argument" msgstr "or: fik et ikke-numerisk første argument" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +msgid "%s: cannot use %s as third argument" +msgstr "" +"asort: kan ikke bruge et underarray af første argument for andet argument" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: tredje argument '%.*s' behandlet som 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kan kun kaldes indirekte med to argumenter" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "indirekte kald til %s kræver mindst to argumenter" -#: builtin.c:3444 +#: builtin.c:3465 #, fuzzy, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): negative værdier vil give mærkelige resultater" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): kommatalsværdier vil blive trunkeret" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): for stor skifteværdi vil give mærkelige resultater" -#: builtin.c:3483 +#: builtin.c:3504 #, fuzzy, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): negative værdier vil give mærkelige resultater" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): kommatalsværdier vil blive trunkeret" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): for stor skifteværdi vil give mærkelige resultater" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, fuzzy, c-format msgid "%s: called with less than two arguments" msgstr "or: kaldt med mindre end to argumenter" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, fuzzy, c-format msgid "%s: argument %d is non-numeric" msgstr "or: argumentet %d er ikke-numerisk" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" -#: builtin.c:3611 +#: builtin.c:3632 #, fuzzy, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): negativ værdi vil give mærkelige resultater" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): kommatalsværdi vil blive trunkeret" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 #, fuzzy msgid "intdiv: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 #, fuzzy msgid "intdiv: division by zero attempted" msgstr "forsøgte at dividere med nul" -#: builtin.c:4080 +#: builtin.c:4106 #, fuzzy msgid "typeof: second argument is not an array" msgstr "split: andet argument er ikke et array" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, fuzzy, c-format msgid "typeof: invalid argument type `%s'" msgstr "flag: ugyldig parameter - \"%s\"" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "" @@ -998,470 +1010,474 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, fuzzy, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Indtast (g)awk sætninger. Slut med kommandoen \"end\"\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "ugyldigt rammenummer: %d" -#: command.y:297 +#: command.y:298 #, fuzzy, c-format msgid "info: invalid option - `%s'" msgstr "info: ugyldigt flag - '%s'" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:352 +#: command.y:353 #, fuzzy, c-format msgid "End with the command `end'\n" msgstr "Indtast (g)awk sætninger. Slut med kommandoen \"end\"\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:375 +#: command.y:376 #, fuzzy, c-format msgid "trace: invalid option - `%s'" msgstr "trace: ugyldigt flag - '%s'" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "argument er ikke en streng" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, fuzzy, c-format msgid "option: invalid parameter - `%s'" msgstr "flag: ugyldig parameter - \"%s\"" -#: command.y:476 +#: command.y:477 #, fuzzy, c-format msgid "no such function - `%s'" msgstr "ingen sådan funktion - \"%s\"" -#: command.y:533 +#: command.y:534 #, fuzzy, c-format msgid "enable: invalid option - `%s'" msgstr "enable: ugyldigt flag - '%s'" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "Ugyldig intervalangivelse: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "ikke-numerisk værdi for felt-nummer" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "ikke-numerisk værdi fundet, numerisk forventet" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "ikke-nul heltalsværdi" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" msgstr "" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +msgid "down [N] - move N frames down the stack" msgstr "" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +msgid "end - end a list of commands or awk statements" msgstr "" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" msgstr "" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" msgstr "" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" msgstr "" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" msgstr "" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" msgstr "" -#: command.y:871 -msgid "quit - exit debugger." -msgstr "" +#: command.y:872 +#, fuzzy +#| msgid "Failed to restart debugger" +msgid "quit - exit debugger" +msgstr "Kunne ikke genstarte fejlsøger" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +msgid "run - start or restart executing program" msgstr "" -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +msgid "save filename - save commands from the session to file" msgstr "" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" msgstr "" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +msgid "source file - execute commands from file" msgstr "" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" msgstr "" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +msgid "trace on|off - print instruction before executing" msgstr "" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "" -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +msgid "up [N] - move N frames up the stack" msgstr "" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" msgstr "" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "fejl: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format msgid "cannot read command: %s\n" msgstr "kan ikke læse kommando (%s)\n" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format msgid "cannot read command: %s" msgstr "kan ikke læse kommando (%s)" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "Ugyldigt tegn i kommando" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "Ugyldigt tegn" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "ikke-defineret kommando: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" #: debug.c:259 -msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "" #: debug.c:261 -msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "" #: debug.c:263 -msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" #: debug.c:358 -msgid "program not running." -msgstr "" +#, fuzzy +#| msgid "argument not a string" +msgid "program not running" +msgstr "argument er ikke en streng" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "kildefil '%s' er tom.\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "ingen aktuel kildefil." -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format msgid "cannot find source file named `%s': %s" msgstr "kan ikke finde kildefil kaldet '%s' (%s)" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "linjenummer %d uden for område; '%s' har %d linjer" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "uventet nylinjetegn ved læsning af fil '%s', lije %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Aktuel kildefil %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Ingen argumenter.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Ingen lokale.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1469,7 +1485,7 @@ "Alle definerede funktioner:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1477,7 +1493,7 @@ "Vis variable automatisk:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1485,378 +1501,388 @@ "Overvåg variable:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "'intet symbol '%s' i den aktuelle kontekst\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "'%s' er ikke et array\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = ikke-initieret felt\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "array '%s' er tomt\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, fuzzy, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[\"%s\"] findes ikke i array '%s'\n" -#: debug.c:1188 +#: debug.c:1197 #, fuzzy, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s[\"%s\"]' er ikke et array\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "'%s' er ikke en skalar variabel" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, fuzzy, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "forsøg på at bruge array '%s[\"%s\"]' i skalarsammenhæng" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "forsøg på at bruge skalaren '%s[\"%s\"]' som array" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "'%s' er en funktion" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "" -#: debug.c:1543 +#: debug.c:1552 #, fuzzy, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d: [\"%s\"] ikke i array '%s'\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "forsøg på at bruge en skalarværdi som array" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " i fil `%s', linje %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " ved '%s':%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\ti " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "Ugyldigt rammenummer" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "Kan ikke sætte stoppunkt i funktion '%s'\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "linjenummer %d i fil %s er uden for det tilladte område" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format msgid "internal error: cannot find rule\n" msgstr "intern fejl: %s med null vname" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "Kan ikke sætte stoppunkt i funktion '%s'\n" -#: debug.c:2404 +#: debug.c:2413 #, fuzzy, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "Kan ikke sætte stoppunkt i funktion '%s'\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "linjenummer %d i fil %s er uden for det tilladte område" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Slettet stoppunkt %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Intet stoppunkt ved fil `%s', linje #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "Ugyldigt stoppunktsnummer" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Slet alle stoppunkter? (j eller n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "j" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Kunne ikke genstarte fejlsøger" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Program ikke genstartet\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Starter program: \n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "Ugyldigt stoppunktsnummer %d." -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "Kør til returnering fra " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3386 +#: debug.c:3397 #, fuzzy, c-format msgid "cannot find specified location in function `%s'\n" msgstr "Kan ikke sætte stoppunkt i funktion '%s'\n" -#: debug.c:3394 +#: debug.c:3405 #, fuzzy, c-format msgid "invalid source line %d in file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "allerede inkluderet kildefil '%s'" -#: debug.c:3441 +#: debug.c:3452 #, fuzzy, c-format msgid "element not in array\n" msgstr "adump: argument er ikke et array" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "variabel uden type\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Stopper i %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 #, fuzzy msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t------[Retur] for at fortsætte eller q [Retur] for at afslutte------" -#: debug.c:5141 +#: debug.c:5152 #, fuzzy, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%s\"] findes ikke i array '%s'" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "sender uddata til stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "ugyldigt nummer" -#: debug.c:5521 +#: debug.c:5532 #, fuzzy, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "'returnér' ikke tilladt i den aktuelle kontekst, sætning ignoreret" -#: debug.c:5753 +#: debug.c:5764 #, fuzzy, c-format -msgid "No symbol `%s' in current context" -msgstr "forsøg på at bruge array '%s' i skalarsammenhæng" +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "'intet symbol '%s' i den aktuelle kontekst\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "ukendt nodetype %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "ukendt opkode %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opkode %s er ikke en operator eller et nøgleord" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "bufferoverløb i genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1867,71 +1893,71 @@ "\t# Funktionskaldsstak:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "'IGNORECASE' er en gawk-udvidelse" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "'BINMODE' er en gawk-udvidelse" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "forkert '%sFMT'-specifikation '%s'" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "deaktiverer '--lint' på grund af en tildeling til 'LINT'" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "reference til ikke-initieret argument '%s'" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "reference til ikke-initieret variabel '%s'" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "forsøg på at referere til et felt fra ikke-numerisk værdi" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "forsøg på at referere til et felt fra tom streng" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "forsøg på at få adgang til felt %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "reference til ikke-initieret felt '$%ld'" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen '%s' kaldt med flere argumenter end deklareret" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: uventet type `%s'" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "forsøgte at dividere med nul i '/='" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "forsøgte at dividere med nul i '%%='" @@ -2023,86 +2049,86 @@ msgid "dynamic loading of libraries is not supported" msgstr "" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: first argument is not a string" msgstr "exp: argumentet %g er uden for det tilladte område" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy msgid "stat: second argument is not an array" msgstr "split: andet argument er ikke et array" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 #, fuzzy msgid "stat: bad parameters" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 #, fuzzy msgid "fts is not supported on this system" msgstr "'%s' understøttes ikke i gamle versioner af awk" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "asort: første argument er ikke et array" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "split: andet argument er ikke et array" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" @@ -2242,7 +2268,7 @@ msgid "chr: first argument is not a number" msgstr "asort: første argument er ikke et array" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2341,176 +2367,182 @@ msgid "sleep: not supported on this platform" msgstr "" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF sat til en negativ værdi" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: fjerde argument er en gawk-udvidelse" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: fjerde argument er ikke et array" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "" +"asort: kan ikke bruge et underarray af andet argument for første argument" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: andet argument er ikke et array" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "split: kan ikke bruge det samme array som andet og fjerde argument" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: kan ikke bruge et underarray af andet argument som fjerde argument" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: kan ikke bruge et underarray af fjerde argument som andet argument" -#: field.c:1038 +#: field.c:1050 #, fuzzy msgid "split: null string for third arg is a non-standard extension" msgstr "split: tom streng som tredje argument er en gawk-udvidelse" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: fjerde argument er ikke et array" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: andet argument er ikke et array" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patmatch: tredje argument er ikke et array" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: kan ikke bruge det samme array som andet og fjerde argument" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: kan ikke bruge et underarray af andet argument som fjerde argument" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: kan ikke bruge et underarray af fjerde argument som andet argument" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "'FIELDWIDTHS' er en gawk-udvidelse" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, fuzzy, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "ugyldig FIELDWIDTHS værdi, nær '%s" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "tom streng som 'FS' er en gawk-udvidelse" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "gamle versioner af awk understøtter ikke regexp'er som værdi for 'FS'" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "'FPAT' er en gawk-udvidelse" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 #, fuzzy msgid "remove_element: received null array" msgstr "length: fik et array-argument" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "" -#: gawkapi.c:1365 +#: gawkapi.c:1358 #, fuzzy msgid "cannot find end of BEGINFILE rule" msgstr "'next' kan ikke kaldes fra en BEGIN-regel" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, fuzzy, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "kan ikke åbne kildefilen '%s' for læsning (%s)" @@ -2520,542 +2552,603 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "kommandolinjeargument '%s' er et katalog, oversprunget" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format msgid "cannot open file `%s' for reading: %s" msgstr "kan ikke åbne filen '%s' for læsning (%s)" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "unødig blanding af '>' og '>>' for filen '%.*s'" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering ikke tilladt i sandkasse-tilstand" -#: io.c:787 +#: io.c:847 #, fuzzy, c-format msgid "expression in `%s' redirection is a number" msgstr "udtrykket i '%s'-omdirigering har kun numerisk værdi" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "udtrykket for '%s'-omdirigering har en tom streng som værdi" -#: io.c:796 +#: io.c:856 #, fuzzy, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" msgstr "" "filnavnet '%s' for '%s'-omdirigering kan være resultatet af et logisk udtryk" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "unødig blanding af '>' og '>>' for filen '%.*s'" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "kan ikke åbne datakanalen '%s' for udskrivning (%s)" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "kan ikke åbne datakanalen '%s' for indtastning (%s)" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "kan ikke åbne tovejsdatakanalen '%s' for ind-/uddata (%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format msgid "cannot redirect from `%s': %s" msgstr "kan ikke omdirigere fra '%s' (%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format msgid "cannot redirect to `%s': %s" msgstr "kan ikke omdirigere til '%s' (%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "nåede systembegrænsningen for åbne filer: begynder at multiplekse " "fildeskriptorer" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "lukning af '%s' mislykkedes (%s)." -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "for mange datakanaler eller inddatafiler åbne" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: andet argument skal være 'to' eller 'from'" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: '%.*s' er ikke en åben fil, datakanal eller ko-proces" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "lukning af omdirigering som aldrig blev åbnet" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omdirigeringen '%s' blev ikke åbnet med '|&', andet argument ignoreret" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "fejlstatus (%d) fra lukning af datakanalen '%s' (%s)" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "fejlstatus (%d) fra lukning af datakanalen '%s' (%s)" + +#: io.c:1405 #, fuzzy, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "fejlstatus (%d) fra fillukning af '%s' (%s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ingen eksplicit lukning af soklen '%s' angivet" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ingen eksplicit lukning af ko-processen '%s' angivet" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ingen eksplicit lukning af datakanalen '%s' angivet" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ingen eksplicit lukning af filen '%s' angivet" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format msgid "error writing standard output: %s" msgstr "fejl ved skrivning til standard ud (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format msgid "error writing standard error: %s" msgstr "fejl ved skrivning til standard fejl (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "datakanalsrensning af '%s' mislykkedes (%s)." -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "ko-procesrensning af datakanalen til '%s' mislykkedes (%s)." -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "filrensning af '%s' mislykkedes (%s)." -#: io.c:1610 +#: io.c:1670 #, fuzzy, c-format msgid "local port %s invalid in `/inet': %s" msgstr "lokal port %s ugyldig i '/inet'" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s ugyldig i '/inet'" -#: io.c:1636 +#: io.c:1696 #, fuzzy, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "fjernvært og portinformation (%s, %s) ugyldige" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "fjernvært og portinformation (%s, %s) ugyldige" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation understøttes ikke" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunne ikke åbne '%s', tilstand '%s'" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format msgid "close of master pty failed: %s" msgstr "lukning af master-pty mislykkedes (%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format msgid "close of stdout in child failed: %s" msgstr "lukning af standard ud i underproces mislykkedes (%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "flytning af slave-pty til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format msgid "close of stdin in child failed: %s" msgstr "lukning af standard ind i underproces mislykkedes (%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "flytning af slave-pty til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format msgid "close of slave pty failed: %s" msgstr "lukning af slave-pty mislykkedes (%s)" -#: io.c:2265 +#: io.c:2325 #, fuzzy msgid "could not create child process or open pty" msgstr "kan ikke oprette barneproces for '%s' (fork: %s)" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "flytning af datakanal til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "flytning af datakanalen til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy msgid "restoring stdout in parent process failed" msgstr "genskabelse af standard ud i forælderprocessen mislykkedes\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy msgid "restoring stdin in parent process failed" msgstr "genskabelse af standard ind i forælderprocessen mislykkedes\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format msgid "close of pipe failed: %s" msgstr "lukning af datakanalen mislykkedes (%s)" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "'|&' understøttes ikke" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format msgid "cannot open pipe `%s': %s" msgstr "kan ikke åbne datakanalen '%s' (%s)" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan ikke oprette barneproces for '%s' (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "datafilen '%s' er tom" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "kunne ikke allokere mere hukommelse til inddata" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "'RS' som flertegnsværdi er en gawk-udvidelse" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation understøttes ikke" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "miljøvariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "'--posix' tilsidesætter '--traditional'" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "'--posix'/'--traditional' tilsidesætter '--non-decimal-data'" -#: main.c:359 +#: main.c:361 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' tilsidesætter '--binary'" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "at køre %s setuid root kan være et sikkerhedsproblem" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format msgid "cannot set binary mode on stdin: %s" msgstr "kan ikke sætte binær tilstand på standard ind (%s)" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format msgid "cannot set binary mode on stdout: %s" msgstr "kan ikke sætte binær tilstand på standard ud (%s)" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format msgid "cannot set binary mode on stderr: %s" msgstr "kan ikke sætte binær tilstand på standard fejl (%s)" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "ingen programtekst overhovedet!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Brug: %s [flag i POSIX- eller GNU-stil] -f progfil [--] fil ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Brug: %s [flag i POSIX- eller GNU-stil] %cprogram%c fil ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (standard)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=værdi\t\t--assign=var=værdi\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (udvidelser)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n" -#: main.c:598 +#: main.c:601 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtekst'\t--source='programtekst'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:610 +#: main.c:614 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 #, fuzzy msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 #, fuzzy msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy msgid "" "\n" @@ -3073,7 +3166,7 @@ "\n" "Rapportér kommentarer til oversættelsen til .\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3083,7 +3176,7 @@ "Almindeligvis læser gawk fra standard ind og skriver til standard ud.\n" "\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format msgid "" "Examples:\n" @@ -3094,7 +3187,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3114,7 +3207,7 @@ "enhver senere version.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3128,7 +3221,7 @@ "General Public License for yderligere information.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3136,11 +3229,11 @@ "Du bør have fået en kopi af GNU General Public License sammen\n" "med dette program. Hvis ikke, så se http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft sætter ikke FS til tab i POSIX-awk" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3149,167 +3242,172 @@ "%s: '%s' argument til '-v' ikke på formen 'var=værdi'\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "'%s' er ikke et variabelnavn, leder efter fil '%s=%s'" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan ikke bruge gawk's indbyggede '%s' som variabelnavn" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan ikke bruge funktion '%s' som variabelnavn" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "flydendetalsundtagelse" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "fatal fejl: intern fejl" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "fatal fejl: intern fejl: segmentfejl" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "fatal fejl: intern fejl: stakoverløb" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "ingen fd %d åbnet i forvejen" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kunne ikke i forvejen åbne /dev/null for fd %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "tomt argument til '-e/--source' ignoreret" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy msgid "`--profile' overrides `--pretty-print'" msgstr "'--posix' tilsidesætter '--traditional'" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: flaget '-W %s' ukendt, ignoreret\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaget kræver et argument -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" -#: mpfr.c:610 +#: mpfr.c:664 #, fuzzy, c-format -msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: fik et ikke-numerisk første argument" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: fik et ikke-numerisk andet argument" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +msgid "%s: received negative argument %.*s" +msgstr "log: fik et negativt argument %g" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: fik et ikke-numerisk argument" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: fik et ikke-numerisk argument" -#: mpfr.c:816 +#: mpfr.c:874 #, fuzzy msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%lf): negative værdier vil give mærkelige resultater" -#: mpfr.c:821 +#: mpfr.c:879 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): kommatalsværdier vil blive trunkeret" -#: mpfr.c:832 +#: mpfr.c:890 #, fuzzy, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%lf): negative værdier vil give mærkelige resultater" -#: mpfr.c:850 +#: mpfr.c:908 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: fik et ikke-numerisk argument" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:871 +#: mpfr.c:929 #, fuzzy msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" -#: mpfr.c:878 +#: mpfr.c:936 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "and(%lf, %lf): kommatalsværdier vil blive trunkeret" -#: mpfr.c:892 +#: mpfr.c:950 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: kaldt med mindre end to argumenter" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: kaldt med mindre end to argumenter" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "zor: kaldt med mindre end to argumenter" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: fik et ikke-numerisk argument" -#: mpfr.c:1211 +#: mpfr.c:1269 #, fuzzy msgid "intdiv: received non-numeric first argument" msgstr "and: fik et ikke-numerisk første argument" -#: mpfr.c:1213 +#: mpfr.c:1271 #, fuzzy msgid "intdiv: received non-numeric second argument" msgstr "and: fik et ikke-numerisk andet argument" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "kommandolinje:" @@ -3319,20 +3417,20 @@ msgid "could not make typed regex" msgstr "uafsluttet regulært udtryk" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "gamle versioner af awk understøtter ikke '\\%c' undvigesekvens" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tillader ikke '\\x'-kontrolsekvenser" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "ingen heksadecimale cifre i '\\x'-kontrolsekvenser" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3341,15 +3439,19 @@ "den heksadecimale sekvens \\x%.*s på %d tegn nok ikke forstået som du " "forventer det" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrolsekvensen '\\%c' behandlet som kun '%c'" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Ugyldigt multibyte data fundet. Måske er der uoverensstemmelse mellem dine " "data og dit locale." @@ -3395,19 +3497,19 @@ msgid "internal error: %s with null vname" msgstr "intern fejl: %s med null vname" -#: profile.c:662 +#: profile.c:663 #, fuzzy msgid "internal error: builtin with null fname" msgstr "intern fejl: %s med null vname" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3415,12 +3517,12 @@ "\n" msgstr "" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil til gawk oprettet %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3429,7 +3531,7 @@ "\n" "\t# Funktioner, listede alfabetisk\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: uykendt omdirigeringstype %d" @@ -3459,39 +3561,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "regexp-komponent `%.*s' skulle nok være `[%.*s]'" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "Ugyldig tegnklasse" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "ugyldigt indhold i \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "regulært udtryk for stort" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "ingen syntaks angivet" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "" @@ -3624,15 +3726,31 @@ msgid "No previous regular expression" msgstr "Intet foregående regulært udtryk" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "'L' er meningsløst i awk-formater, ignoreret" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fatal: 'L' tillades ikke i POSIX awk-formater" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "'h' er meningsløst i awk-formater, ignoreret" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fatal: 'h' tillades ikke i POSIX awk-formater" + +#, fuzzy, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "forsøg på at bruge array '%s' i skalarsammenhæng" + #, fuzzy #~ msgid "fts: first parameter is not an array" #~ msgstr "asort: første argument er ikke et array" @@ -3976,9 +4094,6 @@ #~ msgid "assignment used in conditional context" #~ msgstr "tildeling brugt i sammenligningsammenhæng" -#~ msgid "statement has no effect" -#~ msgstr "kommandoen har ingen effekt" - #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" diff -urN gawk-5.1.0/po/de.po gawk-5.1.1/po/de.po --- gawk-5.1.0/po/de.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/de.po 2021-10-27 07:58:41.000000000 +0300 @@ -3,14 +3,14 @@ # This file is distributed under the same license as the gawk package. # # Philipp Thomas , 2011, 2012, 2014, 2015, 2016, 2017. -# Roland Illig , 2020. +# Roland Illig , 2020, 2021. # msgid "" msgstr "" -"Project-Id-Version: gawk 5.0.64\n" +"Project-Id-Version: gawk 5.1.1e\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2020-03-15 20:13+0100\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-09-04 18:31+0200\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" @@ -18,239 +18,254 @@ "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: Poedit 2.3\n" +"X-Generator: Poedit 3.0\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "von %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "Es wird versucht, einen skalaren Wert als Feld zu verwenden" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "Es wird versucht, den skalaren Parameter »%s« als Feld zu verwenden" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "Es wird versucht, den Skalar »%s« als Feld zu verwenden" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "Es wird versucht, das Feld »%s« in einem Skalarkontext zu verwenden" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: Index »%.*s« ist in Feld »%s« nicht vorhanden" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "Es wird versucht, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "%s: das erste Argument ist kein Feld" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "%s: das zweite Argument ist kein Feld" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "%s: Das erste Argument darf nicht SYMTAB sein" +msgid "%s: cannot use %s as second argument" +msgstr "%s: %s kann nicht als zweites Argument verwendet werden" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "%s: Das erste Argument darf nicht FUNCTAB sein" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "" +"%s: wenn das erste Argument SYMTAB ist, muss es ein zweites Argument geben" -#: array.c:844 +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "" +"%s: wenn das erste Argument FUNCTAB ist, muss es ein zweites Argument geben" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti: Die Verwendung desselben Arrays als Quelle und Ziel ohne ein " +"drittes Argument ist sinnlos." + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "%s: das zweite Argument darf kein Teilfeld des ersten Arguments sein" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "%s: das erste Argument darf kein Teilfeld des zweiten Arguments sein" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "»%s« ist ein unzulässiger Funktionsname" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "die Vergleichsfunktion »%s« für das Sortieren ist nicht definiert" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s-Blöcke müssen einen Aktionsteil haben" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "jede Regel muss entweder ein Muster oder einen Aktionsteil haben" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "das alte awk erlaubt keine mehrfachen »BEGIN«- oder »END«-Regeln" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "»%s« ist eine eingebaute Funktion und kann nicht umdefiniert werden" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "die Regulärer-Ausdruck-Konstante »//« sieht wie ein C-Kommentar aus, ist " "aber keiner" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "die Regulärer-Ausdruck-Konstante »/%s/« sieht wie ein C-Kommentar aus, ist " "aber keiner" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "doppelte »case«-Werte im »switch«-Block: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "jeder »switch«-Block darf höchstens ein »default« enthalten" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "" "»break« darf nur innerhalb einer Schleife oder eines Switch-Blocks vorkommen" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "»continue« darf nur innerhalb einer Schleife vorkommen" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "»next« wird in %s-Aktion verwendet" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "»nextfile« wird in %s-Aktion verwendet" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "»return« darf nur innerhalb einer Funktion vorkommen" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "Einfaches »print« in BEGIN- oder END-Regel soll vermutlich »print \"\"« sein" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "»delete« ist in Zusammenhang mit SYMTAB nicht zulässig" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "»delete« ist in Zusammenhang mit FUNCTAB nicht zulässig" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "»delete(array)« ist eine tawk-Erweiterung" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "mehrstufige Zweiwege-Pipes funktionieren nicht" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "Verkettung als Ziel der E/A-Umlenkung »>« ist mehrdeutig" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "regulärer Ausdruck auf der rechten Seite einer Zuweisung" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "regulärer Ausdruck links vom »~«- oder »!~«-Operator" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "das alte awk unterstützt das Schlüsselwort »in« nur nach »for«" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "regulärer Ausdruck rechts von einem Vergleich" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "nicht umgeleitetes »getline« ist ungültig innerhalb der »%s«-Regel" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "" "nicht umgeleitetes »getline« ist innerhalb der END-Aktion nicht definiert" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "das alte awk unterstützt keine mehrdimensionalen Felder" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "Aufruf von »length« ohne Klammern ist nicht portabel" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "indirekte Funktionsaufrufe sind eine gawk-Erweiterung" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "die besondere Variable »%s« kann nicht für den indirekten Funktionsaufruf " "verwendet werden" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "es wird versucht, »%s« als Funktion aufzurufen, obwohl es keine ist" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "Ungültiger Index-Ausdruck" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "Warnung: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "Fatal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "unerwarteter Zeilenumbruch oder Ende der Zeichenkette" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" @@ -258,277 +273,277 @@ "Quelldateien und Kommandozeilenargumente dürfen nur vollständige Funktionen " "oder Regeln enthalten" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "Quelldatei »%s« kann nicht zum Lesen geöffnet werden: %s" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "" "Die dynamische Bibliothek »%s« kann nicht zum Lesen geöffnet werden: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "unbekannte Ursache" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "»%s« kann nicht eingebunden und als Programmdatei verwendet werden" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "Quelldatei »%s« wurde bereits eingebunden" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "die dynamische Bibliothek »%s« wurde bereits eingebunden" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "»@include« ist eine gawk-Erweiterung" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "leerer Dateiname nach @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "»@load« ist eine gawk-Erweiterung" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "leerer Dateiname nach @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "kein Programmtext auf der Kommandozeile" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "die Quelldatei »%s« kann nicht gelesen werden: %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "die Quelldatei »%s« ist leer" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "Fehler: ungültiges Zeichen »\\%03o« im Quellcode" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "die Quelldatei hört nicht mit einem Zeilenende auf" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "nicht beendeter regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: der tawk-Modifizierer für reguläre Ausdrücke »/…/%c« funktioniert " "nicht in gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "Der tawk-Modifizierer für reguläre Ausdrücke »/…/%c« funktioniert nicht in " "gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "nicht beendeter regulärer Ausdruck" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "nicht beendeter regulärer Ausdruck am Dateiende" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "die Verwendung von »\\ #…« zur Fortsetzung von Zeilen ist nicht portabel" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "das letzte Zeichen auf der Zeile ist kein Backslash (»\\«)" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "mehrdimensionale Felder sind eine gawk-Erweiterung" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX erlaubt den Operator »%s« nicht" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "das alte awk unterstützt den Operator »%s« nicht" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "nicht beendete Zeichenkette" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX erlaubt keine harten Zeilenumbrüche in Zeichenkettenwerten" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "" "die Verwendung von »\\« zur Fortsetzung von Zeichenketten ist nicht portabel" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "ungültiges Zeichen »%c« in einem Ausdruck" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "»%s« ist eine gawk-Erweiterung" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX erlaubt »%s« nicht" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "»%s« wird im alten awk nicht unterstützt" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "»goto« gilt für manche als schlechter Stil" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "unzulässige Argumentzahl %d für %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: eine Zeichenkette als letztes Argument von »substitute« hat keinen Effekt" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "der dritte Parameter von %s ist ein unveränderliches Objekt" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: das dritte Argument ist eine gawk-Erweiterung" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: das zweite Argument ist eine gawk-Erweiterung" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "fehlerhafte Verwendung von dcgettext(_\"...\"): \n" "entfernen Sie den führenden Unterstrich" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "fehlerhafte Verwendung von dcngettext(_\"...\"): \n" "entfernen Sie den führenden Unterstrich" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: eine Regexp-Konstante als zweites Argument ist unzulässig" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "Funktion »%s«: Parameter »%s« verdeckt eine globale Variable" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "»%s« konnte nicht zum Schreiben geöffnet werden: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "die Liste der Variablen wird auf der Standardfehlerausgabe ausgegeben" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "%s: close ist fehlgeschlagen: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() zweimal aufgerufen!" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "es sind verdeckte Variablen vorhanden" +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "es gab verdeckte Variablen" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "Funktion »%s« wurde bereits definiert" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "" "Funktion »%s«: Funktionsnamen können nicht als Parameternamen verwendet " "werden" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "Funktion »%s«: die besondere Variable »%s« kann nicht als Parameter " "verwendet werden" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "Funktion »%s«: Parameter »%s« darf keinen Namensraum enthalten" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "Funktion »%s«: Parameter #%d, »%s« wiederholt Parameter #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "aufgerufene Funktion »%s« ist nirgends definiert" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "Funktion »%s« wurde definiert aber nirgends aufgerufen" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" "Regulärer-Ausdruck-Konstante für Parameter #%d ergibt einen \n" "logischen Wert" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -537,46 +552,50 @@ "Funktion »%s« wird mit Leerzeichen zwischen Name und »(« aufgerufen,\n" "oder als Variable oder Feld verwendet" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "Division durch Null wurde versucht" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "Division durch Null versucht in »%%«" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "dem Ergebnis eines Feld-Postinkrementausdruck kann kein Wert zugewiesen " "werden" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "Unzulässiges Ziel für eine Zuweisung (Opcode %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "Anweisung hat keine Auswirkung" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" "Bezeichner %s: Qualifizierte Namen sind im traditionellen bzw. POSIX-Modus " "nicht erlaubt" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" "Bezeichner %s: Trennzeichen für Namensräume sind 2 Doppelpunkte, nicht 1" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "der qualifizierte Bezeichner »%s« hat ein falsches Format" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" @@ -584,13 +603,13 @@ "Bezeichner »%s«: das Trennzeichen für Namensräume darf nur einmal pro " "qualifiziertem Namen vorkommen" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" "der reservierte Bezeichner »%s« darf nicht als Namensraum verwendet werden" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " @@ -599,11 +618,11 @@ "der reservierte Bezeichner »%s« darf nicht als zweite Komponente des " "qualifizierten Namens verwendet werden" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "»@namespace« ist eine gawk-Erweiterung" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -623,8 +642,8 @@ msgid "standard error" msgstr "Standardfehleraugabe" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: das Argument ist keine Zahl" @@ -665,7 +684,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: »%.*s« ist keine geöffnete Datei, Pipe oder Prozess" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "%s: erstes Argument ist keine Zeichenkette" @@ -683,46 +702,46 @@ msgid "`length(array)' is a gawk extension" msgstr "»length(array)« ist eine Gawk-Erweiterung" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "%s: das Argument ist keine Zeichenkette" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "%s: Negatives Argument %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "" "Fatal: »Position$« muss entweder auf alle Formate angewandt werden oder auf " "keines" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "Feldbreite wird für die »%%«-Angabe ignoriert" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "Genauigkeit wird für die »%%«-Angabe ignoriert" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "Feldbreite und Genauigkeit werden für die »%%«-Angabe ignoriert" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "Fatal: »$« ist in awk-Formaten nicht zulässig" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "Fatal: die Argumentposition bei »$« muss > 0 sein" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" @@ -730,143 +749,129 @@ "Fatal: die Argumentposition %ld ist größer als die Gesamtanzahl angegebener " "Argumente" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "Fatal: »$« nach Punkt in Formatangabe nicht zulässig" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "Fatal: »$« fehlt in positionsabhängiger Feldbreite oder Genauigkeit" # -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "»l« ist in awk-Formaten bedeutungslos, ignoriert" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "Fatal: »l« ist in POSIX-awk-Formaten nicht zulässig" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "Fatal: »L« ist in POSIX-awk-Formaten nicht zulässig" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "Fatal: »h« ist in POSIX-awk-Formaten nicht zulässig" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "»%c« ist in awk-Formaten bedeutungslos, ignoriert" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "Fatal: »%c« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%c«" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: Wert %g ist kein gultiges Wide-Zeichen" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%%c«" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: Wert %s ist außerhalb des Bereichs für Format »%%%c«" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" "das Format %%%c ist zwar in POSIX, aber nicht auf andere awks übertragbar" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "das unbekannte Zeichen »%c« in der Formatspezifikation wird ignoriert: keine " "Argumente umgewandelt" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "Fatal: nicht genügend Argumente für die Formatangabe" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ hierfür fehlte es" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: Format-Spezifikation hat keinen Steuerbuchstaben" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "zu viele Argumente für den Formatstring" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: keine Argumente" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: keine Argumente" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf: Versuch in die geschlossene schreibende Seite einer bidirektionalen " "Pipe zu schreiben" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: Länge %g ist nicht >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: Länge %g ist nicht >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: nicht ganzzahlige Länge %g wird abgeschnitten" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: Länge %g ist zu groß für Stringindizierung, wird auf %g gekürzt" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: Start-Index %g ist ungültig, 1 wird verwendet" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: nicht ganzzahliger Start-Wert %g wird abgeschnitten" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: Quellzeichenkette ist leer" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: Start-Index %g liegt hinter dem Ende der Zeichenkette" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -874,163 +879,168 @@ "substr: Länge %g am Start-Index %g überschreitet die Länge des ersten " "Arguments (%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: Formatwert in PROCINFO[\"strftime\"] ist numerischen Typs" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "%s: das zweite Argument ist keine Zahl" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: das zweite Argument ist kleiner als 0 oder zu groß für time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "" "strftime: das zweite Argument ist außerhalb des Gültigkeitsbereichs von " "time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: die Format-Zeichenkette ist leer" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: mindestens einer der Werte ist außerhalb des normalen Bereichs" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "die Funktion »system« ist im Sandbox-Modus nicht erlaubt" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print: Versuch in die geschlossene schreibende Seite einer bidirektionalen " "Pipe zu schreiben" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "Referenz auf das nicht initialisierte Feld »$%d«" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "%s: das erste Argument ist keine Zahl" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: das dritte Argument ist kein Feld" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s: %s kann nicht als drittes Argument verwendet werden" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: das dritte Argument »%.*s« wird als 1 interpretiert" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kann indirekt nur mit zwei Argumenten aufgerufen werden" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "der indirekte Aufruf von %s erfordert mindestens zwei Argumente" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): negative Werte sind nicht zulässig" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): der Nachkommateil wird abgeschnitten" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): Zu große Schiebewerte werden zu merkwürdigen Ergebnissen " "führen" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift (%f, %f): negative Werte sind nicht zulässig" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): der Nachkommateil wird abgeschnitten" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): Zu große Schiebewerte werden zu merkwürdigen Ergebnissen " "führen" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "%s: wird mit weniger als zwei Argumenten aufgerufen" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "%s: das Argument %d ist nicht numerisch" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: in Argument %d ist der negative Wert %g unzulässig" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): der negative Wert ist unzulässig" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): der Dezimalteil wird abgeschnitten" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: »%s« ist keine gültige Locale-Kategorie" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: das dritte Argument ist kein Feld" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: Division durch Null wurde versucht" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof: das zweite Argument ist kein Feld" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" "typeof fand die unzulässige Kombination von Kennungen »%s«; Bitte senden Sie " -"einen Fehlerbericht." +"einen Fehlerbericht" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: ungültiger Parametertyp »%s«" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: unbekannter Parametertyp »%s«" @@ -1042,455 +1052,453 @@ "im Spielwiesenmodus kann die neue Datei (%.*s) nicht zu ARGV hinzugefügt " "werden" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Geben Sie (g)awk-Anweisungen ein, und zum Abschluss »end«\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "ungültige Frame-Nummer: %d" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "info: ungültige Option - »%s«" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." -msgstr "Quelldatei »%s«: wurde bereits eingelesen." +msgid "source: `%s': already sourced" +msgstr "Quelldatei »%s«: wurde bereits eingelesen" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." -msgstr "save »%s«: der Befehl ist nicht zulässig." +msgid "save: `%s': command not permitted" +msgstr "save »%s«: unzulässiger Befehl" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "Der Befehl »commands« kann nicht für Break- bzw. Watchpoints verwendet werden" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "es wurden noch keine Break-/Watchpoints gesetzt" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "ungültige Nummer des Break-/Watchpoints" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" "Geben Sie die Befehle ein, die bei Erreichen von %s %d ausgeführt werden " "sollen, einen pro Zeile.\n" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "Beenden Sie die Eingabe mit dem Befehl »end«\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "»end« ist nur innerhalb der Befehle »commands« oder »eval« zulässig" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "»silent« ist nur innerhalb des Befehls »commands« zulässig" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "trace: ungültige Option - »%s«" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: unzulässige Nummer für Break-/Watchpoint" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "das Argument ist keine Zeichenkette" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "option: ungültiger Parameter - »%s«" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "unbekannte Funktion - »%s«" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "enable: ungültige Option - »%s«" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "ungültige Bereichsangabe: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "nichtnumerischer Wert als Feldnummer" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "nichtnumerischer Wert, wo ein numerischer erwartet wurde" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "ganzzahliger Wert ungleich Null" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - log von allen oder den N innersten (äußersten wenn N < 0) " -"Rahmen." +"Rahmen" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -"break [[Dateiname:]N|funktion - Breakpoint an der angegebenen Stelle setzen.]" +"break [[Dateiname:]N|Funktion] - Haltepunkt an der angegebenen Stelle setzen" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[Dateiname:]N|Funktion - zuvor gesetzte Breakpoints löschen." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" +msgstr "clear [[Dateiname:]N|Funktion] - zuvor gesetzte Haltepunkte löschen" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [Nr] - startet eine Liste von Befehlen, die bei Erreichen eines " -"Break- bzw. Watchpoints ausgeführt werden." +"Halte- bzw. Beobachtungspunkts ausgeführt werden" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -"condition Nr [Ausdruck] - Bedingungen für einen Break-/Watchpoint setzen " -"oder löschen." +"condition Nr [Ausdruck] - Bedingungen für einen Halte-/Beobachtungspunkt " +"setzen oder löschen" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [ANZAHL] - zu debuggendes Programm fortsetzen." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [ANZAHL] - zu debuggendes Programm fortsetzen" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "delete [Breakpoints] [Bereich] - angegebene Breakpoints entfernen." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "delete [Breakpoints] [Bereich] - angegebene Haltepunkte entfernen" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." -msgstr "disable [Breakpoints] [Bereich] - angegebene Breakpoints deaktivieren." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" +msgstr "disable [Haltepunkte] [Bereich] - angegebene Haltepunkte deaktivieren" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." -msgstr "" -"display [Var] - den Wert der Variablen bei jedem Programmstop ausgeben." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" +msgstr "display [Var] - den Wert der Variablen bei jedem Programmstop ausgeben" -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] - N Rahmen nach unten im Stack gehen." +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [N] - N Rahmen nach unten im Stack gehen" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" "dump [Dateiname] - Befehle in eine Datei oder auf der Standardausgabe " "ausgeben" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -"enable [once|del] [Breakpoints] [Bereich] - die angegebenen Breakpoints " -"aktivieren." +"enable [once|del] [Haltepunkte] [Bereich] - die angegebenen Haltepunkte " +"aktivieren" -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end - beendet eine Liste von Befehlen oder AWK/Ausdrücken." +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end - eine Liste von Befehlen oder AWK-Anweisungen beenden" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval stmt[p1, p2, ...] - awk-Ausdrücke auswerten." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval stmt|[p1, p2, ...] - AWK-Ausdrücke auswerten" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." -msgstr "exit - (dasselbe wie quit) Debugger verlassen." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit - (dasselbe wie quit) Debugger verlassen" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" msgstr "" -"finish - mit Ausführung fortfahren, bis der angegebene Rahmen verlassen wird." +"finish - mit Ausführung fortfahren, bis der angegebene Rahmen verlassen wird" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - den Stackrahmen Nummer N auswählen und ausgeben." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] - den Stackrahmen Nummer N auswählen und ausgeben" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" "help [Befehl] - Liste der Befehle oder die Beschreibung eines einzelnen " -"Befehls ausgeben." +"Befehls ausgeben" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore N ZÄHLER - den Ignorieren-Zähler von Breakpoint N auf ZÄHLER" +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" +msgstr "" +"ignore N Anzahl - den Ignorieren-Zähler von Haltepunkt N auf Anzahl setzen" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info Thema - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" "list [-|+|[Dateiname:]Zeilennr|Funktion|Breich] - die angegebenen Zeilen " "ausgeben" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" -"next [ZÄHLER] - Programm schrittweise ausführen aber Subroutinen in einem " +"next [Anzahl] - Programm schrittweise ausführen, aber Subroutinen in einem " "Rutsch ausführen" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -"nexti [ZÄHLER] - einen Befehl abarbeiten, aber Subroutinen in einem Rutsch " +"nexti [Anzahl] - einen Befehl abarbeiten, aber Subroutinen in einem Rutsch " "ausführen" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [Name[=Wer]] - Debuggeroptionen setzen oder anzeigen." - -#: command.y:867 -msgid "print var [var] - print value of a variable or array." -msgstr "print Var [Var] - den Wert einer Variablen oder eines Feldes ausgeben." - -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." -msgstr "printf Format, [Arg], ... - formatierte Ausgabe." - -#: command.y:871 -msgid "quit - exit debugger." -msgstr "quit - Debugger verlassen." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [Name[=Wert]] - Debuggeroptionen setzen oder anzeigen" + +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "print Var [Var] - den Wert einer Variablen oder eines Feldes ausgeben" + +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf Format, [Arg], ... - formatierte Ausgabe" + +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit - Debugger verlassen" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" "return [Wert] - den ausgewählten Stapelrahmen zu seinem Aufrufer " "zurückkehren lassen" -#: command.y:875 -msgid "run - start or restart executing program." -msgstr "run - startet die (erneute) Ausführung des Programms." - -#: command.y:878 -msgid "save filename - save commands from the session to file." -msgstr "save Dateineme - sichert die Befehle der Sitzung in einer Datei." +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run - Programm erstmals oder erneut ausführen" + +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save Dateiname - Befehle der Sitzung in einer Datei sichern" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" msgstr "set Var = Wert - einer skalaren Variablen einen Wert zuweisen" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -"silent - unterdrückt die übliche Nachricht, wenn ein Break- bzw. Watchpoint " -"erreicht wird." +"silent - unterdrückt die übliche Nachricht, wenn ein Halte- bzw. " +"Beobachtungspunkt erreicht wird" -#: command.y:885 -msgid "source file - execute commands from file." -msgstr "source Datei - die Befehle in Datei ausführen." +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source Datei - die Befehle aus der Datei ausführen" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -"step [ZÄHLER - Programm schrittweise ausführen, bis es eine andere Zeile des " -"Quellcodes erreicht." +"step [Anzahl] - Programm schrittweise ausführen, bis es eine andere Zeile " +"des Quellcodes erreicht" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [ZÄHLER - genau eine Instruktion ausführen." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [Anzahl] - genau einen Befehl ausführen" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[Dateinem:]N|Funktion] - einen temporären Breakpoint setzen." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[Dateiname:]N|Funktion] - einen temporären Haltepunkt setzen" -#: command.y:893 -msgid "trace on|off - print instruction before executing." -msgstr "trace on|off - Instruktionen vor der Ausführung ausgeben." +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off - Instruktionen vor der Ausführung ausgeben" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" "undisplay [N] - Variablen von der Liste der automatisch anzuzeigenden " -"entfernen." +"entfernen" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[Dateiname:]N|Funktion - ausführen, bis das Programm eine andere " -"Zeile erreicht oder Zeile N im aktuellen Rahmen." +"Zeile erreicht oder Zeile N im aktuellen Rahmen" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] - Variablen von der Beobachtungsliste löschen." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] - Variablen von der Beobachtungsliste löschen" -#: command.y:901 -msgid "up [N] - move N frames up the stack." -msgstr "up [N] - N Rahmen im Kellerspeicher nach oben gehen." +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [N] - N Rahmen im Kellerspeicher nach oben gehen" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." -msgstr "watch Var - einen Watchpoint für eine Variable setzen." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch Var - einen Beobachtungspunkt für eine Variable setzen" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] - (dasselbe wie backtrace) Spur von allen oder den N innersten " -"(oder äußersten, wenn N < 0) Stackframes ausgeben" +"(oder äußersten, wenn N < 0) Stapelrahmen ausgeben" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "Fehler: " -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "der Befehl kann nicht gelesen werden: %s\n" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "der Befehl kann nicht gelesen werden: %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "ungültiges Zeichen im Befehl" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "unbekannter Befehl – »%.*s«, versuchen Sie es mit »help«" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "ungültiges Zeichen" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "undefinierter Befehl: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" -"die Anzahl von Zeilen setzen oder anzeigen, die in der Historydatei " -"gespeichert werden sollen." +"die Anzahl von Zeilen setzen oder anzeigen, die in der Verlaufsdatei " +"gespeichert werden sollen" #: debug.c:259 -msgid "set or show the list command window size." -msgstr "die Größe des Fensters für den Befehl list setzen oder anzeigen." +msgid "set or show the list command window size" +msgstr "die Größe des Fensters für den Befehl list setzen oder anzeigen" #: debug.c:261 -msgid "set or show gawk output file." -msgstr "die gawk-Ausgabedatei setzen oder anzeigen." +msgid "set or show gawk output file" +msgstr "die gawk-Ausgabedatei festlegen oder anzeigen" #: debug.c:263 -msgid "set or show debugger prompt." -msgstr "das Debugger-Prompt setzen oder anzeigen." +msgid "set or show debugger prompt" +msgstr "den Debugger-Prompt festlegen oder anzeigen" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" -"das Sichern der Befehlshistorie (rück)setzen oder anzeigen (on oder off)." +"das Sichern der Befehlshistorie (rück)setzen oder anzeigen (on oder off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." -msgstr "das Sichern der Optionen (rück)setzen oder anzeigen (on oder off)." +msgid "(un)set or show saving of options (value=on|off)" +msgstr "das Sichern der Optionen (rück)setzen oder anzeigen (on oder off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" -"das Verfolgen von Instruktionen (rück)setzen oder anzeigen (on oder off)." +"das Verfolgen von Instruktionen (rück)setzen oder anzeigen (on oder off)" #: debug.c:358 -msgid "program not running." -msgstr "das Programm läuft nicht." +msgid "program not running" +msgstr "das Programm läuft gerade nicht" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "die Quelldatei »%s« ist leer.\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +msgid "no current source file" msgstr "keine aktuelle Quelldatei" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "die Quelldatei »%s« kann nicht gefunden werden: %s" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -"WARNUNG: Quelldatei »%s« wurde seit der Programmübersetzung verändert.\n" +"Warnung: Quelldatei »%s« wurde seit der Programmübersetzung verändert.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" "die Zeilennummer %d ist außerhalb des gültigen Bereichs: »%s« hat %d Zeilen" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "unerwartetes Dateiende beim Lesen von Datei »%s«, Zeile %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "Quelldatei »%s« wurde seit dem Start des Programmes verändert" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" -msgstr "derzeitige Quelldatei: %s\n" +msgstr "Derzeitige Quelldatei: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Anzahl von Zeilen: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Quelldatei (Zeilen): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1498,54 +1506,54 @@ "Nummer Anz. Aktiv Ort\n" "\n" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tAnzahl Treffer = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tdie nächsten %ld Treffer\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tHaltebedingung: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tBefehle:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " -msgstr "Derzeitiger Stapelrahmen" +msgstr "Derzeitiger Stapelrahmen: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Aufgerufen aus Rahmen: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Aufrufer des Rahmens: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Keine in main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Keine Argumente.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Keine lokalen.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1553,7 +1561,7 @@ "Alle definierten Variablen:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1561,7 +1569,7 @@ "Alle definierten Funktionen:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1569,7 +1577,7 @@ "Auto-Anzeige-Variablen:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1577,394 +1585,399 @@ "Zu überwachende Variablen:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "im aktuellen Kontext gibt es kein Symbol mit Namen »%s«\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "»%s« ist kein Feld\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = nicht initialisiertes Feld\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "Das Feld »%s« ist leer\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" -msgstr "[\"%.*s\"] ist in Feld »%s« nicht vorhanden\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "Index [\"%.*s\"] ist in Feld »%s« nicht vorhanden\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "»%s[\"%.*s\"]« ist kein Feld\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "»%s« ist keine skalare Variable" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "Versuch, das Feld »%s[\"%.*s\"]« in einem Skalarkontext zu verwenden" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "Versuch, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "»%s« ist eine Funktion" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "Watchpoint %d ist bedingungslos\n" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" -msgstr "Kein anzuzeigendes Element mit Nummer %ld" +msgid "no display item numbered %ld" +msgstr "kein anzuzeigendes Element mit Nummer %ld" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" -msgstr "Kein zu beobachtendes Element mit Nummer %ld" +msgid "no watch item numbered %ld" +msgstr "kein zu beobachtendes Element mit Nummer %ld" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" -msgstr "%d: [\"%.*s\"] ist in Feld »%s« nicht vorhanden\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: Index [\"%.*s\"] ist in Feld »%s« nicht vorhanden\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "Es wird versucht, einen Skalar als Feld zu verwenden" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" "Watchpoint %d wurde gelöscht, weil der Parameter außerhalb des " "Gültigkeitsbereichs ist.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" "Anzuzeigendes Element %d wurde gelöscht, weil der Parameter außerhalb des " "Gültigkeitsbereichs ist.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " in Datei »%s«, Zeile %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " bei »%s«:%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tin " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Weitere Stapelrahmen folgen ...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "ungültige Rahmennummer" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Hinweis: Breakpont %d (aktiv, ignoriert für die nächsten %ld Treffer) wird " "auch an %s:%d gesetzt" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Hinweis: Breakpont %d (aktiv) wird auch an %s:%d gesetzt" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Hinweis: Breakpoint %d (inaktiv, ignoriert für die nächsten %ld Treffer) " "wird auch von %s:%d gesetzt" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Hinweis: Breakpont %d (inaktiv) wird auch an %s:%d gesetzt" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpont %d wird auf Datei %s, Zeile %d gesetzt\n" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "In Datei »%s« kann kein Breakpoint gesetzt werden\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" -msgstr "Zeile Nummer %d in Datei »%s« liegt außerhalb des gültigen Bereichs" +msgid "line number %d in file `%s' is out of range" +msgstr "Zeilennummer %d in Datei »%s« liegt außerhalb des gültigen Bereichs" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "Interner Fehler: Regel wurde nicht gefunden\n" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "In »%s«:%d kann kein Breakpoint gesetzt werden\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "In Funktion »%s« kann kein Breakpoint gesetzt werden\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "Breakpoint %d in Datei »%s« Zeile %d ist bedingungslos\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "Zeile Nummer %d in Datei »%s« liegt außerhalb des gültigen Bereichs" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Breakpoint %d wurde gelöscht" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Am Beginn von Funktion »%s« gibt es keine Breakpoints\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Bei Datei »%s« Zeile %d gibt es keine Breakpoints\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "Ungültige Breakpoint-Nummer" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Alle Breakpoints löschen? (j oder n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "j" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -"die nächsten %ld Überschreitungen von Breakpoint %d werden ignoriert.\n" +"Die nächsten %ld Überschreitungen von Breakpoint %d werden ignoriert.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" -msgstr "wenn Breakpoint %d das nächste Mal erreicht wird, wird angehalten\n" +msgstr "Wenn Breakpoint %d das nächste Mal erreicht wird, wird angehalten.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" "Es können nur Programme untersucht werden, die mittels der Option »-f« " "übergeben wurden.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Der Debugger konnte nicht neu gestartet werden" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " -msgstr "das Programm läuft bereits. Neu starten (j/n)? " +msgstr "Das Programm läuft bereits. Neu starten (j/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Das Programm wurde nicht neu gestartet\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "Fehler: Neustart nicht möglich, da die Operation verboten ist\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" "Fehler (%s): Neustart nicht möglich, der Rest der Befehle wird ignoriert\n" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" -msgstr "Das Programm wird gestartet: \n" +msgid "Starting program:\n" +msgstr "Das Programm wird gestartet:\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Das Programm endete nicht normal mit dem Rückgabewert: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Das Programm endete normal mit dem Rückgabewert: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "Das Prgramm läuft. Trotzdem beenden (j/n) " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Es wird an keinem Breakpoint gestoppt; das Argument wird ignoriert.\n" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." -msgstr "ungültige Breakpointnummer %d." +msgid "invalid breakpoint number %d" +msgstr "ungültige Haltepunktnummer %d" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" "Die nächsten %ld Überschreitungen von Breakpoint %d werden ignoriert.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "»finish« hat in main() des äußersten Rahmens keine Bedeutung\n" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "Laufen bis zur Rückkehr von " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "»return« hat in main() des äußersten Rahmens keine Bedeutung\n" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "Die angegebene Stelle in Funktion »%s« kann nicht gefunden werden\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "ungültige Quellzeilennummer %d in Datei »%s«" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "Die Stelle %d in Datei »%s« wurde nicht gefunden\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "Das Element ist kein Feld\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "untypisierte Variable\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Stopp in %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "»finish« hat bei dem nichtlokalen Sprung »%s« keine Bedeutung\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "»finish« hat bei dem nichtlokalen Sprung »%s« keine Bedeutung\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" "\t------ [Eingabe] um fortzufahren oder [q] + [Eingabe] zum Beenden ------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] ist in Feld »%s« nicht vorhanden" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "Ausgabe wird an die Standardausgabe geschickt\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "ungültige Zahl" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" "»%s« ist im aktuellen Kontext nicht zulässig; die Anweisung wird ignoriert" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "" "»return« ist im aktuellen Kontext nicht zulässig; die Anweisung wird " "ignoriert" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" -msgstr "Im aktuellen Kontext gibt es kein Symbol »%s«" +msgid "no symbol `%s' in current context" +msgstr "im aktuellen Kontext gibt es kein Symbol mit Namen »%s«" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "unbekannter Knotentyp %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "unbekannter Opcode %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "Opcode %s ist weder ein Operator noch ein Schlüsselwort" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "Pufferüberlauf in genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1975,71 +1988,71 @@ "\t# Funktions-Aufruf-Stapel\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "»IGNORECASE« ist eine gawk-Erweiterung" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "»BINMODE« ist eine gawk-Erweiterung" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE Wert »%s« ist ungültig und wird als 3 behandelt" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "Falsche »%sFMT«-Angabe »%s«" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "»--lint« wird abgeschaltet, da an »LINT« zugewiesen wird" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "Referenz auf nicht initialisiertes Argument »%s«" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "Referenz auf die nicht initialisierte Variable »%s«" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "nicht numerischer Wert für Feldreferenz verwendet" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "Referenz auf ein Feld von einem Null-String" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "Versuch des Zugriffs auf Feld %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "Referenz auf das nicht initialisierte Feld »$%ld«" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "Funktion »%s« mit mehr Argumenten aufgerufen als in der Deklaration" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: unerwarteter Typ »%s«" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "Division durch Null versucht in »/=«" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "Division durch Null versucht in »%%=«" @@ -2133,78 +2146,78 @@ msgid "dynamic loading of libraries is not supported" msgstr "das dynamische Laden von Bibliotheken wird nicht unterstützt" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: die symbolische Verknüpfung »%s« kann nicht gelesen werden" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "stat: das erste Argument ist keine Zeichenkette" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "stat: das zweite Argument ist kein Feld" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: ungültige Parameter" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts_init: Variable %s konnte nicht angelegt werden" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts wird auf diesem System nicht unterstützt" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: nicht genug Speicher, um ein Feld anzulegen" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: das Feld konnte nicht angelegt werden" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: Aufruf mit falscher Anzahl an Argumenten, es werden 3 erwartet" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "fts: das erste Argument ist kein Feld" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "fts: das zweite Argument ist keine Zahl" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "fts: das dritte Argument ist kein Feld" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: Feld konnte nicht flachgemacht werden\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" "fts: die heimtückische Kennung FTS_NOSTAT wird ignoriert, ätsch bätsch." @@ -2237,7 +2250,7 @@ #: extension/fnmatch.c:195 msgid "fnmatch init: could not install FNM array" -msgstr "fnmatch_init: das FNM-Feld konnte nicht gesetzt werden." +msgstr "fnmatch init: das FNM-Feld konnte nicht installiert werden." #: extension/fork.c:92 msgid "fork: PROCINFO is not an array!" @@ -2344,7 +2357,7 @@ msgid "chr: first argument is not a number" msgstr "chr: das erste Argument ist keine Zahl" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir ist fehlgeschlagen: %s" @@ -2433,190 +2446,195 @@ msgid "sleep: not supported on this platform" msgstr "sleep: wird auf dieser Plattform nicht unterstützt" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "Der Eingabe-Datensatz ist zu groß" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF wird ein negativer Wert zugewiesen" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "Die Variable NF kann in vielen AWK-Versionen nicht vermindert werden" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" "Der Zugriff auf Felder aus einer END-Regel heraus ist möglicherweise nicht " "portabel" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: das vierte Argument ist eine gawk-Erweiterung" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: das vierte Argument ist kein Feld" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: %s kann nicht als viertes Argument verwendet werden" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: das zweite Argument ist kein Feld" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: als zweites und viertes Argument kann nicht das gleiche Feld " "verwendet werden" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: Ein Teilfeld des zweiten Arguments kann nicht als viertes Argument " "verwendet werden" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: Ein Teilfeld des vierten Arguments kann nicht als zweites Argument " "verwendet werden" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "" "split: Null-String als drittes Argument ist eine nicht standardisierte " "Erweiterung" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: Das vierte Argument ist kein Feld" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: Das zweite Argument ist kein Feld" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: Das dritte Argument darf nicht Null sein" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: als zweites und viertes Argument kann nicht das gleiche Feld " "verwendet werden" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: Ein Teilfeld des zweiten Arguments kann nicht als viertes Argument " "verwendet werden" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: Ein Teilfeld des vierten Arguments kann nicht als zweites Argument " "verwendet werden" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "»FIELDWIDTHS« ist eine gawk-Erweiterung" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "»*« muss der letzte Bezeichner in FIELDWIDTHS sein" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "ungültiger FIELDWIDTHS-Wert für Feld %d, nah bei »%s«" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "Null-String für »FS« ist eine gawk-Erweiterung" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "Das alte awk unterstützt keine regulären Ausdrücke als Wert von »FS«" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "»FPAT« ist eine gawk-Erweiterung" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: Rückgabewert Null erhalten" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: nicht im MPFR-Modus" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: MPFR wird nicht unterstützt" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: ungültiger Zahlentyp »%d«" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func: NULL name_space erhalten" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -"node_to_awk_value: unzulässige Kombination von Kennungen für Zahlen »%s« " -"gefunden; Bitte senden Sie einen Fehlerbericht." +"node_to_awk_value: unzulässige Kombination »%s« von Zahlenkennungen; Bitte " +"senden Sie einen Fehlerbericht" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: Null-Knoten erhalten" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: Null-Wert erhalten" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value fand die ungültige Kombination von Schaltern »%s«: Bitte " -"senden Sie einen Fehlerebericht." +"senden Sie einen Fehlerbericht" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: Null-Feld erhalten" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: Null-Index erhalten" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" "api_flatten_array_typed: Index %d konnte nicht in %s umgewandelt werden" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: Wert %d konnte nicht in %s umgewandelt werden" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: MPFR wird nicht unterstützt" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "Das Ende der Regel BEGINFILE ist unauffindbar" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "Der unbekannte Dateityp »%s« kann nicht für »%s« geöffnet werden" @@ -2627,31 +2645,94 @@ msgstr "" "das Kommandozeilen-Argument »%s« ist ein Verzeichnis: wird übersprungen" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "Die Datei »%s« kann nicht zum Lesen geöffnet werden: %s" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist fehlgeschlagen: %s" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "»%.*s« wird sowohl als Eingabe- als auch als Ausgabedatei verwendet" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" +"»%.*s« wird sowohl als Eingabedatei als auch als Eingaberöhre verwendet" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" +"»%.*s« wird sowohl als Eingabedatei als auch als Zweiwegeröhre verwendet" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" +"»%.*s« wird sowohl als Eingabedatei als auch als Ausgaberöhre verwendet" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "Unnötige Kombination von »>« und »>>« für Datei »%.*s«" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" +"»%.*s« wird sowohl als Eingaberöhre als auch als Ausgabedatei verwendet" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" +"»%.*s« wird sowohl als Ausgabedatei als auch als Ausgaberöhre verwendet" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" +"»%.*s« wird sowohl als Ausgabedatei als auch als Zweiwegeröhre verwendet" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "»%.*s« wird sowohl als Eingabe- als auch als Ausgaberöhre verwendet" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" +"»%.*s« wird sowohl als Eingaberöhre als auch als Zweiwegeröhre verwendet" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" +"»%.*s« wird sowohl als Ausgaberöhre als auch als Zweiwegeröhre verwendet" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "Umlenkungen sind im Spielwiesenmodus nicht erlaubt" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "Der Ausdruck in einer Umlenkung mittels »%s« ist eine Zahl" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "Der Ausdruck für eine Umlenkung mittels »%s« ist ein leerer String" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2659,27 +2740,22 @@ "Der Dateiname »%.*s« für eine Umlenkung mittels »%s« kann das Ergebnis eines " "logischen Ausdrucks sein" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "Unnötige Kombination von »>« und »>>« für Datei »%.*s«" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file kann die Pipe »%s« mit fd %d nicht erzeugen" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "Die Pipe »%s« kann nicht für die Ausgabe geöffnet werden: %s" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "Die Pipe »%s« kann nicht für die Eingabe geöffnet werden: %s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2687,496 +2763,505 @@ "Die Erzeugung eines Sockets mittels get_file für »%s« mit fd %d wird auf " "dieser Plattform nicht unterstützt" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" "Die bidirektionale Pipe »%s« kann nicht für die Ein-/Ausgabe geöffnet " "werden: %s" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "Von »%s« kann nicht umgelenkt werden: %s" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "Zu »%s« kann nicht umgelenkt werden: %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "Die Systemgrenze offener Dateien ist erreicht, daher werden nun " "Dateideskriptoren mehrfach verwendet" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "Fehler beim Schließen von »%s«: %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "Zu viele Pipes oder Eingabedateien offen" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: Das zweite Argument muss »to« oder »from« sein" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: »%.*s« ist weder offene Datei, noch Pipe oder Ko-Prozess" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "»close« für eine Umlenkung, die nie geöffnet wurde" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: Umlenkung »%s« wurde nicht mit »|&« geöffnet, das zweite Argument " "wird ignoriert" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "Fehlerstatus (%d) beim Schließen der Pipe »%s«: %s" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "Fehlerstatus (%d) beim Schließen der Röhre »%s«: %s" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "Fehlerstatus (%d) beim Schließen der Datei »%s«: %s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "Das explizite Schließen des Sockets »%s« fehlt" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "Das explizite Schließen des Ko-Prozesses »%s« fehlt" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "Das explizite Schließen der Pipe »%s« fehlt" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "Das explizite Schließen der Datei »%s« fehlt" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: die Standardausgabe kann nicht geleert werden: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: die Standardfehlerausgabe kann nicht geleert werden: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "Fehler beim Schreiben auf die Standardausgabe: %s" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "Fehler beim Schreiben auf die Standardfehlerausgabe: %s" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." -msgstr "Das Leeren der Pipe »%s« ist fehlgeschlagen: %s" +msgid "pipe flush of `%s' failed: %s" +msgstr "Das Leeren der Röhre »%s« ist fehlgeschlagen: %s" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." -msgstr "Ko-Prozess: Das Leeren der Pipe zu »%s« ist fehlgeschlagen: %s" +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "Ko-Prozess: Das Leeren der Röhre zu »%s« ist fehlgeschlagen: %s" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "Das Leeren der Datei »%s« ist fehlgeschlagen: %s" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "Der lokale Port »%s« ist ungültig in »/inet«: %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "Der lokale Port »%s« ist ungültig in »/inet«" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "Die Angaben zu entferntem Host und Port (%s, %s) sind ungültig: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "Die Angaben zu entferntem Host und Port (%s, %s) sind ungültig" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-Verbindungen werden nicht unterstützt" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "»%s« konnte nicht geöffnet werden, Modus »%s«" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "" "Das Schließen der übergeordneten Terminal-Gerätedatei ist fehlgeschlagen: %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "" "Das Schließen der Standardausgabe im Kindprozess ist fehlgeschlagen: %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardausgabe " "im Kindprozess ist fehlgeschlagen (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "Schließen von stdin im Kindprozess fehlgeschlagen: %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardeingabe " "im Kindprozess ist fehlgeschlagen (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "" "Das Schließen der untergeordneten Terminal-Gerätedatei ist fehlgeschlagen: %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "Kindprozess konnte nicht erzeugt oder Terminal nicht geöffnet werden" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "Das Verschieben der Pipe zur Standardausgabe im Kindprozess ist " "fehlgeschlagen (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "Das Verschieben der Pipe zur Standardeingabe im Kindprozess ist " "fehlgeschlagen (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "" "Das Wiederherstellen der Standardausgabe im Elternprozess ist fehlgeschlagen" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "" "Das Wiederherstellen der Standardeingabe im Elternprozess ist fehlgeschlagen" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "Das Schließen der Pipe ist fehlgeschlagen: %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "»|&« wird nicht unterstützt" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "Pipe »%s« kann nicht geöffnet werden: %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "Kindprozess für »%s« kann nicht erzeugt werden (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" "getline: es wird versucht, vom geschlossenen lesenden Ende einer " "bidirektionalen Pipe zu lesen" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: NULL-Zeiger erhalten" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "Eingabeparser »%s« steht im Konflikt mit dem vorher installierten " "Eingabeparser »%s«" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "Eingabeparser »%s« konnte »%s« nicht öffnen" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: NULL-Zeiger erhalten" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "Ausgabeverpackung »%s« steht im Konflikt mit Ausgabeverpackung »%s«" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "Ausgabeverpackung »%s« konnte »%s« nicht öffnen" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: NULL-Zeiger erhalten" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "Zweiwegeprozessor »%s« steht im Konflikt mit Zweiwegeprozessor »%s«" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "Zweiwegeprozessor »%s« konnte »%s« nicht öffnen" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "Die Datei »%s« ist leer" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "Es konnte kein weiterer Speicher für die Eingabe beschafft werden" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "Multicharacter-Wert von »RS« ist eine gawk-Erweiterung" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6-Verbindungen werden nicht unterstützt" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "Die Umgebungsvariable »POSIXLY_CORRECT« ist gesetzt: »--posix« wird " "eingeschaltet" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "»--posix« hat Vorrang vor »--traditional«" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "»--posix« /»--traditional« hat Vorrang vor »--non-decimal-data«" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "»--posix« hat Vorrang vor »--characters-as-bytes«" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "%s als setuid root auszuführen kann zu Sicherheitsproblemen führen" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "" "Das Setzen des Binärmodus für die Standardeingabe ist nicht möglich: %s" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "" "Das Setzen des Binärmodus für die Standardausgabe ist nicht möglich: %s" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "" "Das Setzen des Binärmodus für die Standardfehlerausgabe ist nicht möglich: %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "Es wurde überhaupt kein Programmtext angegeben!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -f Programm [--] Datei ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -- %cProgramm%c Datei ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-Optionen\t\tlange GNU-Optionen: (standard)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f Programm\t\t--file=Programm\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=Wert\t\t--assign=var=Wert\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-Optionen\t\tGNU-Optionen (lang): (Erweiterungen)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d [Datei]\t\t--dump-variables[=Datei]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[Datei]\t\t--debug[=Datei]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'Programmtext'\t--source=Programmtext\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E Datei\t\t\t--exec=Datei\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i einzubindende_Datei\t\t--include=einzubindende_Datei\n" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-I\t\t\t--trace\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l Bibliothek\t\t--load=Bibliothek\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[Datei]\t\t--pretty-print[=Datei]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p [Datei]\t\t--profile[=Datei]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z Regionsname\t\t--locale=Regionsname\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3200,7 +3285,7 @@ "translation-team-de@lists.sourceforge.net.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3211,7 +3296,7 @@ "auf der Standardausgabe aus.\n" "\n" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -3222,7 +3307,7 @@ "\t%s '{ summe += $1 }; END { print summe }' Datei\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3242,7 +3327,7 @@ "spätere Version.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3255,7 +3340,7 @@ "leistung einer HANDELBARKEIT oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.\n" "Sehen Sie bitte die GNU General Public License für weitere Details.\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3264,11 +3349,11 @@ "diesem Programm erhalten haben. Wenn nicht, lesen Sie bitte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3277,165 +3362,170 @@ "%s: Argument »%s« von »-v« ist nicht in der Form »Variable=Wert«\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "»%s« ist kein gültiger Variablenname" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "»%s« ist kein Variablenname, es wird nach der Datei »%s=%s« gesucht" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "die eingebaute Funktion »%s« kann nicht als Variablenname verwendet werden" # c-format -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "Funktion »%s« kann nicht als Variablenname verwendet werden" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "Gleitkomma-Ausnahme" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "Fataler Fehler: interner Fehler" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "Fataler Fehler: interner Fehler: Speicherzugriffsfehler" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "Fataler Fehler: interner Fehler: Stapelüberlauf" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "Kein bereits geöffneter Dateideskriptor %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "/dev/null konnte nicht für Dateideskriptor %d geöffnet werden" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "Das leere Argument für »--source« wird ignoriert" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "»--profile« hat Vorrang vor »--pretty-print«" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" "-M wurde ignoriert: die Unterstützung von MPFR/GMP wurde nicht eingebaut" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: Die Option »-W %s« ist unbekannt und wird ignoriert\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: Die Option %c erfordert ein Argument\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" -msgstr "PREC Wert »%.*s« ist ungültig" +msgstr "PREC-Wert »%.*s« ist ungültig" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" -msgstr "BINMODE Wert »%.*s« ist ungültig" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "ROUNDMODE-Wert »%.*s« ist ungültig" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: das erste Argument ist keine Zahl" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: das zweite Argument ist keine Zahl" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s: Negatives Argument %.*s erhalten" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "Argument ist keine Zahl" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: das erste Argument ist keine Zahl" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): ein negativer Wert ist unzulässig" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): Dezimalteil wird abgeschnitten" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "cmpl(%Zd): Negative Werte sind unzulässig" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: das Argument Nr. %d ist keine Zahl" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" "%s: Argument Nr. %d hat den ungültigen Wert %Rg, es wird stattdessen 0 " "verwendet" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: der negative Wert %2$Rg in Argument Nr. %1$d ist unzulässig" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: der Nachkommateil %2$Rg in Argument Nr. %1$d wird abgeschnitten" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%1$s: der negative Wert %3$Zd in Argument Nr. %2$d ist unzulässig" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: wird mit weniger als zwei Argumenten aufgerufen" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: wird mit weniger als zwei Argumenten aufgerufen" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: wird mit weniger als zwei Argumenten aufgerufen" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: das Argument ist keine Zahl" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: das erste Argument ist keine Zahl" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: das zweite Argument ist keine Zahl" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "Kommandozeile:" @@ -3444,20 +3534,20 @@ msgid "could not make typed regex" msgstr "Der typisierte Regex konnte nicht erzeugt werden" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "Das alte awk unterstützt die Escapesequenz »\\%c« nicht" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX erlaubt keine »\\x«-Escapes" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "In der »\\x«-Escapesequenz sind keine hexadezimalen Zahlen" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3466,15 +3556,15 @@ "Die Hex-Sequenz \\x%.*s aus %d Zeichen wird wahrscheinlich nicht wie " "gewünscht interpretiert" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "Escapesequenz »\\%c« wird wie ein normales »%c« behandelt" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Es wurden unbekannte Multibyte-Daten gefunden. Ihre Daten entsprechen " "eventuell nicht der gesetzten Region" @@ -3525,11 +3615,11 @@ msgid "internal error: %s with null vname" msgstr "Interner Fehler: %s mit null vname" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "Interner Fehler: eingebaute Fuktion mit leerem fname" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3538,7 +3628,7 @@ "%s# Erweiterungen geladen (-l und/oder @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3549,12 +3639,12 @@ "# Eingebundene Dateien (-i und/oder @include)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-Profil, erzeugt %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3563,7 +3653,7 @@ "\n" "\t# Funktionen in alphabetischer Reihenfolge\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: unbekannter Umlenkungstyp %d" @@ -3599,39 +3689,39 @@ msgstr "" "Regulärer-Ausdruck-Komponente »%.*s« sollte wahrscheinlich »[%.*s]« sein" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "nicht geschlossene [" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "ungültige Zeichenklasse" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "Die Syntax für Zeichenklassen ist [[:space:]], nicht [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "nicht beendetes \\ Escape" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "Ungültiger Inhalt von \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "Regulärer Ausdruck ist zu groß" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "nicht geschlossene (" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "keine Syntax angegeben" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "nicht geöffnete )" @@ -3763,16 +3853,31 @@ msgid "No previous regular expression" msgstr "Kein vorangehender regulärer Ausdruck" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" "Funktion »%s«: Funktion »%s« kann nicht als Parametername verwendet werden" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "der Hauptkontext kann nicht entfernt werden" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "Fatal: »L« ist in POSIX-awk-Formaten nicht zulässig" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "Fatal: »h« ist in POSIX-awk-Formaten nicht zulässig" + +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Im aktuellen Kontext gibt es kein Symbol »%s«" + #~ msgid "fts: first parameter is not an array" #~ msgstr "fts: das erste Argument ist kein Feld" diff -urN gawk-5.1.0/po/en@boldquot.header gawk-5.1.1/po/en@boldquot.header --- gawk-5.1.0/po/en@boldquot.header 2018-09-16 21:30:55.000000000 +0300 +++ gawk-5.1.1/po/en@boldquot.header 2020-08-28 14:48:05.000000000 +0300 @@ -2,7 +2,7 @@ # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). diff -urN gawk-5.1.0/po/en@quot.header gawk-5.1.1/po/en@quot.header --- gawk-5.1.0/po/en@quot.header 2018-09-16 21:30:55.000000000 +0300 +++ gawk-5.1.1/po/en@quot.header 2020-08-28 14:48:05.000000000 +0300 @@ -2,7 +2,7 @@ # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). diff -urN gawk-5.1.0/po/es.po gawk-5.1.1/po/es.po --- gawk-5.1.0/po/es.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/es.po 2021-10-27 07:58:41.000000000 +0300 @@ -1,16 +1,17 @@ -# Mensajes en español para gawk-4.2.0e. -# Copyright (C) 2001 - 2018 Free Software Foundation, Inc. +# Mensajes en español para gawk. +# Copyright (C) 2001 - 2021 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # Cristian Othón Martínez Vera , 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012. # Javier , 2018. # Francisco Javier Serrador , 2018. +# Antonio Ceballos Roa , 2021 msgid "" msgstr "" -"Project-Id-Version: gawk 4.2.0e\n" +"Project-Id-Version: gawk 5.0.64\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2018-03-24 17:48+0200\n" -"Last-Translator: Francisco Javier Serrador \n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-01-29 08:25+0100\n" +"Last-Translator: Antonio Ceballos Roa \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" @@ -20,507 +21,529 @@ "X-Generator: Virtaal 0.7.1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "desde %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" -msgstr "trata emplear un valor escalar como una matriz" +msgstr "intenta utilizar un valor escalar como una matriz" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" -msgstr "trata utilizar parámetro escalar «%s» como una matriz" +msgstr "intenta utilizar el parámetro escalar «%s» como una matriz" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" -msgstr "trata utilizar el escalar «%s» como una matriz" +msgstr "intenta utilizar el escalar «%s» como una matriz" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" -msgstr "trata utilizar la matriz «%s» en un contexto escalar" +msgstr "intenta utilizar la matriz «%s» en un contexto escalar" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" -msgstr "delete: índice «%.*s» no dentro de la matriz «%s»" +msgstr "delete: el índice «%.*s» no está dentro de la matriz «%s»" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" -msgstr "trata utilizar `%s[«%.*s»]' escalar como una matriz" +msgstr "intenta utilizar el escalar `%s[«%.*s»]' como una matriz" -#: array.c:783 array.c:831 -#, fuzzy, c-format +#: array.c:784 array.c:834 +#, c-format msgid "%s: first argument is not an array" -msgstr "asort: el primer argumento no es una matriz" +msgstr "%s: el primer argumento no es una matriz" -#: array.c:824 -#, fuzzy, c-format +#: array.c:826 +#, c-format msgid "%s: second argument is not an array" -msgstr "split: el segundo argumento no es una matriz" +msgstr "%s: el segundo argumento no es una matriz" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "asort: el primer argumento no es una matriz" +#| msgid "%s: cannot use a subarray of first argument for second argument" +msgid "%s: cannot use %s as second argument" +msgstr "" +"%s: no se puede utilizar una submatriz del primer argumento para el segundo " +"argumento" -#: array.c:838 +#: array.c:837 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "asort: el primer argumento no es una matriz" +#| msgid "%s: first argument cannot be SYMTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%s: el primer argumento no puede ser SYMTAB" -#: array.c:844 +#: array.c:839 #, fuzzy, c-format +#| msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%s: el primer argumento no puede ser FUNCTAB" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 +#, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" -"asort: no se puede usar una submatriz del primer argumento para el segundo " +"%s: no se puede utilizar una submatriz del primer argumento para el segundo " "argumento" -#: array.c:849 -#, fuzzy, c-format +#: array.c:856 +#, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" -"asort: no se puede usar una submatriz del segundo argumento para el primer " +"%s: no se puede utilziar una submatriz del segundo argumento para el primer " "argumento" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" -msgstr "«%s» es inválido como un nombre de función" +msgstr "«%s» es inválido como nombre de función" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la función de comparación de ordenamiento «%s» no está definida" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" -msgstr "bloques %s deben tener una parte de acción" +msgstr "los bloques %s deben tener una parte de acción" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "cada regla debe tener un patrón o una parte de acción" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "el awk antiguo no admite reglas `BEGIN' o `END' múltiples" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "«%s» es una función interna, no puede ser redefinida" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" -"la constante de expresión regular `//' parece un comentario de C++, pero no " -"lo es" +"la expresión regular constante `//' parece un comentario de C++, pero no lo " +"es" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" -msgstr "expreg constante `/%s/' parece como un comentario de C, pero no lo es" +msgstr "" +"la expresión regular constante `/%s/' parece un comentario de C, pero no lo " +"es" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valores case duplicados en el cuerpo de un switch: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "se detectó un `default' duplicado en el cuerpo de un switch" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "no se permite `break' fuera de un bucle o switch" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "`continue' no se permite fuera de un bucle" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "se usó `next' en la acción %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "se usó `nextfile' en la acción %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "se usó `return' fuera del contexto de la función" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "el `print' simple en la regla BEGIN o END probablemente debe ser `print \"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' no está permitida con SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' no está permitida con FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" -msgstr "`delete(array)' es una extensión de tawk que no es transportable" +msgstr "`delete(array)' es una extensión no portable de tawk" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" -msgstr "las líneas de tuberías de dos vías multiestado no funcionan" +msgstr "las tuberías bidireccionales multietapa no funcionan" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" -msgstr "" +msgstr "la concatenación como destino de una redirección de E/S `>' es ambigua" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "expreg del lado derecho de asignación" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" -msgstr "expreg `~' o `!~' a la izquierda del operador" +msgstr "expreg a la izquierda de un operador `~' o `!~'" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "el awk antiguo no admite la palabra clave `in' excepto después de `for'" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" -msgstr "expreg del lado derecho de comparación" +msgstr "expreg al lado derecho de una comparación" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" -msgstr "`getline' no redirigido es inválido dentro de regla «%s»" +msgstr "`getline' no redirigido es inválido dentro de la regla «%s»" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "`getline' no redirigido indefinido dentro de la acción de END" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "el awk antiguo no admite matrices multidimensionales" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" -msgstr "la llamada de `length' sin paréntesis no es transportable" +msgstr "la llamada de `length' sin paréntesis no es portable" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "las llamadas indirectas a función son una extensión de gawk" -#: awkgram.y:2010 -#, fuzzy, c-format +#: awkgram.y:2017 +#, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "la variable especial «%s» no se puede usar como llamada indirecta a función" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" -msgstr "trata utilizar una no-función «%s» dentro de llamada de función" +msgstr "intento de utilizar la no-función «%s» en una llamada a función" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "expresión de subíndice inválida" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "aviso: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "nueva línea o fin de la cadena inesperados" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" +"los ficheros fuente o los argumentos por línea de órdenes deben contener " +"funciones o reglas completas" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 -#, fuzzy, c-format +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 +#, c-format msgid "cannot open source file `%s' for reading: %s" -msgstr "no puede abrir el fichero fuente «%s» para lectura (%s)" +msgstr "no se puede abrir el fichero fuente «%s» para lectura: %s" -#: awkgram.y:2856 awkgram.y:2993 -#, fuzzy, c-format +#: awkgram.y:2863 awkgram.y:3000 +#, c-format msgid "cannot open shared library `%s' for reading: %s" -msgstr "no puede abrir biblioteca «%s» compartida para lectura (%s)" +msgstr "no se puede abrir la biblioteca «%s» compartida para lectura: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "razón desconocida" -#: awkgram.y:2867 awkgram.y:2891 -#, fuzzy, c-format +#: awkgram.y:2874 awkgram.y:2898 +#, c-format msgid "cannot include `%s' and use it as a program file" -msgstr "no puede incluir «%s» y emplearla como un fichero de programa" +msgstr "no se puede incluir «%s» y emplearla como un fichero de programa" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "ya se incluyó el fichero fuente «%s»" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" -msgstr "ya caargada la biblioteca compartida «%s»" +msgstr "la biblioteca compartida «%s» ya está cargada" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include es una extensión de gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load es una extensión de gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "nombre de fichero vacío después de @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "texto de programa vacío en la línea de órdenes" -#: awkgram.y:3239 debug.c:461 debug.c:619 -#, fuzzy, c-format +#: awkgram.y:3246 debug.c:470 debug.c:628 +#, c-format msgid "cannot read source file `%s': %s" -msgstr "no puede leer el fichero fuente «%s» (%s)" +msgstr "no se puede leer el fichero fuente «%s»: %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "el fichero fuente «%s» está vacío" -#: awkgram.y:3310 -#, fuzzy, c-format +#: awkgram.y:3317 +#, c-format msgid "error: invalid character '\\%03o' in source code" -msgstr "Error PEBKAC: carácter inválido '\\%03o' en código fuente" +msgstr "error: carácter inválido '\\%03o' en código fuente" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "el fichero fuente no termina con línea nueva" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" -msgstr "expreg sin terminar finaliza con `\\` al final del fichero" +msgstr "expreg sin terminar finaliza con `\\' al final del fichero" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -"%s: %d: el modificador de expresión regular `/…/%c` de tawk no funciona en " +"%s: %d: el modificador de expresión regular `/.../%c' de tawk no funciona en " "gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -"el modificador de expresión regular `/…/%c` de tawk no funciona en gawk" +"el modificador de expresión regular `/.../%c' de tawk no funciona en gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "expreg sin terminar" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "expreg sin terminar al final del fichero" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" -msgstr "la utilización de la continuación de línea `\\ #…' no es transportable" +msgstr "la utilización de la continuación de línea `\\ #...' no es portable" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" -msgstr "barra invertida no es el último caracter en la línea" +msgstr "el último carácter de la línea no es una barra inclinada invertida" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" -msgstr "matrices multidimensionales son una extensión de gawk" +msgstr "las matrices multidimensionales son una extensión de gawk" -#: awkgram.y:3891 awkgram.y:3902 -#, fuzzy, c-format +#: awkgram.y:3898 awkgram.y:3909 +#, c-format msgid "POSIX does not allow operator `%s'" -msgstr "POSIX no permite el operador `**'" +msgstr "POSIX no permite el operador `%s'" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 -#, fuzzy, c-format +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 +#, c-format msgid "operator `%s' is not supported in old awk" -msgstr "el operador `^' no se admite en el awk antiguo" +msgstr "el operador `%s' no se admite en el awk antiguo" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "cadena sin terminar" -#: awkgram.y:4054 main.c:1218 -#, fuzzy +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" -msgstr "POSIX no permite `\\x' como escapes" +msgstr "POSIX no permite nuevas líneas físicas en valores de cadena" -#: awkgram.y:4056 node.c:453 -#, fuzzy +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" -msgstr "la utilización de la continuación de línea `\\ #…' no es transportable" +msgstr "" +"la barra inclinada invertida como continuación de cadena no es portable" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "carácter «%c» inválido en la expresión" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "«%s» es una extensión de gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permite «%s»" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "«%s» no se admite en el awk antiguo" -#: awkgram.y:4500 -#, fuzzy +#: awkgram.y:4507 msgid "`goto' considered harmful!" -msgstr "¡`goto' se considera dañino!\n" +msgstr "¡`goto' se considera dañino!" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d es inválido como número de argumentos para %s" -#: awkgram.y:4604 -#, fuzzy, c-format +#: awkgram.y:4611 +#, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" -"%s: la literal de cadena como último argumento de substitute no tiene efecto" +"%s: un literal de cadena como último argumento de substitute no tiene efecto" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "el tercer argumento de %s no es un objecto modificable" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argumento es una extensión de gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: el segundo argumento es una extensión de gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -"la utilización de dcgettext(_\"…\") es incorrecta: quite el subrayado inicial" +"la utilización de dcgettext(_\"...\") es incorrecta: quite el subrayado " +"inicial" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -"la utilización de dcngettext(_\"…\") es incorrecta: quite el subrayado " +"la utilización de dcngettext(_\"...\") es incorrecta: quite el subrayado " "inicial" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "indizado: expreg constante como segundo argumento no está permitido" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" -msgstr "función «%s»: parámetro «%s» oscurece la variable global" +msgstr "función «%s»: el parámetro «%s» oculta una variable global" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "no se puede abrir «%s» para escritura: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "se envía la lista de variables a la salida común de error" -#: awkgram.y:4930 -#, fuzzy, c-format +#: awkgram.y:4937 +#, c-format msgid "%s: close failed: %s" -msgstr "%s: fallado close (%s)" +msgstr "%s: close ha fallado: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" -msgstr "¡se llamó shadow_funcs() dos veces!" +msgstr "¡se llamó a shadow_funcs() dos veces!" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "hay variables opacadas." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" +msgstr "había variables opacadas." -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "el nombre de función «%s» se definió previamente" -#: awkgram.y:5091 -#, fuzzy, c-format +#: awkgram.y:5098 +#, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "" "función «%s»: no se puede usar un nombre de función como nombre de parámetro" -#: awkgram.y:5094 -#, fuzzy, c-format +#: awkgram.y:5101 +#, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "función «%s»: no se puede usar la variable especial «%s» como un parámetro " "de función" -#: awkgram.y:5098 -#, fuzzy, c-format +#: awkgram.y:5105 +#, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" -msgstr "función «%s»: parámetro «%s» oscurece la variable global" +msgstr "" +"función «%s»: el parámetro «%s» no puede contener un espacio de nombres" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" -msgstr "función «%s»: parámetro #%d, «%s», duplica el parámetro #%d" +msgstr "función «%s»: el parámetro #%d, «%s», duplica el parámetro #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" -msgstr "se llamó a la función «%s» pero nunca se definió" +msgstr "se llamó a la función «%s» pero nunca se la definió" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" -msgstr "se definió la función «%s» pero nunca se llamó directamente" +msgstr "se definió la función «%s» pero nunca se la llamó directamente" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "expreg constante para el parámetro #%d da un valor booleano" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -529,84 +552,99 @@ "se llamó a la función «%s» con espacio entre el nombre y el `(',\n" "o se usó como una variable o una matriz" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "se intentó una división entre cero" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "se intentó una división entre cero en `%%'" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "no puede asignar un valor al resultado de un campo expresión post-intremental" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" -msgstr "objetivo inválido de asignación (codigo op %s)" +msgstr "objetivo de asignación inválido (código de operación %s)" + +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "la declaración no tiene efecto" -#: awkgram.y:6697 +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" +"identificador %s: los nombres cualificados no se permiten en modo " +"tradicional / POSIX" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" +"identificador %s: el separador de espacio de nombres es dos signos de dos " +"puntos, no uno" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" -msgstr "" +msgstr "el identificador cualificado «%s» está mal formado" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" +"identificador «%s»: el separador de espacio de nombres solo puede aparecer " +"una vez en un nombre cualificado" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" +"utilizar el identificador reservado «%s» como espacio de nombres no está " +"permitido" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" +"utilizar el identificador reservado «%s» como segundo componente de un " +"nombre cualificado no está permitido" -#: awkgram.y:6799 -#, fuzzy +#: awkgram.y:6830 msgid "@namespace is a gawk extension" -msgstr "@include es una extensión de gawk" +msgstr "@namespace es una extensión de gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" +"el nombre de espacio de nombres «%s» debe cumplir las reglas de nombres de " +"identificadores" #: builtin.c:144 -#, fuzzy, c-format +#, c-format msgid "%s to \"%s\" failed: %s" -msgstr "fallado %s a «%s» (%s)" +msgstr "%s a \"%s\" ha fallado: %s" #: builtin.c:148 msgid "standard output" -msgstr "salida común" +msgstr "salida estándar" #: builtin.c:149 msgid "standard error" -msgstr "error común" +msgstr "error estándar" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: argumento no numérico recibido" @@ -620,20 +658,20 @@ #, c-format msgid "fflush: cannot flush: pipe `%.*s' opened for reading, not writing" msgstr "" -"fflush: no se puede tirar: se abrió la tubería «%.*s» para lectura, no para " +"fflush: no se puede vaciar: se abrió la tubería «%.*s» para lectura, no para " "escritura" #: builtin.c:249 #, c-format msgid "fflush: cannot flush: file `%.*s' opened for reading, not writing" msgstr "" -"fflush: no se puede tirar: fichero «%.*s» abierto para lectura, no para " +"fflush: no se puede vaciar: fichero «%.*s» abierto para lectura, no para " "escritura" #: builtin.c:260 #, c-format msgid "fflush: cannot flush file `%.*s': %s" -msgstr "fflush: no se puede tirar el fichero «%.*s»: %s" +msgstr "fflush: no se puede vaciar el fichero «%.*s»: %s" #: builtin.c:265 #, c-format @@ -645,17 +683,17 @@ #: builtin.c:271 #, c-format msgid "fflush: `%.*s' is not an open file, pipe or co-process" -msgstr "fflush: «%.*s» no es un fichero abierto, tubería o co-proceso" +msgstr "fflush: «%.*s» no es un fichero, tubería o co-proceso abiertos" -#: builtin.c:378 builtin.c:2034 -#, fuzzy, c-format +#: builtin.c:378 builtin.c:2023 +#, c-format msgid "%s: received non-string first argument" -msgstr "index: el primer argumento recibido no es una cadena" +msgstr "%s: el primer argumento recibido no es una cadena" #: builtin.c:380 -#, fuzzy, c-format +#, c-format msgid "%s: received non-string second argument" -msgstr "index: el segundo argumento recibido no es una cadena" +msgstr "%s: el segundo argumento recibido no es una cadena" #: builtin.c:532 msgid "length: received array argument" @@ -665,192 +703,179 @@ msgid "`length(array)' is a gawk extension" msgstr "`length(array)' es una extensión de gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 -#, fuzzy, c-format +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 +#, c-format msgid "%s: received non-string argument" -msgstr "system: se recibió un argumento que no es una cadena" +msgstr "%s: se recibió un argumento que no es una cadena" -#: builtin.c:586 builtin.c:1801 -#, fuzzy, c-format +#: builtin.c:586 builtin.c:1790 +#, c-format msgid "%s: received negative argument %g" -msgstr "log: se recibió el argumento negativo %g" +msgstr "%s: se recibió el argumento negativo %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: se debe utilizar `count$' en todos los formatos o en ninguno" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "anchura del campo ignorada para `%%' como especificador" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" -msgstr "precisión está ignorada para `%%' especificador" +msgstr "se descarta la precisión para el especificador `%%'" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -"anchura y orecisión del campo son ignorados para `%%' como especificador" +"anchura y precisión del campo son ignorados para `%%' como especificador" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no se permite `$' en los formatos de awk" -#: builtin.c:927 -#, fuzzy +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" -msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0" +msgstr "fatal: el índice del argumento con `$' debe ser > 0" -#: builtin.c:931 -#, fuzzy, c-format +#: builtin.c:937 +#, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" -"fatal: cuenta arg %ld es mayor que el número total de argumentos " -"proporcionados" +"fatal: el índice del argumento %ld es mayor que el número total de " +"argumentos proporcionados" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: no se permite `$' después de un punto en el formato" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: no se proporciona `$' para la anchura o la precisión del campo " "posicional" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "`l' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `l' en los formatos POSIX de awk" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "`L' no tiene significado en los formatos de awk; se descarta" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: no se permite `L' en los formatos POSIX de awk" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "`h' no tiene significado en los formatos de awk; se descarta" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: no se permite `h' en los formatos POSIX de awk" - -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: el valor %g es demasiado grande para el formato %%c" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" -msgstr "[s]printf: el valor %g no es un ancho de carácter válido" +msgstr "[s]printf: el valor %g no es un carácter ancho válido" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: el valor %g está fuera del rango para `%%%c' como formato" -#: builtin.c:1505 -#, fuzzy, c-format +#: builtin.c:1483 +#, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" -msgstr "[s]printf: el valor %g está fuera del rango para `%%%c' como formato" +msgstr "[s]printf: el valor %s está fuera del rango para `%%%c' como formato" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" -msgstr "" +msgstr "el formato %%%c es estándar POSIX pero no es portable a otros awks" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "se descarta el carácter especificador de formato `%c' desconocido: no se " "convirtió ningún argumento" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: no hay suficientes argumentos para satisfacer a la cadena de formato" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "se acabó ^ para éste" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: el especificador de formato no tiene letras de control" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "se proporcionaron demasiados argumentos para la cadena de formato" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: sin argumentos" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf: intenta escribir a final de escritura cerrada de dos tuberías de vía " "doble" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no es >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no es >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: se truncará la longitud no entera %g" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: la longitud %g es demasiado grande para ser índice de cadena, se " "trunca a %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: el índice de inicio %g es inválido, se usa 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: se truncará el índice de inicio no entero %g" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: la cadena de origen es de longitud cero" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: el índice de inicio %g está después del fin de la cadena" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -858,163 +883,170 @@ "substr: la cadena %g en el índice de inicio %g excede la longitud del primer " "argumento (%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo numérico" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 -#, fuzzy, c-format +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 +#, c-format msgid "%s: received non-numeric second argument" -msgstr "or: el segundo argumento recibido no es númerico" +msgstr "%s: el segundo argumento recibido no es númerico" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: el segundo argumento es menor que 0 o demasiado grande para time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: segundo argumento fuera de rango para tiempo time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: se recibió una cadena de formato vacía" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "" "mktime: por lo menos uno de los valores está fuera del rango por defecto" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" -msgstr "función 'system' no se permite en modo sandbox" +msgstr "función 'system' no permitida en modo sandbox" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print: intenta escribir a final de escritura cerrada de tubería de vía doble" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referencia al campo sin inicializar `$%d'" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 -#, fuzzy, c-format +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 +#, c-format msgid "%s: received non-numeric first argument" -msgstr "or: el primer argumento recibido no es númerico" +msgstr "%s: el primer argumento recibido no es númerico" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: el tercer argumento no es una matriz" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: no pudo obtener el tercer argumento" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: el tercer argumento `%.*s' tratado como 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: puede ser llamado indirectamente solo con dos argumentos" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "llamada indirecta a %s requiere al menos dos argumentos" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): los valores negativos no están permitidos" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): valores fraccionarios serán truncados" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): valor de desplazamiento demasiado grande dará resultados " "extraños" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): valores negativos no están permitidos" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): valores fraccionarios serán truncados" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): un valor de desplazamiento muy grande dará resultados " "extraños" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 -#, fuzzy, c-format +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 +#, c-format msgid "%s: called with less than two arguments" -msgstr "o: llamado con menos de dos argumentos" +msgstr "%s: llamado con menos de dos argumentos" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 -#, fuzzy, c-format +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 +#, c-format msgid "%s: argument %d is non-numeric" -msgstr "o: argumento %d es no numérico" +msgstr "%s: argumento %d es no numérico" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 -#, fuzzy, c-format +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 +#, c-format msgid "%s: argument %d negative value %g is not allowed" -msgstr "%s: argumento #%d valor negativo %Rg no está permitido" +msgstr "%s: argumento %d valor negativo %g no está permitido" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): valor negativo no está permitido" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" -msgstr "compl(%f): valor fraccional será truncado" +msgstr "compl(%f): valor fraccionario será truncado" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: «%s» no es una categoría local válida" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: tercer argumento no es una matriz" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: intentado división entre cero" -#: builtin.c:4080 -#, fuzzy +#: builtin.c:4106 msgid "typeof: second argument is not an array" -msgstr "split: el segundo argumento no es una matriz" +msgstr "typeof: el segundo argumento no es una matriz" -#: builtin.c:4152 -#, c-format +#: builtin.c:4178 +#, fuzzy, c-format +#| msgid "" +#| "typeof detected invalid flags combination `%s'; please file a bug report." msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -"typeof detectado inválidas marcas combinadas «%s»; envíe un reporte de " -"defecto." +"typeof ha detectado una combinación no válida de marcas «%s»; por favor, " +"envíe un informe de defecto." -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "tipode: tipo de argumento inválido «%s»" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "tipode: tipo de argumento inválido «%s»" @@ -1022,455 +1054,584 @@ #: cint_array.c:1268 cint_array.c:1296 #, c-format msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" -msgstr "" +msgstr "no se puede añadir un fichero nuevo (%.*s) a ARGV en modo sandbox" -#: command.y:227 -#, fuzzy, c-format +#: command.y:228 +#, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" -msgstr "Tecla de estado(s) (g)awk. Termina con la orden «end»\n" +msgstr "Teclee sentencia(s) (g)awk. Termine con la orden «end»\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "número de marco inválido: %d" -#: command.y:297 -#, fuzzy, c-format +#: command.y:298 +#, c-format msgid "info: invalid option - `%s'" -msgstr "info: opción inválida -- «%s»" +msgstr "info: opción inválida - «%s»" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." -msgstr "fuente «%s»: ya originados." +#| msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" +msgstr "fuente «%s»: ya se ha cargado." -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." -msgstr "guarda «%s»: orden no permitida." +#| msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" +msgstr "save: «%s»: orden no permitida." -#: command.y:341 -#, fuzzy +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" -msgstr "No puede emplear «órdenes» para órdens de puntos de ruptura/vigías" +msgstr "" +"no se puede usar la orden «commands» para órdenes de puntos de ruptura/vigías" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "ningún punto de ruptura/vigía ha sido establecida aún" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "número de punto de ruptura/vigía inválido" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Teclee órdenes para cuando %s %d es alcanzado, uno por línea.\n" -#: command.y:352 -#, fuzzy, c-format +#: command.y:353 +#, c-format msgid "End with the command `end'\n" -msgstr "Finaliza con la orden «end»\n" +msgstr "Finalice con la orden «end»\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" -msgstr "`end' válido solo en orden `commands' o `eval'" +msgstr "`end' válido solo en la orden `commands' o `eval'" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" -msgstr "`silent' válido solo en orden `commands'" +msgstr "`silent' válido solo en la orden `commands'" -#: command.y:375 -#, fuzzy, c-format +#: command.y:376 +#, c-format msgid "trace: invalid option - `%s'" -msgstr "traza: opción inválida - «%s»" +msgstr "trace: opción inválida - «%s»" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" -msgstr "condición: número de punto de ruptura/vigía inválido" +msgstr "condition: número de punto de ruptura/vigía inválido" -#: command.y:451 +#: command.y:452 msgid "argument not a string" -msgstr "argumento no una cadena" +msgstr "el argumento no es una cadena" -#: command.y:461 command.y:466 -#, fuzzy, c-format +#: command.y:462 command.y:467 +#, c-format msgid "option: invalid parameter - `%s'" -msgstr "opción: parámetro inválido - «%s»" +msgstr "option: parámetro inválido - «%s»" -#: command.y:476 -#, fuzzy, c-format +#: command.y:477 +#, c-format msgid "no such function - `%s'" -msgstr "sin tal función - «%s»" +msgstr "no existe la función - «%s»" -#: command.y:533 -#, fuzzy, c-format +#: command.y:534 +#, c-format msgid "enable: invalid option - `%s'" -msgstr "activar: opción inválida - «%s»" +msgstr "enable: opción inválida - «%s»" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" -msgstr "especificación de rango inválido: %d - %d" +msgstr "especificación de rango inválida: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "valor no numérico para número de campo" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "valor no numérico encontrado, numérico esperado" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "valor entero distinto de cero" -#: command.y:819 +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -"backtrace [N] - escribe traza de todo o N más internos (externos si N < 0) " -"marcos." +"backtrace [N] - escribe traza de todo o de los N marcos más internos " +"(externos si N < 0)." -#: command.y:821 +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -"break [[nombre-fichero:]N]|función] - establece punto de ruptura en la " +"break [[nombre_fichero:]N]|función] - establece punto de ruptura en la " "localización especificada." -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -"clear [[nombrefichero:]N|función] - borra puntos de ruptura anteriormente " +"clear [[nombre_fichero:]N|función] - borra puntos de ruptura anteriormente " "puestos." -#: command.y:825 +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" -"commands [núm] - inicia una lista de órdenes para ser ejecutadas en un punto " -"de ruptura(vigia) alcanzado." +"commands [núm] - inicia una lista de órdenes para ser ejecutadas al alcanzar " +"un punto de ruptura(vigía)." -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -"condition núm [expr] - establece o vacía punto condicional de ruptura o " +"condition núm [expr] - establece o quita punto condicional de ruptura o " "vigía." -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [CONTADOR] - continúa programa siendo depurado." +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [CONTADOR] - continúa el programa que se está depurando." -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" -"delete [puntos_ruptura] [rango] - borra puntos de rupturas especificados." +"delete [puntos_ruptura] [rango] - borra puntos de ruptura especificados." -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -"disable [puntos_ruptura] [rango] - desactiva puntos de ruptura especificado." +"disable [puntos_ruptura] [rango] - desactiva puntos de ruptura especificados." -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" msgstr "" -"display [var] - escribe valor de variable cada tiempo que el programa se " +"display [var] - escribe valor de variable cada vez que el programa se " "detiene." -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] - baja N marcos de pila." - -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [nombre-fichero] - vuelca intrucciones al fichero o salida común." - -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -msgstr "" -"enable [unitario|borra] [puntos_ruptura] [rango] - activa puntos de ruptura " -"especificado." - -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end - finaliza una lista de órdenes o declaraciones awk." - -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval stmt|[p1, p2, …] - evalua sentencia(s) awk." +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" +msgstr "down [N] - baja N marcos por la pila." + +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" +msgstr "" +"dump [nombre_fichero] - vuelca intrucciones al fichero o salida estándar." + +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" +msgstr "" +"enable [once|del] [puntos_ruptura] [rango] - activa puntos de ruptura " +"especificados." -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" +msgstr "end - finaliza una lista de órdenes o sentencias awk." + +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval stmt|[p1, p2, ...] - evalúa sentencia(s) awk." + +#: command.y:848 +#, fuzzy +#| msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" msgstr "exit - (lo mismo que quit) sale del depurador." -#: command.y:849 -msgid "finish - execute until selected stack frame returns." -msgstr "finish - ejecuta hasta marco de pila seleccionada devuelve." - -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - selecciona y esscribe número N de marco de pila." - -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." -msgstr "help [mandato] - escribe lista de mandato o explicación de mandato." +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" +msgstr "finish - ejecuta hasta que retorna el marco de pila seleccionado." -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] - selecciona y escribe el marco de pila número N." + +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" +msgstr "help [orden] - escribe lista de órdenes o explicación de orden." + +# TODO next +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" "ignora N CONTADOR - establece cuenta-ignora de núemro N de puntos de ruptura " "a CONTADOR." -#: command.y:857 +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "tópico info - fuente|fuentes|variables|funciones|ruptura|marco|args|locales|" "pantalla|visor." -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" "list [-|+|[filename:]lineno|function|range] - lista línea(s) específica(s)." -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" "next [CONTADOR] - paso programado, procediendo a través de llamadas a " "subrutina." -#: command.y:863 +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [CONTADOR] - un paso de instrucción, pero procedido por llamadas a " "subrutina." -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "" "option [nombre[=valor]] - establecer o enseñar opcione(s) depuradora(s)." -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" msgstr "print var [var] - escribe valor de una variable o matriz." -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" msgstr "formato printf, [arg], … - salida formateada." -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" msgstr "quit - sale del depurador." -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" msgstr "return [valor] - crea marco de pila seleccionada a su llamador." -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" msgstr "run - iniciar o reiniciar ejecución del programa." -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" msgstr "save nombrefichero - guarda órdenes desde la sesión al fichero." -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" msgstr "set var = valor - asigna valor a una variable escalar." -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - suspende mensaje usual cuando detenga en un punto de ruptura/vigía." -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" msgstr "fichero fuente - ejecuta órdenes desde fichero." -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" "step [CONTADOR] - paso de programa hasta que alcance una línea de la fuente " "distinta." -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" msgstr "stepi [CONTADOR] - paso de una instrucción exactamente." -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" "tbreak [[nombrefchero:]N|función] - establece un punto de ruptura temporal." -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" msgstr "trace on|off - escribe instrucciones antes de ejecutar." -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "undisplay [N] - quita variable(s) de la lista vista automática." -#: command.y:897 +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "hasta [[nombre-fichero:]N|función] - ejecuta hasta que el programa alcanza " "una línea diferente o línea N dentro del marco actual." -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "unwatch [N] - quita variable(s) de la lista de vigía." -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" msgstr "up [N] - sube N marcos de pila." -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" msgstr "watch var - establece un punto de vigía para una variable." -#: command.y:905 +#: command.y:906 +#, fuzzy +#| msgid "" +#| "where [N] - (same as backtrace) print trace of all or N innermost " +#| "(outermost if N < 0) frames." msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] - (lo mismo que traza anterior) escribe traza de todo o N más " "marcos internos\n" " (externos si N < 0)." -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "error: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format +#| msgid "can't read command (%s)\n" msgid "cannot read command: %s\n" msgstr "no puede leer orden (%s)\n" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format +#| msgid "can't read command (%s)" msgid "cannot read command: %s" msgstr "no puede leer orden (%s)" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "carácter inválido en orden" -#: command.y:1161 +#: command.y:1162 #, fuzzy, c-format +#| msgid "unknown command - \"%.*s\", try help" msgid "unknown command - `%.*s', try help" msgstr "orden desconocidoa - «%.*s», intente ayuda" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "carácter inválido" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "orden no definida: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" "establece o muestra el número de líneas para conservar en el fichero " "histórico." #: debug.c:259 -msgid "set or show the list command window size." +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "establece o muestra la lista de ventana de tamaño de orden." #: debug.c:261 -msgid "set or show gawk output file." +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "establece o muestra fichero de salida gawk." #: debug.c:263 -msgid "set or show debugger prompt." +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "establece o muestra petición del depurador." #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" "(des)establece o muestra guardando de histórico de órdenes (valor=on|off)." #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "(des)establece o muestra guardando de opciones (valor=on|off)." #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" "(des)establecer o mostrar instrucción trazada (valor=encendido|apagado)." #: debug.c:358 -msgid "program not running." +#, fuzzy +#| msgid "program not running." +msgid "program not running" msgstr "programa no ejecutando." -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "el fichero fuente «%s» está vacío.\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "sin actual fichero fuente." -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format +#| msgid "cannot find source file named `%s' (%s)" msgid "cannot find source file named `%s': %s" msgstr "no puede encontrar fichero fuente nombrado «%s» (%s)" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" "CUIDADO: fichero fuente «%s» modificado desde la compilación del programa.\n" " \n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "número lineal %d fuera de límite; «%s» tiene %d líneas" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "fdl inesperado mientras leía el fichero «%s», línea %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "fichero origen «%s» modificó desde inicio de ejecución programada" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Fichero fuente actual: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Número de líneas: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Fichero fuente (líneas): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1478,54 +1639,55 @@ "Número Disp Activado Localización\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tnº de alcances = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignora siguiente punto %ld\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tdetiene confición: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tórdenes:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Marco actual: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Llamado por marco: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Llamador del marco: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Ninguno en main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Sin argumentos.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Sin locales.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1533,7 +1695,7 @@ "Todas las variables definidas:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1541,7 +1703,7 @@ "Todas las funciones definidas:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1549,7 +1711,7 @@ "Autoenseñar varibles:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1557,385 +1719,406 @@ "Vigilar variables:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "sin símbolo «%s» en contexto actual\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "«%s» no es una matriz\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = campo no inicializado\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "" "matriz «%s» está vacía\n" "\n" -#: debug.c:1132 debug.c:1184 -#, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +#: debug.c:1141 debug.c:1193 +#, fuzzy, c-format +#| msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[«%.*s»] no dentro de matriz «%s»\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s[\"%.*s\"]' no es una matriz\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "«%s» no es una variable escalar" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" -msgstr "trata utilizar la matriz `%s[\"%.*s\"]' en un contexto escalar" +msgstr "intenta utilizar la matriz `%s[\"%.*s\"]' en un contexto escalar" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" -msgstr "trata usar el escalar `%s[\"%.*s\"]' como una matriz" +msgstr "intenta usar el escalar `%s[\"%.*s\"]' como una matriz" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "`%s' es una función" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "punto de vigía %d es incondicional\n" -#: debug.c:1514 -#, c-format -msgid "No display item numbered %ld" +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "No enseña ítem numerado %ld" -#: debug.c:1517 -#, c-format -msgid "No watch item numbered %ld" +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "Sin vista ítem numerado %ld" -#: debug.c:1543 -#, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +#: debug.c:1552 +#, fuzzy, c-format +#| msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d:[\"%.*s\"] no está en la matriz «%s»\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" -msgstr "trata emplear un valor escalar como una matriz" +msgstr "intenta utilizar un valor escalar como una matriz" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Punto vigía %d borrado porque parámetro está fuera del visor.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Pantalla %d eliminada porque parámetro está fuera del visor.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " en fichero «%s», línea %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " en «%s»:%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld en " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Más pilas de marcos continuan …\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "número de marco inválido" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: punto ruptura %d (activado, ignore siguiente %ld puntos), también " "establece en %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Nota: punto de ruptura %d (activado), también establce en %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: punto ruptura %d (desactivado, ignore siguiente %ld punto), también " "establece en %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Nota: punto de ruptura %d (desactivado), también establce en %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Punto de ruptura %d establece un fichero «%s», línea %d\n" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format +#| msgid "Can't set breakpoint in file `%s'\n" msgid "cannot set breakpoint in file `%s'\n" msgstr "No puede establecer punto de ruptura en el fichero «%s»\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "número lineal %d en el fichero «%s» fuera de rango" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format +#| msgid "internal error: %s with null vname" msgid "internal error: cannot find rule\n" msgstr "error interno: %s con vname nulo" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format +#| msgid "Can't set breakpoint at `%s':%d\n" msgid "cannot set breakpoint at `%s':%d\n" msgstr "No puede establecer punto de ruptura en «%s»: %d\n" -#: debug.c:2404 +#: debug.c:2413 #, fuzzy, c-format +#| msgid "Can't set breakpoint in function `%s'\n" msgid "cannot set breakpoint in function `%s'\n" msgstr "No puede establecer punto de ruptura en la función «%s»\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" "punto de ruptura %d establece un fichero «%s», línea %d es incondicional\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "número lineal %d en el fichero «%s» fuera de rango" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Punto de ruptura borrado %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Sin punto de ruptura(s) en asiento a función «%s»\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Sin punto de ruptura en fichero «%s», línea #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "número de punto de ruptura inválido" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "¿Borro todos los puntos de ruptura? (s o n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "s" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Ignorará siguiente %ld cruzado de punto de ruptura %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Detendrá siguiente tiempo de ruptura %d es alcanzado.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Puede solo depurar programas proporcionados con la opción `-f'.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Fallado al reiniciar depurador" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Programa ya ejecutando. ¿Reiniciar desde el principio (s/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Programa no reiniciado\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "error: no puede reiniciar, operación no permitida\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "error (%s): no puede reiniciar, ignorando resto de las órdenes\n" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Programa iniciado: \n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Programa terminado abnormalmente con valor de salida: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Programa terminado normalmente con valor de salida: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "El programa está ejecutando. ¿Sale de todas formas (s/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "No detenido en cualquier punto de ruptura; argumento ignorado.\n" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "número de punto de ruptura inválido %d." -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Ignorará siguientes %ld cruzados de puntos de ruptura %d.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "'finish' no significado dentro del marco externo main()\n" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "Ejecutar hasta devolver desde " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "'retorno' no significativo en el marco externo main()\n" -#: debug.c:3386 +#: debug.c:3397 #, fuzzy, c-format +#| msgid "Can't find specified location in function `%s'\n" msgid "cannot find specified location in function `%s'\n" msgstr "No puede encontrar localicación dentro de función `%s'\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "línea %d de fuente inválida en el fichero «%s»" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format +#| msgid "Can't find specified location %d in file `%s'\n" msgid "cannot find specified location %d in file `%s'\n" msgstr "No puede encontrar localicación %d especificada en el ficheor «%s»\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "elemento no dentro de matriz\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "variable no tipada\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Deteniendo en %s …\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "'terminación' no significante con omisión no local «%s»\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'hasta' no significante con omisión no local «%s»\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 #, fuzzy +#| msgid "\t------[Enter] to continue or q [Enter] to quit------" msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t---[Intro] para continuar o q [Intro] para quitar---" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[«%.*s»] no dentro de matriz «%s»" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "enviando salida a stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "número inválido" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' no permitido en contexto actual; declaración ignorada" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' no permitido en contexto actual; declaración ignorado" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "Ningún símbolo «%s» en contexto actual" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "sin símbolo «%s» en contexto actual\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "tipo de nodo %d desconocido" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "código de operación %d desconocido" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "código operacional %s no es un operador o una palabra clave" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "desbordamiento de almacenamiento temporal en genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1946,71 +2129,71 @@ "\t# Pila de Llamadas de Funciones:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' es una extensión de gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' es una extensión de gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE evaluado «%s» es inválido, tratado como 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "especificación «%sFMT» equivocada «%s»" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "se desactiva `--lint' debido a una asignación a `LINT'" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referencia al argumento sin inicializar «%s»" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referencia a la variable sin inicializar «%s»" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "trata una referencia de campo desde un valor que no es númerico" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "trata una referencia de campo desde una cadena nula" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" -msgstr "trata acceder al campo %ld" +msgstr "intenta acceder al campo %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referencia al campo sin inicializar `$%ld'" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "se llamó a la función «%s» con más argumentos de los declarados" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo inesperado «%s»" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "se intentó una división entre cero en `/='" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "se intentó una división entre cero en `%%='" @@ -2029,22 +2212,27 @@ #: ext.c:60 #, fuzzy, c-format +#| msgid "load_ext: cannot open library `%s' (%s)\n" msgid "load_ext: cannot open library `%s': %s" msgstr "load_ext: no se puede abrir biblioteca «%s» (%s)\n" #: ext.c:66 #, fuzzy, c-format +#| msgid "" +#| "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible': %s" msgstr "" "load_ext: la biblioteca «%s»: no define `plugin_is_GPL_compatible' (%s)\n" #: ext.c:72 #, fuzzy, c-format +#| msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgid "load_ext: library `%s': cannot call function `%s': %s" msgstr "load_ext: biblioteca «%s»: no puede llamar a la función «%s» (%s)\n" #: ext.c:76 #, fuzzy, c-format +#| msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgid "load_ext: library `%s' initialization routine `%s' failed" msgstr "load_ext: inicialización de biblioteca «%s» de rutina «%s» fallada\n" @@ -2054,6 +2242,7 @@ #: ext.c:100 ext.c:111 #, fuzzy, c-format +#| msgid "make_builtin: can't use gawk built-in `%s' as function name" msgid "make_builtin: cannot use gawk built-in `%s' as function name" msgstr "" "make_builtin: no se puede utilizar la orden interna de gawk «%s» como nombre " @@ -2061,6 +2250,7 @@ #: ext.c:109 #, fuzzy, c-format +#| msgid "make_builtin: can't use gawk built-in `%s' as function name" msgid "make_builtin: cannot use gawk built-in `%s' as namespace name" msgstr "" "make_builtin: no se puede utilizar la orden interna de gawk «%s» como nombre " @@ -2068,6 +2258,7 @@ #: ext.c:126 #, fuzzy, c-format +#| msgid "make_builtin: can't redefine function `%s'" msgid "make_builtin: cannot redefine function `%s'" msgstr "make_builtin: no puede redefinir función «%s»" @@ -2100,87 +2291,94 @@ #: ext.c:232 #, fuzzy +#| msgid "dynamic loading of library not supported" msgid "dynamic loading of libraries is not supported" msgstr "la carga dinámica de biblioteca no compatible" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "estado: no se puede leer el enlace simbólico «%s»" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy +#| msgid "do_writea: argument 0 is not a string\n" msgid "stat: first argument is not a string" msgstr "do_writea: argumento 0 no es una cadena\n" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy +#| msgid "split: second argument is not an array" msgid "stat: second argument is not an array" msgstr "split: el segundo argumento no es una matriz" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "estado: parámetros equivocados" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: no pudo crear la variable %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts no es admitida en este sistema" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 #, fuzzy +#| msgid "fill_stat_element: could not create array" msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: no pudo crear matríz" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: no pudo establecer elemento" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: no pudo establecer elemento" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: no pudo establecer elemento" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: no pudo crear matríz" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: no pudo establecer elemento" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: llamado con el número incorrecto de argumento, esperando 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy +#| msgid "asort: first argument not an array" msgid "fts: first argument is not an array" msgstr "asort: el primer argumento no es una matriz" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy +#| msgid "split: second argument is not an array" msgid "fts: second argument is not a number" msgstr "split: el segundo argumento no es una matriz" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy +#| msgid "match: third argument is not an array" msgid "fts: third argument is not an array" msgstr "match: el tercer argumento no es una matriz" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: no pudo determinar matríz\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignorando seguimiento de marca FTS_NOSTAT." @@ -2219,16 +2417,19 @@ #: extension/inplace.c:131 #, fuzzy +#| msgid "inplace_begin: in-place editing already active" msgid "inplace::begin: in-place editing already active" msgstr "inplace_end: edición interna ya activa" #: extension/inplace.c:134 #, fuzzy, c-format +#| msgid "inplace_begin: expects 2 arguments but called with %d" msgid "inplace::begin: expects 2 arguments but called with %d" msgstr "inplace_begin: espera 2 argumentos pero llamó con %d" #: extension/inplace.c:137 #, fuzzy +#| msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgid "inplace::begin: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_begin: no puede obtener 1º argumento como un nombre de fichero " @@ -2236,52 +2437,62 @@ #: extension/inplace.c:145 #, fuzzy, c-format +#| msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgid "inplace::begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: desactivando edición en lugar para NOMBREFICHERO inválido «%s»" #: extension/inplace.c:152 #, fuzzy, c-format +#| msgid "inplace_begin: Cannot stat `%s' (%s)" msgid "inplace::begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: no se puede declarar «%s» (%s)" #: extension/inplace.c:159 #, fuzzy, c-format +#| msgid "inplace_begin: `%s' is not a regular file" msgid "inplace::begin: `%s' is not a regular file" msgstr "inplace_begin: `%s' no es un fichero regular" #: extension/inplace.c:170 #, fuzzy, c-format +#| msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgid "inplace::begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(`%s') fallado (%s)" #: extension/inplace.c:182 #, fuzzy, c-format +#| msgid "inplace_begin: chmod failed (%s)" msgid "inplace::begin: chmod failed (%s)" msgstr "inplace_begin: chmod fallado (%s)" #: extension/inplace.c:189 #, fuzzy, c-format +#| msgid "inplace_begin: dup(stdout) failed (%s)" msgid "inplace::begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) fallado (%s)" #: extension/inplace.c:192 #, fuzzy, c-format +#| msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgid "inplace::begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) fallado (%s)" #: extension/inplace.c:195 #, fuzzy, c-format +#| msgid "inplace_begin: close(%d) failed (%s)" msgid "inplace::begin: close(%d) failed (%s)" msgstr "inplace_begin: cierre(%d) fallado (%s)" #: extension/inplace.c:211 #, fuzzy, c-format +#| msgid "inplace_end: expects 2 arguments but called with %d" msgid "inplace::end: expects 2 arguments but called with %d" msgstr "inplace_end: espera 2 argumentos pero llamó con %d" #: extension/inplace.c:214 #, fuzzy +#| msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgid "inplace::end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end: no puede obtener 1º argumento como un nombre de fichero de " @@ -2289,45 +2500,53 @@ #: extension/inplace.c:221 #, fuzzy +#| msgid "inplace_end: in-place editing not active" msgid "inplace::end: in-place editing not active" msgstr "inplace_end: edición interna no activa" #: extension/inplace.c:227 #, fuzzy, c-format +#| msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgid "inplace::end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) fallado (%s)" #: extension/inplace.c:230 #, fuzzy, c-format +#| msgid "inplace_end: close(%d) failed (%s)" msgid "inplace::end: close(%d) failed (%s)" msgstr "inplace_end: cierre(%d) fallado (%s)" #: extension/inplace.c:234 #, fuzzy, c-format +#| msgid "inplace_end: fsetpos(stdout) failed (%s)" msgid "inplace::end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) fallado (%s)" #: extension/inplace.c:247 #, fuzzy, c-format +#| msgid "inplace_end: link(`%s', `%s') failed (%s)" msgid "inplace::end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: enlace(`%s', `%s') fallado (%s)" #: extension/inplace.c:257 #, fuzzy, c-format +#| msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgid "inplace::end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: renombrar(`%s', `%s') fallado (%s)" #: extension/ordchr.c:72 #, fuzzy +#| msgid "do_reada: argument 0 is not a string\n" msgid "ord: first argument is not a string" msgstr "do_reada: argumento 0 no es una cadena\n" #: extension/ordchr.c:99 #, fuzzy +#| msgid "asort: first argument not an array" msgid "chr: first argument is not a number" msgstr "asort: el primer argumento no es una matriz" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: abrirdir/fdopendir fallado: %s" @@ -2342,21 +2561,25 @@ #: extension/rwarray.c:119 #, fuzzy +#| msgid "do_writea: argument 0 is not a string\n" msgid "do_writea: first argument is not a string" msgstr "do_writea: argumento 0 no es una cadena\n" #: extension/rwarray.c:125 #, fuzzy +#| msgid "split: second argument is not an array" msgid "do_writea: second argument is not an array" -msgstr "do_writea: argumento 1 no es una matriz\n" +msgstr "split: el segundo argumento no es una matriz" #: extension/rwarray.c:172 extension/rwarray0.c:167 #, fuzzy +#| msgid "write_array: could not flatten array\n" msgid "write_array: could not flatten array" msgstr "write_array: no pudo determinar matríz\n" #: extension/rwarray.c:188 extension/rwarray0.c:181 #, fuzzy +#| msgid "write_array: could not release flattened array\n" msgid "write_array: could not release flattened array" msgstr "write_array: no pudo publicar matríz aplanada\n" @@ -2367,21 +2590,25 @@ #: extension/rwarray.c:292 #, fuzzy +#| msgid "do_reada: argument 0 is not a string\n" msgid "do_reada: first argument is not a string" msgstr "do_reada: argumento 0 no es una cadena\n" #: extension/rwarray.c:298 #, fuzzy +#| msgid "do_reada: argument 1 is not an array\n" msgid "do_reada: second argument is not an array" msgstr "do_reada: argumento 1 no es una matriz\n" #: extension/rwarray.c:342 extension/rwarray0.c:317 #, fuzzy +#| msgid "do_reada: clear_array failed\n" msgid "do_reada: clear_array failed" msgstr "do_reada: clear_arrayel fallado\n" #: extension/rwarray.c:379 extension/rwarray0.c:353 #, fuzzy +#| msgid "read_array: set_array_element failed\n" msgid "read_array: set_array_element failed" msgstr "read_array: elemento set_array_element fallado\n" @@ -2394,21 +2621,25 @@ #: extension/rwarray0.c:114 #, fuzzy +#| msgid "do_writea: argument 0 is not a string\n" msgid "do_writea: argument 0 is not a string" msgstr "do_writea: argumento 0 no es una cadena\n" #: extension/rwarray0.c:120 #, fuzzy +#| msgid "do_writea: argument 1 is not an array\n" msgid "do_writea: argument 1 is not an array" msgstr "do_writea: argumento 1 no es una matriz\n" #: extension/rwarray0.c:267 #, fuzzy +#| msgid "do_reada: argument 0 is not a string\n" msgid "do_reada: argument 0 is not a string" msgstr "do_reada: argumento 0 no es una cadena\n" #: extension/rwarray0.c:273 #, fuzzy +#| msgid "do_reada: argument 1 is not an array\n" msgid "do_reada: argument 1 is not an array" msgstr "do_reada: argumento 1 no es una matriz\n" @@ -2428,186 +2659,204 @@ msgid "sleep: not supported on this platform" msgstr "sleep: no compatible en esta plataforma" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "registro entrante demadiado grande" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF definido a valor negativo" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: el cuarto argumento es una extensión de gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: el cuarto argumento no es una matriz" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +#| msgid "%s: cannot use a subarray of second argument for first argument" +msgid "%s: cannot use %s as fourth argument" +msgstr "" +"%s: no se puede utilziar una submatriz del segundo argumento para el primer " +"argumento" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: el segundo argumento no es una matriz" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: no se puede usar la misma matriz para el segundo y cuarto argumentos" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: no se puede usar una submatriz del segundo argumento para el cuarto " "argumento" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: no se puede usar una submatriz del cuarto argumento para el segundo " "argumento" -#: field.c:1038 +#: field.c:1050 #, fuzzy +#| msgid "split: null string for third arg is a gawk extension" msgid "split: null string for third arg is a non-standard extension" msgstr "" "split: la cadena nula para el tercer argumento es una extensión de gawk" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: el cuarto argumento no es una matriz" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: el segundo argumento no es una matriz" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: el tercer argumento no debe ser nulo" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: no se puede usar la misma matriz para segundo y cuarto argumentos" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: no se puede usar una submatriz del segundo argumento para el " "cuarto argumento" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: no se puede usar una submatriz del cuarto argumento para el " "segundo argumento" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' es una extensión gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "`*' debe ser el último designador en FIELDWIDTHS" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "valor de FIELDWIDTHS inválido, para campo %d, cercano a «%s»" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "la cadena nula para `FS' es una extensión de gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "el awk antiguo no admite expresiones regulares como valor de `FS'" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' es una extensión de gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: recibió retval nulo" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: no dentro del modo MPFR" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: MPFR incompatible" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: tipo numérico inválido «%d»" -#: gawkapi.c:385 +#: gawkapi.c:377 #, fuzzy +#| msgid "load_ext: received NULL lib_name" msgid "add_ext_func: received NULL name_space parameter" msgstr "load_ext: recibido lib_name NULO" -#: gawkapi.c:523 -#, c-format +#: gawkapi.c:515 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value: detected invalid numeric flags combination `%s'; " +#| "please file a bug report." msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" "node_to_value: detectado marcas inválidas combinadas «%s»; envíe un reporte " "de defecto." -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: recibido nodo nulo" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: recibido valor nulo" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 -#, c-format +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value detected invalid flags combination `%s'; please file a " +#| "bug report." msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value detectadas marcas inválidas combinadas «%s»; envíe un " "reporte de defecto." -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: matriz nula recibida" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: subescritura nula recibida" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, fuzzy, c-format +#| msgid "api_flatten_array_typed: could not convert index %d to %s\n" msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed: no pudo convertir índice %d a %s\n" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, fuzzy, c-format +#| msgid "api_flatten_array_typed: could not convert value %d to %s\n" msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: no pudo convertir valor %d a %s\n" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: MPFR no soportado" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "no puede encontrar final de regla BEGINFILE" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "no se puede abrir tipo de fichero no reconocido «%s» para «%s»" @@ -2617,31 +2866,88 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "el argumento de la línea de órdenes «%s» es un directorio: se salta" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format +#| msgid "cannot open file `%s' for reading (%s)" msgid "cannot open file `%s' for reading: %s" msgstr "no se puede abrir el fichero «%s» para lectura (%s)" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format +#| msgid "close of fd %d (`%s') failed (%s)" msgid "close of fd %d (`%s') failed: %s" msgstr "cierre fallado en df %d («%s») (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "no se permite la redirección en modo sandbox" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "expresión dentro de redirección «%s» es un número" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "la expresión para la redirección «%s» tiene un valor de cadena nula" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2649,27 +2955,24 @@ "nombre del fichero «%.*s» para redirección «%s» quizá es un resultado de una " "expresión lógica" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file no puede crear una tubería «%s» con fd %d" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format +#| msgid "can't open pipe `%s' for output (%s)" msgid "cannot open pipe `%s' for output: %s" msgstr "no puede abrir la tubería «%s» para la salida (%s)" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format +#| msgid "can't open pipe `%s' for input (%s)" msgid "cannot open pipe `%s' for input: %s" msgstr "no puede abrir la tubería «%s» para la entrada (%s)" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2677,253 +2980,278 @@ "creación de socket get_file incompatible en esta plataforma para «%s» con fd " "%d" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format +#| msgid "can't open two way pipe `%s' for input/output (%s)" msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "no puede abrir la tubería de dos vías «%s» para entrada/salida (%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format +#| msgid "can't redirect from `%s' (%s)" msgid "cannot redirect from `%s': %s" msgstr "no se puede redirigir desde «%s» (%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format +#| msgid "can't redirect to `%s' (%s)" msgid "cannot redirect to `%s': %s" msgstr "no se puede redirigir a «%s» (%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "se alcanzó el límite del sistema para ficheros abiertos: comenzando a " "multiplexar los descriptores de fichero" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +#| msgid "close of `%s' failed (%s)." +msgid "close of `%s' failed: %s" msgstr "cierre fallado de «%s» (%s)." -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "demasiadas tuberías o ficheros de entrada abiertos" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: el segundo argumento debe ser `to' o `from'" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' no es un fichero abierto, tubería o co-proceso" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "cierre de redirección que nunca se abrió" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: la redirección «%s» no se abrió con `|&', se descarta el segundo " "argumento" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format +#| msgid "failure status (%d) on pipe close of `%s' (%s)" msgid "failure status (%d) on pipe close of `%s': %s" msgstr "estado de fallo (%d) al cerrar la tubería de «%s» (%s)" -#: io.c:1345 +#: io.c:1402 #, fuzzy, c-format +#| msgid "failure status (%d) on pipe close of `%s' (%s)" +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "estado de fallo (%d) al cerrar la tubería de «%s» (%s)" + +#: io.c:1405 +#, fuzzy, c-format +#| msgid "failure status (%d) on file close of `%s' (%s)" msgid "failure status (%d) on file close of `%s': %s" msgstr "estado de fallo (%d) al cerrar el fichero de «%s» (%s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ningún cierre explícito de `socket' «%s» proporcionado" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ningún cierre explícito de «%s» como co-proceso" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ningún cierre explícito de tubería «%s» proporcionada" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ningún cierre explícito del fichero «%s» proporcionado" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: no se puede tirar salida común: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: no se puede tirar error común: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format +#| msgid "error writing standard output (%s)" msgid "error writing standard output: %s" msgstr "error al escribir en la salida común (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format +#| msgid "error writing standard error (%s)" msgid "error writing standard error: %s" msgstr "error al escribir en la salida común de error (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +#| msgid "pipe flush of `%s' failed (%s)." +msgid "pipe flush of `%s' failed: %s" msgstr "fallado la limpieza de la tubería de «%s» (%s)." -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +#| msgid "co-process flush of pipe to `%s' failed (%s)." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "vaciado fallado del co-proceso de la tubería a «%s» (%s)." -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +#| msgid "file flush of `%s' failed (%s)." +msgid "file flush of `%s' failed: %s" msgstr "fallado el vaciado del fichero de «%s» (%s)." -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "puerto local %s inválido en `/inet': %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "puerto local %s inválido en `/inet'" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP para comunicaciones no son admitidas" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "no se puede abrir «%s», modo «%s»" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format +#| msgid "close of master pty failed (%s)" msgid "close of master pty failed: %s" msgstr "cierre fallado del pty maestro (%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format +#| msgid "close of stdout in child failed (%s)" msgid "close of stdout in child failed: %s" msgstr "cierre de salida común fallada en el hijo (%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "fallado el movimiento del pty esclavo a la salida común en el hijo (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format +#| msgid "close of stdin in child failed (%s)" msgid "close of stdin in child failed: %s" msgstr "cierre fallado de entrada común en el hijo (%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "fallado el movimiento del pty esclavo a la entrada común en el hijo (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format +#| msgid "close of slave pty failed (%s)" msgid "close of slave pty failed: %s" msgstr "cierre fallado del pty esclavo (%s)" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "no pudo crear el subproceso para o abrir pty" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "fallado el movimiento a la salida común en el hijo (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "fallado el movimiento de la tubería a la entrada común en el hijo (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy +#| msgid "restoring stdout in parent process failed\n" msgid "restoring stdout in parent process failed" msgstr "restauración saliente común en el proceso padre fallado\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy +#| msgid "restoring stdin in parent process failed\n" msgid "restoring stdin in parent process failed" msgstr "restauración entrante común en el proceso padre fallado\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format +#| msgid "close of pipe failed (%s)" msgid "close of pipe failed: %s" msgstr "cierre fallado de tubería (%s)" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "`|&' no admitido" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format +#| msgid "cannot open pipe `%s' (%s)" msgid "cannot open pipe `%s': %s" msgstr "no se puede abrir la tubería «%s» (%s)" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "no se puede crear el proceso hijo para «%s» (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" "getline: intenta leer desde final de lectura cerrada de tubería de vía doble" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: revibido puntero NULO" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "intérprete entrante «%s» en conflicto con intérprete entrante «%s» instalado " "anteriormente" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "interpretador entrante «%s» fallado para abrir «%s»" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: recibido puntero NULO" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2931,16 +3259,16 @@ "envoltorio saliente «%s» en conflicto con intérprete saliente «%s» instalado " "anteriormente" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "envoltorio saliente «%s» fallado al abrir «%s»" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: recibido puntero NULO" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2949,145 +3277,154 @@ "proceso de dos vías «%s» conflicto con previamente instalado proceso de dos " "vias «%s»" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "procesador «%s» de dos vías fallado para abrir «%s»" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "el fichero de datos «%s» está vacío" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "no se puede reservar más memoria de entrada" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicaracter de `RS' es una extensión de gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6 de comunicación no admitida" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "la variable de ambiente `POSIXLY_CORRECT' definida: activando `--posix'" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' se impone a `--traditional'" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' se imponen a `--non-decimal-data'" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' sobrepone a `--character-as-bytes'" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "ejecutar %s como setuid root puede ser un problema de seguridad" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format +#| msgid "can't set binary mode on stdin (%s)" msgid "cannot set binary mode on stdin: %s" msgstr "no se puede establecer el modo binario entrante común (%s)" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format +#| msgid "can't set binary mode on stdout (%s)" msgid "cannot set binary mode on stdout: %s" msgstr "no se puede establecer el modo binario saliente común (%s)" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format +#| msgid "can't set binary mode on stderr (%s)" msgid "cannot set binary mode on stderr: %s" msgstr "no se puede establecer el modo binario de error común (%s)" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "¡No hay ningún programa de texto!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Modo de empleo: %s [opciones estilo POSIX o GNU] -f fichprog [--] fichero …\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Modo de empleo: %s [opciones estilo POSIX o GNU] [--] %cprograma%c fichero " "…\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opciones POSIX:\t\tOpciones largas GNU: (común)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichprog\t\t--file=fichprog\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F sc\t\t\t--field-separator=sc\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valor\t\t--assign=var=valor\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opciones cortas:\t\tOpciones largas GNU: (extensiones)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fichero]\t\t--debug[=fichero]\n" # Esta es la línea más larga de la lista de argumentos. # Probar con gawk para revisar tabuladores. cfuga -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'texto-prog'\t --source='texto-prog'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichero\t\t--exec=fichero\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i ficheroinclusivo\t--incluide=ficheroincluido\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "" "\t-l biblioteca\t\t--load=biblioteca\n" @@ -3096,76 +3433,86 @@ #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy +#| msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fichero]\t\t--profile[=fichero]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 #, fuzzy +#| msgid "\t-Y\t\t--parsedebug\n" msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy +#| msgid "" +#| "\n" +#| "To report bugs, see node `Bugs' in `gawk.info'\n" +#| "which is section `Reporting Problems and Bugs' in the\n" +#| "printed version. This same information may be found at\n" +#| "https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.\n" +#| "PLEASE do NOT try to report bugs by posting in comp.lang.awk.\n" +#| "\n" msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3184,7 +3531,7 @@ "POR FAVOR NO intente indicar defectos publicando en comp.lang.awk.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3194,8 +3541,12 @@ "Por defecto lee la entrada común y escribe en la salida común.\n" "\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format +#| msgid "" +#| "Examples:\n" +#| "\tgawk '{ sum += $1 }; END { print sum }' file\n" +#| "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgid "" "Examples:\n" "\t%s '{ sum += $1 }; END { print sum }' file\n" @@ -3205,7 +3556,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' fichero\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3225,7 +3576,7 @@ "(a su elección) cualquier versión posterior.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3239,7 +3590,7 @@ "Licencia Pública General de GNU para más detalles.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3247,11 +3598,11 @@ "Debería haber recibido una copia de la Licencia Pública General de GNU\n" "junto con este programa. Si no es así, vea http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft no establece FS a tabulador en el awk de POSIX" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3260,162 +3611,170 @@ "%s: el argumento «%s» para `-v' no es de la forma `var=valor'\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "«%s» no es un nombre de variable legal" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "«%s» no es un nombre de variable, se busca el fichero `%s=%s'" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "no se puede utilizar la orden interna de gawk «%s» como nombre de variable" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "no se puede usar la función «%s» como nombre de variable" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "excepción de coma flotante" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "error fatal: error interno" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "error fatal: error interno: falla de segmentación" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error interno: desbordamiento de pila" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "no existe el df %d abierto previamente" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "no se puede abrir previamente /dev/null para el df %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "argumento vacío para `-e/--source' ignorado" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy +#| msgid "`--posix' overrides `--traditional'" msgid "`--profile' overrides `--pretty-print'" msgstr "`--posix' se impone a `--traditional'" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignorado: aooyo MPFR/GMP no compilado dentro de" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: no se reconoce la opción `-W %s', se descarta\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: la opción requiere un argumento -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "Valor PREC «%.*s» es inválido" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "RNDMODE valorado `%.*s' es inválido" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argumento recibido no es númerico" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segundo argumento recibido no es númerico" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +#| msgid "%s: received negative argument %g" +msgid "%s: received negative argument %.*s" +msgstr "%s: se recibió el argumento negativo %g" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: se recibió un argumento que no es númerico" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: se recibió un argumento que no es númerico" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): valor negativo no está permitido" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "comp(%Rg): valor fraccionario será truncado" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): valores negativos no serán permitidos" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: argumento no-numérico recibido #%d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argumento #%d tiene valor inválido %Rg, utilizando 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: argumento #%d valor negativo %Rg no está permitido" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argumento #%d valor fraccional %Rg serán truncados" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: argumento #%d valor negativo %Zd no está permitido" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: llamado con menos de dos argumentos" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "o: llamado con menos de dos argumentos" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "oex: llamado con menos de dos argumentos" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: se recibió un argumento que no es númerico" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: primer argumento recibido es no-númerico" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: segundo argumento recibido no es númerico" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "línea ord.:" @@ -3424,20 +3783,20 @@ msgid "could not make typed regex" msgstr "no pudo hacer expreg tipada" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "el awk antiguo no admite la secuencia `\\%c' de escape" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX no permite `\\x' como escapes" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "no hay dígitos hexadecimales en `\\x' como secuencia de escape" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3446,15 +3805,19 @@ "escape hexadecimal \\x%.*s de %d caracteres tal vez no se interprete de la " "forma esperada" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "la secuencia de escape `\\%c' tratada como una simple `%c'" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Se detectaron datos multibyte inválidos. Puede ser que no coincidan sus " "datos con su local." @@ -3501,12 +3864,15 @@ msgid "internal error: %s with null vname" msgstr "error interno: %s con vname nulo" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "error interno: compilado con fname nulo" -#: profile.c:1317 +#: profile.c:1318 #, fuzzy, c-format +#| msgid "" +#| "\t# Loaded extensions (-l and/or @load)\n" +#| "\n" msgid "" "%s# Loaded extensions (-l and/or @load)\n" "\n" @@ -3514,8 +3880,11 @@ "\t# Extensiones cargadas (-l y/o @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, fuzzy, c-format +#| msgid "" +#| "\t# Loaded extensions (-l and/or @load)\n" +#| "\n" msgid "" "\n" "# Included files (-i and/or @include)\n" @@ -3524,12 +3893,12 @@ "\t# Extensiones cargadas (-l y/o @load)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil de gawk, creado %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3538,7 +3907,7 @@ "\n" "\t# Funciones, enumeradas alfabéticamente\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo de redirección %d desconocida" @@ -3555,6 +3924,7 @@ #: re.c:174 #, fuzzy, c-format +#| msgid "escape sequence `\\%c' treated as plain `%c'" msgid "regexp escape sequence `\\%c' treated as plain `%c'" msgstr "la secuencia de escape `\\%c' tratada como una simple `%c'" @@ -3569,39 +3939,39 @@ msgstr "" "el componente de expresión regular `%.*s' probablemente debe ser `[%.*s]'" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "desbalanceado [" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "clase de carácter inválido" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "sintaxis de clase de carácter es [[:espacio:]], no [:espacio:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "escape \\ no terminado" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "contenido inválido de \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "expresión regular demasiado grande" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "desbalanceado (" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "sin sintaxis especificada" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") desbalanceado" @@ -3733,24 +4103,34 @@ msgid "No previous regular expression" msgstr "No hay una expresión regular previa" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format +#| msgid "function `%s': can't use function `%s' as a parameter name" msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" "función «%s»: no se puede usar una función «%s» como nombre paramétrico" -#: symbol.c:821 +#: symbol.c:828 #, fuzzy +#| msgid "can not pop main context" msgid "cannot pop main context" msgstr "no puede extraer por arriba el contexto principal" -#, fuzzy -#~ msgid "fts: first parameter is not an array" -#~ msgstr "asort: el primer argumento no es una matriz" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "`L' no tiene significado en los formatos de awk; se descarta" -#, fuzzy -#~ msgid "fts: third parameter is not an array" -#~ msgstr "match: el tercer argumento no es una matriz" +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fatal: no se permite `L' en los formatos POSIX de awk" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "`h' no tiene significado en los formatos de awk; se descarta" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fatal: no se permite `h' en los formatos POSIX de awk" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Ningún símbolo «%s» en contexto actual" #~ msgid "adump: first argument not an array" #~ msgstr "adump: el primer argumento no es una matriz" @@ -3764,14 +4144,6 @@ #~ msgid "asorti: first argument not an array" #~ msgstr "asorti: el primer argumento no es una matriz" -#, fuzzy -#~ msgid "asorti: first argument cannot be SYMTAB" -#~ msgstr "asorti: el primer argumento no es una matriz" - -#, fuzzy -#~ msgid "asorti: first argument cannot be FUNCTAB" -#~ msgstr "asorti: el primer argumento no es una matriz" - #~ msgid "asorti: cannot use a subarray of first arg for second arg" #~ msgstr "" #~ "asorti: no se puede usar una submatriz del primer argumento para el " @@ -3821,6 +4193,15 @@ #~ msgid "strftime: received non-string first argument" #~ msgstr "strftime: el primer argumento recibido no es una cadena" +#~ msgid "setenv(TZ, %s) failed (%s)" +#~ msgstr "setenv(TZ, %s) fallado (%s)" + +#~ msgid "setenv(TZ, %s) restoration failed (%s)" +#~ msgstr "setenv(TZ, %s) restauración falladoa (%s)" + +#~ msgid "unsetenv(TZ) failed (%s)" +#~ msgstr "unsetenv(TZ) fallado (%s)" + #~ msgid "mktime: received non-string argument" #~ msgstr "mktime: se recibió un argumento que no es una cadena" @@ -3887,15 +4268,6 @@ #~ msgid "chr: called with inappropriate argument(s)" #~ msgstr "chr: llamado con argumento(s) inapropiados" -#~ msgid "setenv(TZ, %s) failed (%s)" -#~ msgstr "setenv(TZ, %s) fallado (%s)" - -#~ msgid "setenv(TZ, %s) restoration failed (%s)" -#~ msgstr "setenv(TZ, %s) restauración falladoa (%s)" - -#~ msgid "unsetenv(TZ) failed (%s)" -#~ msgstr "unsetenv(TZ) fallado (%s)" - #~ msgid "backslash at end of string" #~ msgstr "barra invertida al final de la cadena" @@ -3963,9 +4335,6 @@ #~ msgid "assignment used in conditional context" #~ msgstr "se usó una asignación en un contexto condicional" -#~ msgid "statement has no effect" -#~ msgstr "la declaración no tiene efecto" - #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" diff -urN gawk-5.1.0/po/fi.po gawk-5.1.1/po/fi.po --- gawk-5.1.0/po/fi.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/fi.po 2021-10-27 07:58:41.000000000 +0300 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gawk 4.1.62\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2017-08-19 12:18+0300\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" @@ -19,499 +19,514 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.1\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "taulukosta %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "yritettiin käyttää skalaariarvoa taulukkona" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "yritettiin käyttää skalaariparametria â€%s†taulukkona" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "yritettiin käyttää skalaaria â€%s†taulukkona" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "yritettiin käyttää taulukkoa â€%s†skalaarikontekstissa" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: indeksi â€%.*s†ei ole taulukossa â€%sâ€" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "yritettiin käyttää skalaaria â€%s[\"%.*s\"]†taulukkona" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, fuzzy, c-format msgid "%s: first argument is not an array" msgstr "asort: ensimmäinen argumentti ei ole taulukko" -#: array.c:824 +#: array.c:826 #, fuzzy, c-format msgid "%s: second argument is not an array" msgstr "split: toinen argumentti ei ole taulukko" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "" +"asort: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille " +"epäonnistui" + +#: array.c:837 +#, fuzzy, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "asort: ensimmäinen argumentti ei ole taulukko" -#: array.c:838 +#: array.c:839 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "asort: ensimmäinen argumentti ei ole taulukko" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, fuzzy, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "asort: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille " "epäonnistui" -#: array.c:849 +#: array.c:856 #, fuzzy, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "asort: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille " "epäonnistui" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "â€%s†on virheellinen funktionimenä" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "lajitteluvertailufunktiota â€%s†ei ole määritelty" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s lohkoilla on oltava toiminto-osa" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "jokaisella säännöllä on oltava malli tai toiminto-osa" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "vanha awk ei tue useita â€BEGINâ€- tai â€ENDâ€-sääntöjä" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "â€%s†on sisäänrakennettu funktio. Sitä ei voi määritellä uudelleen" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "säännöllisen lausekkeen vakio â€//†näyttää C++-kommentilta, mutta ei ole" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "säännöllisen lausekkeen vakio â€/%s/†näyttää C-kommentilta, mutta ei ole" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "kaksi samanlaista case-arvoa switch-rakenteen rungossa: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "kaksoiskappale â€default†havaittu switch-rungossa" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "â€break†ei ole sallittu silmukan tai switch-lauseen ulkopuolella" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "â€continue†ei ole sallittu silmukan ulkopuolella" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "â€next†käytetty %s-toiminnossa" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "â€nextfile†käytetty %s-toiminnossa" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "â€return†käytetty funktiokontekstin ulkopuolella" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "pelkkä â€print†BEGIN- tai END-säännössä pitäisi luultavasti olla â€print \"\"â€" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "â€delete†ei ole sallittu kohteessa SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "â€delete†ei ole sallittu kohteessa FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "â€delete(array)†ei ole siirrettävä tawk-laajennus" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "monivaiheiset kaksisuuntaiset putket eivät toimi" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "säännöllinen lauseke sijoituksen oikealla puolella" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "säännöllinen lauseke â€~â€- tai â€!~â€-operaattorin vasemmalla puolella" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "vanha awk ei tue avainsanaa â€in†paitsi â€forâ€-sanan jälkeen" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "säännöllinen lauseke vertailun oikealla puolella" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "edelleenohjaamaton â€getline†virheellinen â€%sâ€-säännön sisällä" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "edelleenohjaamaton â€getline†määrittelemätön END-toiminnon sisällä" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "vanha awk ei tue moniulotteisia taulukkoja" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "â€lengthâ€-kutsu ilman sulkumerkkejä ei ole siirrettävä" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "epäsuorat funktiokutsut ovat gawk-laajennus" -#: awkgram.y:2010 +#: awkgram.y:2017 #, fuzzy, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "erikoismuuttujan â€%s†käyttö epäsuoralle funktiokutsulle epäonnistui" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "yritys käyttää ei-funktio â€%s†funktiokutsussa" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "virheellinen indeksointilauseke" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "varoitus: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "tuhoisa: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "odottamaton rivinvaihto tai merkkijonon loppu" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, fuzzy, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "lähdetiedoston â€%s†avaaminen lukemista varten (%s) epäonnistui" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, fuzzy, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "jaetun kirjaston â€%s†avaaminen lukemista varten (%s) epäonnistui" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "syy tuntematon" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, fuzzy, c-format msgid "cannot include `%s' and use it as a program file" msgstr "kohteen â€%s†sisällyttäminen ja käyttö ohjelmatiedostona epäonnistui" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "on jo sisällytetty lähdetiedostoon â€%sâ€" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "jaettu kirjasto â€%s†on jo ladattu" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include on gawk-laajennus" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "tyhjä tiedostonimi @include:n jälkeen" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load on gawk-laajennus" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "tyhjä tiedostonimi @load:n jälkeen" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "tyhjä ohjelmateksti komentorivillä" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, fuzzy, c-format msgid "cannot read source file `%s': %s" msgstr "lähdetiedoston â€%s†(%s) lukeminen epäonnistui" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "lähdetiedosto â€%s†on tyhjä" -#: awkgram.y:3310 +#: awkgram.y:3317 #, fuzzy, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "PEBKAC-virhe: virheellinen merkki ’\\%03o’ lähdekoodissa" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "lähdetiedoston lopussa ei ole rivinvaihtoa" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "päättämätön säännöllinen lauseke loppuu â€\\â€-merkkeihin tiedoston lopussa" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk:n regex-määre â€/.../%c†ei toimi gawk:ssa" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawkin regex-määre â€/.../%c†ei toimi gawkissa" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "päättämätön säännöllinen lauseke" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "päättämätön säännöllinen lauseke tiedoston lopussa" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "â€\\ #...â€-rivijatkamisen käyttö ei ole siirrettävä" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "kenoviiva ei ole rivin viimeinen merkki" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "moniulotteiset taulukot ovat gawk-laajennus" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, fuzzy, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX ei salli operaattoria â€**â€" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, fuzzy, c-format msgid "operator `%s' is not supported in old awk" msgstr "operaattoria â€^†ei tueta vanhassa awk:ssa" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "päättämätön merkkijono" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 #, fuzzy msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX ei salli â€\\xâ€-koodinvaihtoja" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 #, fuzzy msgid "backslash string continuation is not portable" msgstr "â€\\ #...â€-rivijatkamisen käyttö ei ole siirrettävä" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "virheellinen merkki ’%c’ lausekkeessa" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "â€%s†on gawk-laajennus" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ei salli operaattoria â€%sâ€" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "â€%s†ei ole tuettu vanhassa awk-ohjelmassa" -#: awkgram.y:4500 +#: awkgram.y:4507 #, fuzzy msgid "`goto' considered harmful!" msgstr "â€gotoâ€-käskyä pidetään haitallisena!\n" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d on virheellinen argumenttilukumäärä operaattorille %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, fuzzy, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: merkkijonoliteraalilla ei ole vaikutusta korvauksen viimeisenä " "argumenttina" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s kolmas parametri ei ole vaihdettava objekti" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: kolmas argumentti on gawk-laajennus" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: toinen argumentti on gawk-laajennus" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "indeksi: regexp-vakio toisena argumenttina ei ole sallitttu" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktio â€%sâ€: parametri â€%s†varjostaa yleismuuttujaa" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "tiedoston â€%s†avaaminen kirjoittamista varten epäonnistui: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "lähetetään muuttujaluettelo vakiovirheeseen" -#: awkgram.y:4930 +#: awkgram.y:4937 #, fuzzy, c-format msgid "%s: close failed: %s" msgstr "%s: sulkeminen epäonnistui (%s)" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kutsuttu kahdesti!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "siellä oli varjostettuja muuttujia." -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "funktionimi â€%s†on jo aikaisemmin määritelty" -#: awkgram.y:5091 +#: awkgram.y:5098 #, fuzzy, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "funktio â€%sâ€: funktionimen käyttö parametrinimenä epäonnistui" -#: awkgram.y:5094 +#: awkgram.y:5101 #, fuzzy, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "funktio â€%sâ€: erikoismuuttujan â€%s†käyttö funktioparametrina epäonnistui" -#: awkgram.y:5098 +#: awkgram.y:5105 #, fuzzy, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "funktio â€%sâ€: parametri â€%s†varjostaa yleismuuttujaa" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktio â€%sâ€: parametri #%d, â€%sâ€, samanlainen parametri #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "funktiota â€%s†kutsuttiin, mutta sitä ei ole koskaan määritelty" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktio â€%s†määriteltiin, mutta sitä ei ole koskaan kutsuttu suoraan" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "säännöllisen lausekkeen vakio parametrille #%d antaa boolean-arvon" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -520,65 +535,69 @@ "funktio â€%s†kutsuttu välilyönnillä nimen ja â€(â€-merkin\n" "välillä, tai käytetty muuttujana tai taulukkona" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "nollalla jakoa yritettiin" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "jakoa nollalla yritettiin operaattorissa â€%%â€" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "arvon sijoittaminen kenttäjälkikasvatuslausekkeen tulokseen epäonnistui" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "virheellinen sijoituskohde (käskykoodi %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "käskyllä ei ole vaikutusta" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 #, fuzzy msgid "@namespace is a gawk extension" msgstr "@include on gawk-laajennus" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -597,8 +616,8 @@ msgid "standard error" msgstr "vakiovirhe" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: vastaanotettu argumentti ei ole numeerinen" @@ -639,7 +658,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: â€%.*s†ei ole avoin tiedosto, putki tai apuprosessi" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, fuzzy, c-format msgid "%s: received non-string first argument" msgstr "index: ensimmäinen vastaanotettu argumentti ei ole merkkijono" @@ -657,45 +676,45 @@ msgid "`length(array)' is a gawk extension" msgstr "â€length(array)†on gawk-laajennus" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, fuzzy, c-format msgid "%s: received non-string argument" msgstr "system: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, fuzzy, c-format msgid "%s: received negative argument %g" msgstr "log: vastaanotettu negatiivinen argumentti %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "kohtalokas: on käytettävä â€count$†kaikilla muodoilla tai ei missään" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "kenttäleveys ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "tarkkuus ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "kenttäleveys ja tarkkuus ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu awk-muodoissa" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy msgid "fatal: argument index with `$' must be > 0" msgstr "kohtalokas: argumenttilukumäärän argumentilla â€$†on oltava > 0" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" @@ -703,142 +722,130 @@ "kohtalokas: argumenttilukumäärä %ld on suurempi kuin toimitettujen " "argumenttien lukumäärä" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu pisteen jälkeen muodossa" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "kohtalokas: ei â€$â€-argumenttia tarjottu sijantikenttäleveydelle tai " "tarkkuudelle" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "â€l†on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "kohtalokas: â€l†ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "â€L†on merkityksetön awk-muodoissa; ohitetaan" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "kohtalokas: â€L†ei ole sallittu POSIX awk -muodoissa" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "â€h†on merkityksetön awk-muodoissa; ohitetaan" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "kohtalokas: â€h†ei ole sallittu POSIX awk -muodoissa" - -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: arvo %g on liian suuri %%c-muodolle" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: arvo %g ei ole kelvollinen leveä merkki" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: arvo %g on lukualueen ulkopuolella â€%%%câ€-muodolle" -#: builtin.c:1505 +#: builtin.c:1483 #, fuzzy, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: arvo %g on lukualueen ulkopuolella â€%%%câ€-muodolle" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ohitetaan tuntematon muotoargumenttimerkki â€%câ€: ei muunnettu argumenttia" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "kohtalokas: ei kylliksi argumentteja muotomerkkijonon tyydyttämiseksi" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ tällainen loppui kesken" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: muotoargumentilla ei ole ohjauskirjainta" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "muotomerkkijonoon toimitettu liian monta argumenttia" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: ei argumentteja" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: ei argumentteja" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf: yritettiin kirjoittaa kaksisuuntaisen putken suljettuun " "kirjoituspäähän" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: pituus %g ei ole >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: pituus %g ei ole >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: typistetään pituus %g, joka ei ole kokonaisluku" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: pituus %g liian suuri merkkijononindeksointiin, typistetään arvoon %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: aloitusindeksi %g on virheellinen, käytetään 1:tä" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: typistetään aloitusindeksi %g, joka ei ole kokonaisluku" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: lähdemerkkijono on nollapituinen" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: aloitusindeksi %g on merkkijonon lopun jälkeen" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -846,158 +853,164 @@ "substr: pituus %g alkuindeksissä %g ylittää ensimmäisen argumentin pituuden " "(%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, fuzzy, c-format msgid "%s: received non-numeric second argument" msgstr "or: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: toinen argumentti on pienempi kuin 0 tai liian suuri time_t-" "rakenteeseen" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: kohteen time_t toinen argumentti lukualueen ulkopuolella" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: vastaanotettu tyhjä muotomerkkijono" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: vähintään yksi arvoista on oletuslukualueen ulkopuolella" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "’system’-funktio ei ole sallittu hiekkalaatikkotilassa" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print: yritettiin kirjoittaa kaksisuuntaisen putken suljettuun " "kirjoituspäähän" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "viite alustamattomaan kenttään â€$%dâ€" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, fuzzy, c-format msgid "%s: received non-numeric first argument" msgstr "or: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: kolmas argumentti ei ole taulukko" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: kolmatta argumenttia ei saatu" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: kolmatta argumenttia â€%.*s†käsiteltiin kuin 1:stä" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: voidaan kutsua epäsuorasti vain kahdella argumentilla" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "epäsuora kutsu kohteeseen %s vaatii vähintään kaksi argumenttia" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): negatiiviset arvot eivät ole sallittuja" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): negatiiviset arvot eivät ole sallittuja" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, fuzzy, c-format msgid "%s: called with less than two arguments" msgstr "or: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, fuzzy, c-format msgid "%s: argument %d is non-numeric" msgstr "or: argumentti %d ei ole numeraaliargumentti" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: argumentin #%d negatiivinen arvo %Rg ei ole sallittu" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): negatiivinen arvo ei ole sallittu" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): jaosarvo typistetään" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: â€%s†ei ole kelvollinen paikallinen kategoria" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: kolmas argumentti ei ole taulukko" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: nollalla jakoa yritettiin" -#: builtin.c:4080 +#: builtin.c:4106 #, fuzzy msgid "typeof: second argument is not an array" msgstr "split: toinen argumentti ei ole taulukko" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: virheellinen argumenttityyppi â€%sâ€" -#: builtin.c:4176 +#: builtin.c:4202 #, fuzzy, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: virheellinen argumenttityyppi â€%sâ€" @@ -1007,444 +1020,565 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, fuzzy, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Kirjoita (g)awk-lause(et). Lopeta komennolla \"end\"\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "virheellinen kehysnumero: %d" -#: command.y:297 +#: command.y:298 #, fuzzy, c-format msgid "info: invalid option - `%s'" msgstr "info: virheellinen valitsin -- â€%sâ€" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "source â€%sâ€: on jo merkitty lähteeksi." -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "save â€%sâ€: komento ei ole sallittu." -#: command.y:341 +#: command.y:342 #, fuzzy msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "Komennon â€commands†käyttö breakpoint/watchpoint-komentoja varten epäonnistui" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "yhtään breakpoint/watchpoint -kohdetta ei ole vielä asetettu" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "virheellinen breakpoint/watchpoint-numero" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Kirjoita komennot, kun %s %d osui, yksi per rivi.\n" -#: command.y:352 +#: command.y:353 #, fuzzy, c-format msgid "End with the command `end'\n" msgstr "Lopeta komennolla â€endâ€\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "â€end†on kelvollinen vain komennoissa â€commands†tai â€evalâ€" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "â€silent†on kelvollinen vain komennossa â€commandsâ€" -#: command.y:375 +#: command.y:376 #, fuzzy, c-format msgid "trace: invalid option - `%s'" msgstr "trace: virheellinen valitsin -- â€%sâ€" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: virheellinen breakpoint/watchpoint-numero" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "argumentti ei ole merkkijono" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, fuzzy, c-format msgid "option: invalid parameter - `%s'" msgstr "option: virheellinen parametri - â€%sâ€" -#: command.y:476 +#: command.y:477 #, fuzzy, c-format msgid "no such function - `%s'" msgstr "tuntematon funktio - â€%sâ€" -#: command.y:533 +#: command.y:534 #, fuzzy, c-format msgid "enable: invalid option - `%s'" msgstr "enable: virheellinen valitsin -- â€%sâ€" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "virheellinen lukualuemäärittely: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "ei-numeerinen arvo kenttänumerolle" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "löytyi ei-numeerinen arvo, odotettiin numeraalia" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "nollasta poikkeava kokonaislukuarvo" -#: command.y:819 +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - tulosta kaikkien tai N:n sisimmäisen (ulommaisin, jos N < 0) " "kehyksen jäljet." -#: command.y:821 +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" "break [[filename:]N|function] - aseta breakpoint määriteltyyn sijaintiin." -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" "clear [[filename:]N|function] - poista aiemmin asetetut breakpoint-kohdat." -#: command.y:825 +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [num] - aloittaa komentojen luettelon, joka suoritetaan " "keskeytyskohta(watchpoint)osumassa." -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" "condition num [expr] - aseta tai nollaa keskeytyskohta- tai vahtikohtaehdot." -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" msgstr "continue [COUNT] - continue program being debugged." -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" "delete [keskeytyskohdat] [lukualue] - poista määritellyt keskeytyskohdat." -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" "disable [keskeytyskohdat] [lukualue] - ota pois käytöstä määritellyt " "keskeytyskohdat." -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" msgstr "" "display [muuttuja] - tulosta muuttujan arvo joka kerta kun ohjelma pysähtyy." -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" msgstr "down [N] - siirrä N kehystä alaspäin pinossa." -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" msgstr "dump [tiedostonimi] - vedosta käskyt tiedostoon tai vakiotulosteeseen." -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" "enable [once|del] [keskeytyskohdat] [lukualue] - ota käyttöön määritellyt " "keskeytyskohdat." -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" msgstr "end - lopeta komentojen tai awk-lauseiden luottelo." -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "eval stmt|[p1, p2, ...] - evaloi awk-lauseet." -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +#, fuzzy +#| msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" msgstr "exit - (sama kuin quit) poistu vianjäljittäjästä." -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" msgstr "finish - suorita kunnes palautetaan valittu pinokehys." -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" msgstr "frame [N] - valitse ja tulosta pinokehys numero N." -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" msgstr "help [komento] - tulosta komentoluettelo tai komennon selitys." -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" "ignore N COUNT - aseta keskeytyskohdan ignore-count numero N arvoon COUNT." -#: command.y:857 +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info aihe - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" "list [-|+|[tiedostonimi:]rivinumero|funktio|lukualue] - luettele määritellyt " "rivit." -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "next [COUNT] - askella ohjelmaa, etene alirutiinikutsujen kautta." -#: command.y:863 +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [COUNT] - askella yksi käsky, mutta etene alirutiinikutsujen kautta." -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "option [nimi[=arvo]] - aseta tai näytä vianjäljittäjävalitsimet." -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" msgstr "print var [muuttuja] - tulosta muutujan tai taulukon arvo." -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" msgstr "printf muoto, [argumentti], ... - muotoiltu tuloste." -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" msgstr "quit - poistu vianjäljittäjästä." -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" msgstr "return [arvo] - tekee valitun pinokehyksen paluun sen kutsujalle." -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" msgstr "run - käynnistä tai uudelleenkäynnistä ohjelman suoritus." -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" msgstr "save tiedostonimi - tallenna komennot istunnosta tiedostoon." -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" msgstr "set var = arvo - liitä arvo skalaarimuuttujaan." -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - pysäyttää tavallisen viestin kun pysähdytään katkaisukohdassa/" "vahtipisteessä." -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" msgstr "source file - suorita komennot tiedostosta." -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" "step [COUNT] - askella ohjelmaa, kunnes se saavuttaa eri lähdekoodirivin." -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" msgstr "stepi [COUNT] - askella tarkalleen yksi käsky." -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "tbreak [[tiedostonimi:]N|funktio] - aseta tilapäinen keskeytyskohta." -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" msgstr "trace on|off - tulosta käsky ennen suoritusta." -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "undisplay [N] - poista muuttuja(t) automaattisesta näyttöluettelosta." -#: command.y:897 +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[tiedostonimi:]N|funktio] - suorita kunnes ohjelma tavoittaa eri " "rivin tai rivin N nykyisen kehyksen sisällä." -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "unwatch [N] - poista muuttuja(t) vahtiluettelosta." -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" msgstr "up [N] - siirrä N kehystä ylöspäin pinossa." -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" msgstr "watch muuttuja - aseta vahtikohta muuttujalle." -#: command.y:905 +#: command.y:906 +#, fuzzy +#| msgid "" +#| "where [N] - (same as backtrace) print trace of all or N innermost " +#| "(outermost if N < 0) frames." msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "missä [N] - (sama kuin paluujälki) tulostaa kaikkien tai N-sisimmäisen " "(ulommaisen jos N < 0) kehyksen jäljen." -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "virhe: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format msgid "cannot read command: %s\n" msgstr "komennon (%s) lukeminen epäonnistui\n" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format msgid "cannot read command: %s" msgstr "komennon (%s) lukeminen epäonnistui" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "virheellinen merkki komennossa" -#: command.y:1161 +#: command.y:1162 #, fuzzy, c-format msgid "unknown command - `%.*s', try help" msgstr "tuntematon komento - \"%.*s\", kokeile käskyä help" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "virheellinen merkki" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "määrittelemätön komento: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "aseta tai näytä historiatiedostossa säilytettävien rivien lukumäärä." #: debug.c:259 -msgid "set or show the list command window size." +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "aseta tai näytä luettelokomentoikkunan koko." #: debug.c:261 -msgid "set or show gawk output file." +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "aseta tai näytä gawk-tulostetiedosto." #: debug.c:263 -msgid "set or show debugger prompt." +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "aseta tai näytä vianjäljittäjäkehote." #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" "aseta, poista asetus tai näytä komentohistoriatallennus (value=on|off)." #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "aseta, poista asetus tai näytä valitsintallennus (value=on|off)." #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "aseta, poista asetus tai näytä käskyjäljitys (value=on|off)." #: debug.c:358 -msgid "program not running." +#, fuzzy +#| msgid "program not running." +msgid "program not running" msgstr "ohjelma ei ole käynnissä." -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "lähdetiedosto â€%s†on tyhjä.\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "ei nykyistä lähdekooditiedostoa." -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format msgid "cannot find source file named `%s': %s" msgstr "lähdetiedostoa nimeltä â€%s†(%s) ei kyetä lukemaan" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" "VAROITUS: lähdekooditiedostoa â€%s†on muokattu ohjelman kääntämisen " "jälkeen.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "rivinumero %d lukualueen ulkopuolella; kohteessa â€%s†on %d riviä" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "" "odottamaton eof-tiedostonloppumerkki luettaessa tiedostoa â€%sâ€, rivi %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" "lähdekooditiedostoa â€%s†on muokattu ohjelman suorituksen aloituksen jälkeen" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Nykyinen lähdetiedosto: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Rivien lukumäärä: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Lähdetiedosto (riviä): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1452,54 +1586,55 @@ "Numero Disp Käytössä Sijainti\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tosumien lukumäärä = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tohita seuraavat %ld osumaa\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tpysähtymisehto: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tkomennot:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Nykyinen kehys: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Kehyksen kutsuma: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Kehyksen kutsuja: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Funktiossa main() ei ole mitään.\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Ei argumentteja.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Ei paikallisia muuttujia.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1507,7 +1642,7 @@ "Kaikki määritellyt muuttujat:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1515,7 +1650,7 @@ "Kaikki määritellyt funktiot.\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1523,7 +1658,7 @@ "Automaattisesti näytettävät muuttujat:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1531,390 +1666,404 @@ "Vahtimuuttujia:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "symbolia â€%s†ei löydy nykyisestä asiayhteydestä\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "â€%s†ei ole taulukko\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = alustamaton kenttä\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "taulukko â€%s†on tyhjä\n" -#: debug.c:1132 debug.c:1184 -#, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +#: debug.c:1141 debug.c:1193 +#, fuzzy, c-format +#| msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[\"%.*s\"] ei ole taulukossa â€%sâ€\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "â€%s[\"%.*s\"]†ei ole taulukko\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "â€%s†ei ole skalaarimuuttuja" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "yritettiin käyttää taulukkoa â€%s[\"%.*s\"]†skalaarikontekstissa" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "yritettiin käyttää skalaaria â€%s[\"%.*s\"]†taulukkona" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "â€%s†on funktio" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "watchpoint %d ei ole ehdollinen\n" -#: debug.c:1514 -#, c-format -msgid "No display item numbered %ld" +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "Yksikään näyttörivi ei ole numeroitu %ld" -#: debug.c:1517 -#, c-format -msgid "No watch item numbered %ld" +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "Yksikään vahtirivi ei ole numeroitu %ld" -#: debug.c:1543 -#, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +#: debug.c:1552 +#, fuzzy, c-format +#| msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d: [\"%.*s\"] ei ole taulukossa â€%sâ€\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "yritettiin käyttää skalaariarvoa taulukkona" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" "Watchpoint %d poistettiin, koska parametri on lukualueen ulkopuolella.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Display %d poistettiin, koska parametri on lukualueen ulkopuolella.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " tiedostossa â€%sâ€, rivi %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " osoitteessa â€%sâ€:%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tkohteessa " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Lisää pinokehyksiä seuraa ...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "virheellinen kehysnumero" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Huomaa: keskeytyskohta %d (otettu käyttöön, ohita seuraavat %ld osumaa), " "asetettu myös osoitteessa %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" "Huomaa: keskeytyskohta %d (otettu käyttöön), asetettu myös kohdassa %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Huomaa: keskeytyskohta %d (otettu pois käytöstä, ohita seuraavat %ld " "osumaa), asetettu myös kohdassa %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" "Huomaa: keskeytyskohta %d (otettu pois käytöstä), asetettu myös kohdassa %s:" "%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Keskeytyskohta %d asetettu tiedostossa â€%sâ€, rivi %d\n" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "Keskeytyskohdan asetaminen tiedostossa â€%s†epäonnistui\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "rivinumero %d tiedostossa â€%s†on lukualueen ulkopuolella" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format msgid "internal error: cannot find rule\n" msgstr "sisäinen virhe: %s null vname-arvolla" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "Keskeytykohdan asettaminen kohdassa â€%sâ€:%d epäonnistui\n" -#: debug.c:2404 +#: debug.c:2413 #, fuzzy, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "Keskeytyskohdan asettaminen funktiossa â€%s†epäonnistui\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "keskeytyskohta %d asetettu tiedostossa â€%sâ€, rivi %d on ehdoton\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "rivinumero %d tiedostossa â€%s†on lukualueen ulkopuolella" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Poistettu keskeytyskohta %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Ei keskeytyskohtaa funktion â€%s†sisääntulossa\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Tiedostossa â€%s†ei ole keskeytyskohtaa, rivi #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "virheellinen keskeytyskohtanumero" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Poistetaanko kaikki keskeytyskohdata? (y tai n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "k" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Keskeytyskohta %2$d:n seuraavat %1$ld risteystä ohitetaan.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Pysähtyy seuraavalla kerralla kun keskeytyskohta %d saavutetaan.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" "Vain ohjelmia, jotka tarjoavat valitsimen â€-fâ€, voidaan vikajäljittää.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Vianjäljittäjän uudelleenkäynnistys epäonnistui" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Ohjelma on jo käynnissä. Käynnistetäänkö uudelleen alusta (y/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Ohjelma ei käynnistynyt uudelleen\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "virhe: uudelleenkäynnistys epäonnistui, toiminto ei ole sallittu\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" "virhe (%s): uudelleenkäynnistys epäonnistui, loput komennot ohitetaan\n" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Käynnistetään ohjelma: \n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Ohjelma päättyi epänormaalisti päättymisarvolla: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Ohjelma päättyi normaalisti päättymisarvolla: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "Ohjelma on käynnissä. Poistutaanko silti (y/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Ei pysäytetty yhdessäkään keskeytyskohdassa; argumentti ohitetaan.\n" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "virheellinen keskeytyskohtanumero %d." -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Ohittaa seuraavat %ld keskeytyskohdan %d ylitystä.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" "’finish’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "Suorita kunnes paluu kohteesta " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" "’return’ ei ole merkityksellinen ulommaisen kehyksen main()-funktiossa\n" -#: debug.c:3386 +#: debug.c:3397 #, fuzzy, c-format msgid "cannot find specified location in function `%s'\n" msgstr "Määritellyn sijainnin löytyminen funktiossa â€%s†epäonnistui\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "virheellinen lähdekoodirivi %d tiedostossa â€%sâ€" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "Määritellyn sijainnin %d löytyminen tiedostossa â€%s†epäonnistui\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "elementti ei ole taulukossa\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "tyypitön muuttuja\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Pysäytetään kohdassa %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "’finish’ ei ole merkityksellinen ei-paikallisessa hypyssä ’%s’\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "’until’ ei ole merkityksellinen ei-paikallisessa hypyssä ’%s’\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 #, fuzzy msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t------Jatka painamalla [Enter] tai poistu painamalla q [Enter]------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] ei ole taulukossa â€%sâ€" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "lähetetään tuloste vakiotulosteeseen\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "virheellinen numero" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "â€%s†ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "â€return†ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "Symbolia â€%s†ei ole nykyisesssä asiayhteydessä" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "symbolia â€%s†ei löydy nykyisestä asiayhteydestä\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "tuntematon solmutyyppi %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "tuntematon käskykoodi %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "käskykoodi %s ei ole operaattori tai avainsana" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "puskurin ylivuoto funktiossa genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1925,71 +2074,71 @@ "\t# Funktiokutsupino:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "â€IGNORECASE†on gawk-laajennus" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "â€BINMODE†on gawk-laajennus" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-arvo â€%s†on virheellinen, käsiteltiin arvona 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "väärä â€%sFMTâ€-määritys â€%sâ€" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "käännetään pois â€--lintâ€-valitsin â€LINTâ€-sijoituksen vuoksi" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "viite alustamattomaan argumenttiin â€%sâ€" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "viite alustamattomaan muuttujaan â€%sâ€" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "yritettiin kenttäviitettä arvosta, joka ei ole numeerinen" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "yritettiin kenttäviitettä null-merkkijonosta" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "yritettiin saantia kenttään %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "viite alustamattomaan kenttään â€$%ldâ€" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktio â€%s†kutsuttiin useammalla argumentilla kuin esiteltiin" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: odottamaton tyyppi â€%sâ€" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "jakoa nollalla yritettiin operaatiossa â€/=â€" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "jakoa nollalla yritettiin operaatiossa â€%%=â€" @@ -2080,84 +2229,84 @@ msgid "dynamic loading of libraries is not supported" msgstr "kirjaston dynaamista latausta ei tueta" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: symbolisen linkin â€%s†lukeminen epäonnistui" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: first argument is not a string" msgstr "do_writea: argumentti 0 ei ole merkkijono\n" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy msgid "stat: second argument is not an array" msgstr "split: toinen argumentti ei ole taulukko" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: väärät parametrit" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: muuttujan %s luominen epäonnistui" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts ei ole tuettu tässä järjestelmässä" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 #, fuzzy msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: taulukon luominen epäonnistui" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: taulukon luominen epäonnistui" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: kutsuttu argumenttien väärällä lukumäärällä, odotettiin 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "asort: ensimmäinen argumentti ei ole taulukko" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "split: toinen argumentti ei ole taulukko" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "match: kolmas argumentti ei ole taulukko" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: taulukon litistäminen epäonnistui\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ohitetaan petollinen FTS_NOSTAT-lippu. nyyh, nyyh, nyyh." @@ -2307,7 +2456,7 @@ msgid "chr: first argument is not a number" msgstr "asort: ensimmäinen argumentti ei ole taulukko" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir epäonnistui: %s" @@ -2406,184 +2555,191 @@ msgid "sleep: not supported on this platform" msgstr "sleep: ei ole tuettu tällä alustalla" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF asetettu negatiiviseen arvoon" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: neljäs argumentti on gawk-laajennus" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: neljäs argumentti ei ole taulukko" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "" +"asort: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille " +"epäonnistui" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: toinen argumentti ei ole taulukko" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: saman taulukon käyttö toiselle ja neljännelle argumentille epäonnistui" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: toisen argumentin käyttö alitaulukkoa neljännelle argumentille " "epäonnistui" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: neljännen argumentin käyttö alitaulukkoa toiselle argumentille " "epäonnistui" -#: field.c:1038 +#: field.c:1050 #, fuzzy msgid "split: null string for third arg is a non-standard extension" msgstr "split: null-merkkijono kolmantena argumenttina on gawk-laajennus" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: neljäs argumentti ei ole taulukko" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: toinen argumentti ei ole taulukko" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: kolmas argumentti ei ole taulukko" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: saman taulukon käyttö toiselle ja neljännelle argumentille " "epäonnistui" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: toisen argumentin käyttö alitaulukkkoa neljännelle argumentille " "epäonnistui" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: neljännen argumentin käyttö alitaulukkoa toiselle argumentille " "epäonnistui" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "â€FIELDWIDTHS†on gawk-laajennus" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "virheellinen FIELDWIDTHS-arvo kentälle %d lähellä â€%sâ€" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "null-merkkijono â€FSâ€-kenttäerotinmuuttujalle on gawk-laajennus" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "vanha awk ei tue regexp-arvoja â€FSâ€-kenttäerotinmuuttujana" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "â€FPAT†on gawk-laajennus" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: vastaanotti null retval-paluuarvon" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: ei MPFR-tilassa" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: MPFR ei ole tuettu" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: virheellinen numerotyyppi â€%dâ€" -#: gawkapi.c:385 +#: gawkapi.c:377 #, fuzzy msgid "add_ext_func: received NULL name_space parameter" msgstr "load_ext: vastaanotettiin NULL lib_name" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: vastaaotti null-solmun" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: vastaanotti null-arvon" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: vastaanotettu null-taulukko" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: vastaanotti null-alaindeksin" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" "api_flatten_array_typed: indeksin %d muuntaminen arvoksi %s epäonnistui\n" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: arvon %d muuntaminen arvoksi %s epäonnistui\n" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 #, fuzzy msgid "api_get_mpfr: MPFR not supported" msgstr "awk_value_to_node: MPFR ei ole tuettu" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "BEGINFILE-säännön loppua ei löytynyt" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "" @@ -2594,31 +2750,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "komentoriviargumentti â€%s†on hakemisto: ohitettiin" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format msgid "cannot open file `%s' for reading: %s" msgstr "tiedoston â€%s†avaaminen lukemista varten (%s) epäonnistui" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "tiedostomäärittelijän %d (â€%sâ€) sulkeminen epäonnistui (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "turha merkkien â€>†ja â€>>†sekoittaminen tiedostolle â€%.*sâ€" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "edelleenohjaus ei ole sallittua hiekkalaatikkotilassa" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "lauseke â€%sâ€-uudellenohjauksessa on numero" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "lausekkeella â€%sâ€-uudelleenohjauksessa on null-merkkijonoarvo" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2626,29 +2837,24 @@ "tiedostonimi â€%.*s†â€%sâ€-uudelleenohjaukselle saattaa olla loogisen " "lausekkeen tulos" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "turha merkkien â€>†ja â€>>†sekoittaminen tiedostolle â€%.*sâ€" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, fuzzy, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" "get_file-vastakkeen luomista ei tueta tällä alustalla kohteelle â€%s†fd %d-" "arvolla" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "putken â€%s†avaaminen tulosteelle (%s) epäonnistui" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "putken â€%s†avaaminen syötteelle (%s) epäonnistui" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2656,257 +2862,262 @@ "get_file-vastakkeen luomista ei tueta tällä alustalla kohteelle â€%s†fd %d-" "arvolla" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" "kaksisuuntaisen putken â€%s†avaaminen syötteelle/tulosteelle (%s) epäonnistui" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format msgid "cannot redirect from `%s': %s" msgstr "uudelleenohjaus putkesta â€%s†(%s) epäonnistui" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format msgid "cannot redirect to `%s': %s" msgstr "uudelleenohjaus putkeen â€%s†(%s) epäonnistui" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "saavutettiin avoimien tiedostojen järjestelmäraja: aloitetaan " "tiedostomäärittelijöiden lomittaminen" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "uudelleenohjauksen â€%s†sulkeminen epäonnistui (%s)." -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "avoinna liian monta putkea tai syötetiedostoa" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: toisen argumentin on oltava â€to†tai â€fromâ€" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: â€%.*s†ei ole avoin tiedosto, putki tai apuprosessi" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "suljettiin uudelleenohjaus, jota ei avattu koskaan" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: uudelleenohjaus â€%s†ei ole avattu operaattoreilla â€|&â€, toinen " "argumentti ohitettu" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "virhetila (%d) putken â€%s†sulkemisessa (%s)" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "virhetila (%d) putken â€%s†sulkemisessa (%s)" + +#: io.c:1405 #, fuzzy, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "virhetila (%d) tiedoston â€%s†sulkemisessa (%s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "pistokkeen â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "apuprosessin â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "putken â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "tiedoston â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1411 +#: io.c:1471 #, fuzzy, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: tiedoston â€%.*s†tyhjentäminen epäonnistui" -#: io.c:1412 +#: io.c:1472 #, fuzzy, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: tiedoston â€%.*s†tyhjentäminen epäonnistui" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format msgid "error writing standard output: %s" msgstr "virhe kirjoitettaessa vakiotulosteeseen (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format msgid "error writing standard error: %s" msgstr "virhe kirjoitettaessa vakiovirheeseen (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "uudelleenohjauksen â€%s†putken tyhjennys epäonnistui (%s)." -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "putken apuprosessityhjennys uudelleenohjaukseen â€%s†epäonnistui (%s)." -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "uudelleenohjauksen â€%s†tiedostontyhjennys epäonnistui (%s)." -#: io.c:1610 +#: io.c:1670 #, fuzzy, c-format msgid "local port %s invalid in `/inet': %s" msgstr "paikallinen portti %s virheellinen pistokkeessa â€/inetâ€" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "paikallinen portti %s virheellinen pistokkeessa â€/inetâ€" -#: io.c:1636 +#: io.c:1696 #, fuzzy, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "etäkone- ja porttitiedot (%s, %s) ovat virheellisiä" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "etäkone- ja porttitiedot (%s, %s) ovat virheellisiä" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-viestintää ei tueta" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "laitteen â€%s†avaus epäonnistui, tila â€%sâ€" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format msgid "close of master pty failed: %s" msgstr "â€master ptyâ€-sulkeminen epäonnistui (%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format msgid "close of stdout in child failed: %s" msgstr "vakiotulosteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "â€slave ptyâ€:n siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui " "(dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format msgid "close of stdin in child failed: %s" msgstr "vakiosyötteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "â€slave ptyâ€:n siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui " "(dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format msgid "close of slave pty failed: %s" msgstr "â€slave ptyâ€:n sulkeminen epäonnistui (%s)" -#: io.c:2265 +#: io.c:2325 #, fuzzy msgid "could not create child process or open pty" msgstr "lapsiprosessin luominen komennolle â€%s†(fork: %s) epäonnistui" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "putken siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "putken siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy msgid "restoring stdout in parent process failed" msgstr "vakiotulosteen palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy msgid "restoring stdin in parent process failed" msgstr "vakiosyötön palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format msgid "close of pipe failed: %s" msgstr "putken sulkeminen epäonnistui (%s)" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "â€|&†ei tueta" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format msgid "cannot open pipe `%s': %s" msgstr "putken â€%s†(%s) avaaminen epäonnistui" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "lapsiprosessin luominen komennolle â€%s†(fork: %s) epäonnistui" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "getline: yritys lukea kaksisuuntaisen putken suljetusta lukupäästä" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: vastaanotettiin NULL-osoitin" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "syötejäsennin â€%s†on ristiriidassa aiemmin asennetun syötejäsentimen â€%s†" "kanssa" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "syötejäsentäjä â€%s†epäonnistui kohteen â€%s†avaamisessa" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: vastaanotti NULL-osoittimen" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2914,16 +3125,16 @@ "tulostekäärin â€%s†on ristiriidassa aiemmin asennetun tulostekäärimen â€%s†" "kanssa" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "tulostekäärin â€%s†epäonnistui avaamaan â€%sâ€" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: vastaanotti NULL-osoittimen" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2932,221 +3143,227 @@ "kaksisuuntainen prosessori â€%s†on ristiriidassa aiemmin asennetun " "kaksisuuntaisen prosessorin â€%s†kanssa" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "kaksisuuntainen prosessori â€%s†epäonnistui avaamaan â€%sâ€" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "data-tiedosto â€%s†on tyhjä" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "lisäsyötemuistin varaus epäonnistui" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "â€RSâ€-monimerkkiarvo on gawk-laajennus" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6-viestintää ei tueta" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "ympäristömuuttuja â€POSIXLY_CORRECT†asetettu: käännetään päälle valitsin â€--" "posixâ€" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "valitsin â€--posix†korvaa valitsimen â€--traditionalâ€" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "valitsin â€--posix†tai â€--traditional†korvaa valitsimen â€--non-decimal-dataâ€" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "valitsin â€--posix†korvaa valitsimen â€--characters-as-bytesâ€" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "suorittaminen â€%s setuid rootâ€-käyttäjänä saattaa olla turvapulma" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format msgid "cannot set binary mode on stdin: %s" msgstr "binaaritilan asettaminen vakiosyötteessä (%s) epäonnistui" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format msgid "cannot set binary mode on stdout: %s" msgstr "binaaritilan asettaminen vakiotulosteessa (%s) epäonnistui" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format msgid "cannot set binary mode on stderr: %s" msgstr "binaaritilaa asettaminen vakiovirheessä (%s) epäonnistui" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "ei ohjelmatekstiä ollenkaan!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] -f ohjelmatiedosto [--] " "tiedosto ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] [--] %cohjelma%c " "tiedosto ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-valitsimet:\t\tGNU-pitkät valitsimet: (vakio)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f ohjelmatiedosto\t\t--file=ohjelmatiedosto\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=arvo\t\t--assign=muuttuja=arvo\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Lyhyet valitsimet:\t\tGNU-pitkät valitsimet: (laajennukset)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[tiedosto]\t\t--dump-variables[=tiedosto]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[tiedosto]\t\t--debug[=tiedosto]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=tiedosto\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-po\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include-tiedosto\t\t--include=include-tiedosto\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l kirjasto\t\t--load=kirjasto\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[tiedosto]\t\t--pretty-print[=tiedosto]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-O\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 #, fuzzy msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy msgid "" "\n" @@ -3166,7 +3383,7 @@ "https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3176,7 +3393,7 @@ "Oletuksena se lukee vakiosyötettä ja kirjoittaa vakiotulosteeseen.\n" "\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format msgid "" "Examples:\n" @@ -3187,7 +3404,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' tiedosto\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3206,7 +3423,7 @@ "ehtojen mukaisesti.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3220,7 +3437,7 @@ "GNU General Public License-ehdoista.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3228,11 +3445,11 @@ "Sinun pitäisi vastaanottaa kopion GNU General Public Licence-lisenssistä\n" "tämän ohjelman mukana. Jos näin ei ole, katso http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ei aseta FS välilehteen POSIX awk:ssa" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3241,163 +3458,169 @@ "%s: â€%s†argumentti valitsimelle â€-v†ei ole â€var=arvoâ€-muodossa\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "â€%s†ei ole laillinen muuttujanimi" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "â€%s†ei ole muuttujanimi, etsitään tiedostoa â€%s=%sâ€" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "gawk-ohjelman sisäisen â€%sâ€-määrittelyn käyttö muuttujanimenä epäonnistui" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "funktionimen â€%s†käyttö muuttujanimenä epäonnistui" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "liukulukupoikkeus" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "tuhoisa virhe: sisäinen virhe" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "tuhoisa virhe: sisäinen virhe: segmenttivirhe" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "tuhoisa virhe: sisäinen virhe: pinoylivuoto" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "ei avattu uudelleen tiedostomäärittelijää %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" "laitteen /dev/null avaaminen uudelleen tiedostomäärittelijälle %d epäonnistui" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "tyhjä argumentti valitsimelle â€-e/--source†ohitetaan" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy msgid "`--profile' overrides `--pretty-print'" msgstr "valitsin â€--posix†korvaa valitsimen â€--traditionalâ€" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ohitettu: MPFR/GMP-tuki ei ole käännetty kohteessa" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: valitsin â€-W %s†on tunnistamaton, ohitetaan\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: valitsin vaatii argumentin -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-arvo â€%.*s†on virheellinen" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "RNDMODE-arvo â€%.*s†on virheellinen" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: toinen vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +msgid "%s: received negative argument %.*s" +msgstr "log: vastaanotettu negatiivinen argumentti %g" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): negatiivinen arvo ei ole sallittu" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): jaosarvo typistetään" -#: mpfr.c:832 +#: mpfr.c:890 #, fuzzy, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): negatiiviset arvot eivät ole sallittuja" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: vastaanotettu argumentti #%d ei ole numeerinen" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argumentilla #%d on virheellinen arvo %Rg, käytetään 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: argumentin #%d negatiivinen arvo %Rg ei ole sallittu" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argumentin #%d jaosarvo %Rg typistetään" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: argumentin #%d negatiivinen arvo %Zd ei ole sallittu" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: kutsuttu vähemmällä kuin kahdella argumentilla" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: kutsuttu vähemmällä kuin kahdella argumentilla" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: kutsuttu vähemmällä kuin kahdella argumentilla" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: toinen vastaanotettu argumentti ei ole numeerinen" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "komentorivi:" @@ -3406,20 +3629,20 @@ msgid "could not make typed regex" msgstr "tyypitetyn regex-lausekeen tekeminen epäonnistui" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "vanha awk ei tue â€\\%câ€-koodinvaihtosekvenssiä" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX ei salli â€\\xâ€-koodinvaihtoja" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "ei heksadesimaalilukuja â€\\xâ€-koodinvaihtosekvenssissä" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3428,15 +3651,19 @@ "heksadesimaalikoodinvaihtomerkkejä \\x%.*s / %d ei ole luultavasti tulkittu " "sillä tavalla kuin odotat" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "koodinvaihtosekvenssi â€\\%c†käsitelty kuin pelkkä â€%câ€" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Virheellinen monitavutieto havaittu. Paikallisasetuksesi ja tietojesi " "välillä saattaa olla täsmäämättömyys." @@ -3483,11 +3710,11 @@ msgid "internal error: %s with null vname" msgstr "sisäinen virhe: %s null vname-arvolla" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "sisäinen virhe: builtin null-funktionimellä" -#: profile.c:1317 +#: profile.c:1318 #, fuzzy, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3496,7 +3723,7 @@ "\t# Ladatut laajennukset (-l ja/tai @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, fuzzy, c-format msgid "" "\n" @@ -3506,12 +3733,12 @@ "\t# Ladatut laajennukset (-l ja/tai @load)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiili, luotu %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3520,7 +3747,7 @@ "\n" "\t# Funktiot, luetteloitu aakkosjärjestyksessä\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tuntematon edelleenohjaustyyppi %d" @@ -3551,39 +3778,39 @@ msgstr "" "säännöllisen lausekkeen komponentin â€%.*s†pitäisi luultavasti olla â€[%.*s]â€" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "pariton [" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "virheellinen merkkiluokka" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "merkkiluokkasyntaksi on [[:space:]], ei [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "päättymätön \\-koodinvaihtomerkki" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "virheellinen \\{\\}-sisältö" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "säännöllinen lauseke on liian suuri" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "pariton (" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "syntaksi ei ole määritelty" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "pariton )" @@ -3715,15 +3942,31 @@ msgid "No previous regular expression" msgstr "Ei edellistä säännöllistä lauseketta" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "funktio â€%sâ€: funktion â€%s†käyttö parametrinimenä epäonnistui" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "pääsisällön pop-toiminto epäonnistui" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "â€L†on merkityksetön awk-muodoissa; ohitetaan" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "kohtalokas: â€L†ei ole sallittu POSIX awk -muodoissa" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "â€h†on merkityksetön awk-muodoissa; ohitetaan" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "kohtalokas: â€h†ei ole sallittu POSIX awk -muodoissa" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Symbolia â€%s†ei ole nykyisesssä asiayhteydessä" + #, fuzzy #~ msgid "fts: first parameter is not an array" #~ msgstr "asort: ensimmäinen argumentti ei ole taulukko" @@ -4185,9 +4428,6 @@ #~ msgid "assignment used in conditional context" #~ msgstr "sijoitusta käytetty ehdollisessa kontekstissa" -#~ msgid "statement has no effect" -#~ msgstr "käskyllä ei ole vaikutusta" - #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" diff -urN gawk-5.1.0/po/fr.po gawk-5.1.1/po/fr.po --- gawk-5.1.0/po/fr.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/fr.po 2021-10-27 07:58:41.000000000 +0300 @@ -3,14 +3,14 @@ # Ce fichier est distribué sous la même licence que le paquet gawk. # Copyright © 2004 Free Software Foundation, Inc. # Michel Robitaille , 1996-2005. -# Jean-Philippe Guérard , 2010-2020. +# Jean-Philippe Guérard , 2010-2021. # msgid "" msgstr "" -"Project-Id-Version: gawk 5.0.64\n" +"Project-Id-Version: gawk 5.1.1e\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2020-03-15 21:29+0100\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-09-03 23:22+0200\n" "Last-Translator: Jean-Philippe Guérard \n" "Language-Team: French \n" @@ -21,232 +21,245 @@ "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "de %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "tentative d'utiliser un scalaire comme tableau" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "tentative d'utiliser le paramètre scalaire « %s » comme tableau" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "tentative d'utiliser le scalaire « %s » comme tableau" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentative d'utilisation du tableau « %s » dans un contexte scalaire" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete : l'indice « %.*s » est absent du tableau « %s »" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentative d'utiliser le scalaire « %s[\"%.*s\"] » comme tableau" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "%s : le premier argument n'est pas un tableau" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "%s : le deuxième argument n'est pas un tableau" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "%s : le premier argument ne peut être SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "%s : impossible d'utiliser %s comme second argument" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "%s : le premier argument ne peut être FUNCTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%s : sans 2e argument, le premier argument ne peut être SYMTAB" -#: array.c:844 +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%s : sans 2e argument, le premier argument ne peut être FUNCTAB" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti : sans 3e argument, utiliser le même tableau comme source et " +"destination n'a par de sens." + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "%s : le deuxième argument ne doit pas être un sous-tableau du premier" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "%s : le premier argument ne doit pas être un sous-tableau du deuxième" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "« %s » n'est pas un nom de fonction autorisé" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la fonction de comparaison « %s » du tri n'est pas définie" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "les blocs %s doivent avoir une partie action" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "chaque règle doit avoir au moins une partie motif ou action" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "l'ancien awk ne permet pas les « BEGIN » ou « END » multiples" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "« %s » est une fonction interne, elle ne peut être redéfinie" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "l'expression rationnelle constante « // » n'est pas un commentaire C++" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "l'expression rationnelle constante « /%s/ » n'est pas un commentaire C" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "le corps du switch comporte des cas répétés : %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "plusieurs « default » ont été détectés dans le corps du switch" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "« break » est interdit en dehors d'une boucle ou d'un switch" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "« continue » est interdit en dehors d'une boucle ou d'un switch" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "« next » est utilisé dans l'action %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "« nextfile » est utilisé dans l'action %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "« return » est utilisé hors du contexte d'une fonction" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "dans BEGIN ou END, un « print » seul devrait sans doute être un « print " "\"\" »" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "« delete » est interdit sur SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "« delete » est interdit sur FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" -msgstr "« delete(array) » est une extension non portable de tawk" +msgstr "« delete(tableau) » est une extension non portable de tawk" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "impossible d'utiliser des tubes bidirectionnels en série" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "concaténation ambiguë comme cible d'une redirection d'E/S (« > »)" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "expression rationnelle à droite d'une affectation" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "expression rationnelle à gauche d'un opérateur « ~ » ou « !~ »" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "l'ancien awk n'autorise le mot-clef « in » qu'après « for »" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "expression rationnelle à droite d'une comparaison" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "un « getline » non redirigé n'est pas valide dans une règle « %s »" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "dans une action END, un « getline » non redirigé n'est pas défini" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "l'ancien awk ne dispose pas des tableaux multidimensionnels" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "l'appel de « length » sans parenthèses n'est pas portable" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "les appels indirects de fonctions sont une extension gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "impossible d'utiliser la variable spéciale « %s » pour un appel indirect de " "fonction" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "tentative d'appel de « %s » comme fonction" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "expression indice incorrecte" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "avertissement : " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatal : " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "fin de chaîne ou passage à la ligne inattendu" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" @@ -254,275 +267,275 @@ "fichiers sources et arguments doivent contenir des règles et fonctions " "complètes" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "impossible d'ouvrir le fichier source « %s » en lecture : %s" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "impossible d'ouvrir la bibliothèque partagée « %s » en lecture : %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "raison inconnue" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "impossible d'inclure « %s » et de l'utiliser comme programme" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "le fichier source « %s » a déjà été intégré" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "la bibliothèque partagée « %s » est déjà chargée" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include est une extension gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "Le nom de fichier après @include est vide" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load est une extension gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "Le nom de fichier après @load est vide" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "le programme indiqué en ligne de commande est vide" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "impossible de lire le fichier source « %s » : %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "le fichier source « %s » est vide" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "erreur : caractère incorrect « \\%03o » dans le code source" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "le fichier source ne se termine pas par un passage à la ligne" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "expression rationnelle non refermée terminée par un « \\ » en fin de fichier" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s : %d : le modificateur d'expressions rationnelles « /.../%c » de tawk ne " "marche pas dans gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "le modificateur d'expressions rationnelles « /.../%c » de tawk ne marche pas " "dans gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "expression rationnelle non refermée" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "expression rationnelle non refermée en fin de fichier" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "l'utilisation de « \\ #... » pour prolonger une ligne n'est pas portable" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "la barre oblique inverse n'est pas le dernier caractère de la ligne" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "les tableaux multidimensionnels sont une extension gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX n'autorise pas l'opérateur « %s »" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « %s »" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "chaîne non refermée" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX interdit les sauts de lignes physiques dans les chaînes" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "prolonger une chaîne via une barre oblique inversée est non portable" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "caractère incorrect « %c » dans l'expression" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "« %s » est une extension gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX n'autorise pas « %s »" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de « %s »" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "« goto » est jugé dangereux !" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d n'est pas un nombre d'arguments valide de %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s : une chaîne littérale en dernier argument d'une substitution est sans " "effet" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "le troisième paramètre de %s n'est pas un objet modifiable" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match : le troisième argument est une extension gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close : le deuxième argument est une extension gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcgettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcngettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index : le deuxième argument ne peut être une expression rationnelle " "constante" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "fonction « %s » : le paramètre « %s » masque la variable globale" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "impossible d'ouvrir « %s » en écriture : %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "envoi de la liste des variables vers la sortie d'erreur standard" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "%s : échec de la fermeture : %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadows_funcs() a été appelé deux fois !" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "il y avait des variables masquées." +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "il y avait des variables masquées" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "nom de fonction « %s » déjà défini" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "" "fonction « %s » : impossible d'utiliser un nom de fonction comme paramètre" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "fonction « %s » : impossible d'utiliser la variable spéciale « %s » comme " "paramètre d'une fonction" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "" "fonction « %s » : le paramètre « %s » ne peut contenir un espace de noms" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" "fonction « %s » : paramètre #%d, « %s » est un doublon du paramètre #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "fonction « %s » appelée sans être définie" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "fonction « %s » définie mais jamais appelée directement" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "le paramètre #%d, une expr. rationnelle constante, fournit un booléen" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -531,47 +544,51 @@ "fonction « %s » appelée avec un espace entre son nom\n" "et « ( », ou utilisée comme variable ou tableau" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "tentative de division par zéro" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentative de division par zéro dans « %% »" # gawk 'BEGIN { $1++ = 1 }' -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "impossible d'assigner une valeur au résultat de la post-incrémentation d'un " "champ" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "cible de l'assignement incorrecte (opcode %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "l'instruction est sans effet" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" "identifiant %s : les noms qualifiés sont interdits en mode POSIX / " "traditionnel" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" "identifiant %s : le séparateur d'espace de noms est « :: », et non « : »" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "l'identifiant qualifié « %s » est mal formé" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" @@ -579,13 +596,13 @@ "identifiant « %s » : le séparateur d'espace de noms ne peut apparaître " "qu'une fois" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" "utiliser l'identifiant réservé « %s » comme espace de noms est interdit" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " @@ -594,11 +611,11 @@ "utiliser l'identifiant réservé « %s » comme 2nd composant d'un nom qualifié " "est interdit" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "@namespace est une extension gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -617,8 +634,8 @@ msgid "standard error" msgstr "sortie d'erreur standard" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s : argument reçu non numérique" @@ -658,9 +675,9 @@ #, c-format msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "" -"fflush : « %.*s » n'est ni un fichier ouvert, ni un tube, ni un co-processus" +"fflush : « %.*s » n'est ni un fichier ouvert, ni un tube, ni un coprocessus" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "%s : le premier argument n'est pas une chaîne" @@ -678,45 +695,45 @@ msgid "`length(array)' is a gawk extension" msgstr "« length(tableau) » est une extension gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "%s : l'argument n'est pas une chaîne" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "%s : l'argument est négatif %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "" "fatal : « numéro$ » doit être utilisé pour toutes les formats ou pour aucun" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "taille du champ de la spécification « %% » ignorée" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "précision de la spécification « %% » ignorée" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "taille du champ et précision de la spécification « %% » ignorées" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal : « $ » n'est pas autorisé dans les formats awk" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "fatal : le numéro d'argument de « $ » doit être > 0" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" @@ -724,139 +741,125 @@ "fatal : l'index de l'argument %ld est supérieur au nombre total d'arguments " "fournis" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal : dans un format, « $ » ne doit pas suivre un point" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal : aucun « $ » fourni pour la taille ou la précision du champ positionné" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "« l » n'a aucun sens dans un format awk ; ignoré" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "fatal : « l » est interdit dans un format awk POSIX" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "« L » n'a aucun sens dans un format awk ; ignoré" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal : « L » est interdit dans un format awk POSIX" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "« h » n'a aucun sens dans un format awk ; ignoré" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal : « h » est interdit dans un format awk POSIX" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "« %c » n'a pas de sens dans une chaîne de format awk ; ignoré" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "fatal : « %c » est interdit dans une chaîne de format awk POSIX" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf : valeur %g trop grande pour le format « %%c »" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf : %g n'est pas un caractère large valide" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf : valeur %g hors limite pour le format « %%%c »" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf : valeur %s hors limite pour le format « %%%c »" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" "le format %%%c est conforme à POSIX, mais non reconnu par les autres awk" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "caractère de format inconnu « %c » ignoré : aucun argument converti" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal : pas assez d'arguments pour satisfaire la chaîne de formatage" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ à court pour celui-ci" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf : spécification de format sans lettre de contrôle" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "trop d'arguments pour la chaîne de formatage" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf : aucun argument" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf : aucun argument" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf : tentative d'écriture vers un tube bidirectionnel fermé côté écriture" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr : la longueur %g n'est pas >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr : la longueur %g n'est pas >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr : la longueur %g n'est pas entière, elle sera tronquée" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr : la longueur %g est trop grande, tronquée à %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr : l'index de début %g n'est pas valide, utilisation de 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr : l'index de début %g n'est pas un entier, il sera tronqué" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr : la chaîne source est de longueur nulle" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr : l'index de début %g est au-delà de la fin de la chaîne" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -864,159 +867,164 @@ "substr : la longueur %g à partir de %g dépasse la fin du 1er argument (%lu)" # Exemple : gawk --lint 'BEGIN { PROCINFO["strftime"]=123 ; print strftime() }' -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime : la valeur de formatage PROCINFO[\"strftime\"] est de type " "numérique" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "%s : le deuxième argument reçu n'est pas numérique" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: deuxième argument négatif ou trop grand pour time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: deuxième argument hors plage pour time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime : la chaîne de formatage est vide" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "" "mktime : au moins l'une des valeurs est en dehors de la plage par défaut" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "La fonction « system » est interdite en mode bac à sable" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print : tentative d'écriture vers un tube bidirectionnel fermé côté écriture" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "référence à un champ non initialisé « $%d »" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "%s : le premier argument n'est pas numérique" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match : le troisième argument n'est pas un tableau" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s : impossible d'utiliser %s comme troisième argument" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub : le troisième argument « %.*s » sera traité comme un 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s : un appel indirect nécessite deux arguments" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "un appel indirect à %s demande au moins 2 arguments" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f) : les valeurs négatives sont interdites" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f) : les valeurs non entières seront tronquées" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f) : un décalage trop grand donne des résultats inattendus" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f) : les valeurs négatives sont interdites" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f) : les valeurs non entières seront tronquées" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f) : un décalage trop grand donnera des résultats inattendus" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "%s : appelé avec moins de deux arguments" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "%s : l'argument %d n'est pas numérique" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s : argument %d : la valeur négative %g est interdite" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f) : les valeurs négatives sont interdites" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f) : les valeurs non entières seront tronquées" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext : « %s » n'est pas dans un catégorie valide de la locale" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv : le troisième argument n'est pas un tableau" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv : tentative de division par zéro" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof : le deuxième argument n'est pas un tableau" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -"typeof : utilisation de drapeaux incorrects « %s ». Merci de nous remonter " -"l'erreur." +"typeof a détecté une combinaison de drapeaux incorrects « %s ». Merci de " +"nous remonter l'erreur." -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof : type de paramètre incorrect « %s »" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof : type d'argument inconnu « %s »" @@ -1026,440 +1034,439 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "Impossible d'ajouter un fichier (%.*s) à ARGV en mode bac à sable" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Entrez des instructions (g)awk. Terminez avec « end »\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "numéro de trame incorrect : %d" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "info : option incorrecte - « %s »" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." -msgstr "source « %s » : déjà chargée." +msgid "source: `%s': already sourced" +msgstr "source « %s » : déjà chargée" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." -msgstr "sauve « %s » : commande interdite." +msgid "save: `%s': command not permitted" +msgstr "sauve « %s » : commande interdite" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "Impossible d'utiliser « commands » pour des points d'arrêt ou de surveillance" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "Aucun point d'arrêt ou de surveillance défini" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "numéro de point d'arrêt ou de surveillance incorrect" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" "Entrez les commandes exécutées lors de l'appui de %s %d, une par ligne.\n" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "Terminez par la commande « end »\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "« end » n'est valable que dans « commands » ou « eval »" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "« silent » n'est valable que dans « commands »" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "trace : option incorrecte - « %s »" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition : numéro de point d'arrêt ou de surveillance incorrect" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "l'argument n'est pas une chaîne" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "option : paramètre incorrect - « %s »" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "fonction inconnue - « %s »" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "enable : option incorrecte - « %s »" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "spécification de plage incorrecte : %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "numéro de champ non numérique" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "valeur non numérique trouvée, nombre attendu" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "valeur entière non nulle" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - affiche la trace de tout ou des N dernières trames (du début " -"si N < 0)." +"si N < 0)" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -"break [[fichier:]N|fonction] - définit un point d'arrêt à l'endroit indiqué." +"break [[fichier:]N|fonction] - définit un point d'arrêt à l'endroit indiqué" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[fichier:]N|fonction] - détruit un point d'arrêt existant." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" +msgstr "clear [[fichier:]N|fonction] - détruit un point d'arrêt existant" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [no] - débute une liste de commande à lancer aux points d'arrêt ou " -"de surveillance." +"de surveillance" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -"condition no [expr] - défini ou détruit une condition d'arrêt ou de " -"surveillance." +"condition no [expr] - définit ou détruit une condition d'arrêt ou de " +"surveillance" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [NB] - continue le programme en cours." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [NB] - continue le programme en cours" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "delete [points d'arrêt] [plage] - détruit les points d'arrêt indiqués." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "delete [points d'arrêt] [plage] - détruit les points d'arrêt indiqués" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -"disable [points d'arrêt] [plage] - désactive les points d'arrêt indiqués." +"disable [points d'arrêt] [plage] - désactive les points d'arrêt indiqués" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." -msgstr "display [var] - affiche la valeur de la variable à chaque arrêt." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" +msgstr "display [var] - affiche la valeur de la variable à chaque arrêt" -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] - descend de N trames dans la pile." +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [N] - descend de N trames dans la pile" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -"dump [fichier] - vide les instructions vers la sortie standard ou un fichier." +"dump [fichier] - recopie les instructions vers la sortie standard ou un " +"fichier" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -msgstr "" -"enable [once|del] [points d'arrêt] [plage] - active les points d'arrêt." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" +msgstr "enable [once|del] [points d'arrêt] [plage] - active les points d'arrêt" -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end - termine une liste de commandes ou d'instructions awk." +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end - termine une liste de d'instructions awk ou de commandes" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval instructions|[p1, p2, ...] - évalue des instructions awk." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval instructions|[p1, p2, ...] - évalue des instructions awk" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." -msgstr "exit - (identique à quit) sort du débogueur." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit - (identique à quit) sort du débogueur" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." -msgstr "finish - exécute jusqu'au retour de la trame sélectionnée de la pile." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" +msgstr "finish - exécute jusqu'au retour de la trame sélectionnée de la pile" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - sélectionne et affiche la trame N de la pile." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] - sélectionne et affiche la trame N de la pile" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -"help [commande] - affiche la liste des commandes ou explique la commande." +"help [commande] - affiche la liste des commandes ou explique la commande" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore N NB - ignore les NB prochaines occurrences du point d'arrêt N." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" +msgstr "ignore N NB - ignore les NB prochaines occurrences du point d'arrêt N" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info sujet - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -"list [-|+|[fichier:]no_ligne|fonction|plage] - affiche les lignes indiquées." +"list [-|+|[fichier:]no_ligne|fonction|plage] - affiche les lignes indiquées" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." -msgstr "next [NB] - avance ligne par ligne, sans détailler les sous-routines." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" +msgstr "next [NB] - avance ligne par ligne, sans détailler les sous-routines" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -"nexti [NB] - avance d'une instruction, sans détailler les sous-routines." +"nexti [NB] - avance d'une instruction, sans détailler les sous-routines" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [nom[=valeur]] - affiche ou définit les options du débogueur." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [nom[=valeur]] - affiche ou définit les options du débogueur" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." -msgstr "print var [var] - affiche la valeur d'une variable ou d'un tableau." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "print var [var] - affiche la valeur d'une variable ou d'un tableau" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." -msgstr "printf format, [arg], ... - sortie formatée." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf format, [arg], ... - sortie formatée" -#: command.y:871 -msgid "quit - exit debugger." -msgstr "quit - sort du débogueur." +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit - sort du débogueur" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." -msgstr "return [valeur] - fait revenir à son appelant la trame sélecionnée." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" +msgstr "" +"return [valeur] - fait revenir la trame choisie de la pile vers son appelant" -#: command.y:875 -msgid "run - start or restart executing program." -msgstr "run - démarre et redémarre l'exécution du programme." +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run - démarre et redémarre l'exécution du programme" -#: command.y:878 -msgid "save filename - save commands from the session to file." -msgstr "" -"save fichier - enregistre les commandes de la sessions dans un fichier." +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save fichier - enregistre les commandes de la sessions dans un fichier" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." -msgstr "set var = valeur - assigne une valeur à une variable scalaire." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" +msgstr "set var = valeur - assigne une valeur à une variable scalaire" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - suspend les messages habituels lors des points d'arrêt et de " -"surveillance." +"surveillance" -#: command.y:885 -msgid "source file - execute commands from file." -msgstr "source fichier - exécute les commandes du fichier." - -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." -msgstr "step [NB] - avance jusqu'à une ligne différente du code source." - -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [NB] - avance d'une instruction exactement." - -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[fichier:]N|fonction] - définit un point d'arrêt temporaire." - -#: command.y:893 -msgid "trace on|off - print instruction before executing." -msgstr "trace on|off - affiche les instructions avant de les exécuter." +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source fichier - exécute les commandes du fichier" + +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" +msgstr "step [NB] - avance jusqu'à une ligne différente du code source" + +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [NB] - avance d'une instruction exactement" + +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[fichier:]N|fonction] - définit un point d'arrêt temporaire" + +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off - affiche les instructions avant de les exécuter" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" "undisplay [N] - retire la ou les variables de la liste d'affichage " -"automatique." +"automatique" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[fichier:]N|fonction] - exécution jusqu'à dépasser la ligne courant " -"ou la ligne N, dans la trame actuelle." +"ou la ligne N, dans la trame actuelle" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] - enlève la ou les variables de la liste de surveillance." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] - enlève la ou les variables de la liste de surveillance" -#: command.y:901 -msgid "up [N] - move N frames up the stack." -msgstr "up [N] - remonte de N trames dans la pile." +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [N] - remonte de N trames dans la pile" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." -msgstr "watch var - définit un point de surveillance pour une variable." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch var - définit un point de surveillance pour une variable" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] - (identique à backtrace) affiche la trace de tout ou des N " -"dernières trames (du début si N < 0)." +"dernières trames (du début si N < 0)" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "erreur : " -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "impossible de lire la commande : %s\n" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "impossible de lire la commande : %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "la commande contient un caractère incorrect" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "commande inconnue - « %.*s », essayez « help »" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "Caractère incorrect" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "commande inconnue : %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." -msgstr "affiche ou définit le nombre de lignes du fichier d'historique." +msgid "set or show the number of lines to keep in history file" +msgstr "affiche ou définit le nombre de lignes du fichier d'historique" #: debug.c:259 -msgid "set or show the list command window size." -msgstr "affiche ou définit la taille de fenêtre pour la commande list." +msgid "set or show the list command window size" +msgstr "affiche ou définit la taille de fenêtre pour la commande list" #: debug.c:261 -msgid "set or show gawk output file." -msgstr "affiche ou définit le fichier de sortie de gawk." +msgid "set or show gawk output file" +msgstr "affiche ou définit le fichier de sortie de gawk" #: debug.c:263 -msgid "set or show debugger prompt." -msgstr "affiche ou définit l'invite du débogueur." +msgid "set or show debugger prompt" +msgstr "affiche ou définit l'invite du débogueur" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" -"affiche ou (dés)active l'enregistrement de l'historique (valeur=on|off)." +"affiche ou (dés)active l'enregistrement de l'historique (valeur=on|off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." -msgstr "affiche ou (dés)active l'enregistrement des options (valeur=on|off)." +msgid "(un)set or show saving of options (value=on|off)" +msgstr "affiche ou (dés)active l'enregistrement des options (valeur=on|off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." -msgstr "affiche ou (dés)active le traçage des instructions (valeur=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" +msgstr "affiche ou (dés)active le traçage des instructions (valeur=on|off)" #: debug.c:358 -msgid "program not running." -msgstr "le programme n'est pas en cours." +msgid "program not running" +msgstr "le programme n'est pas en cours" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "le fichier source « %s » est vide.\n" -#: debug.c:493 -msgid "no current source file." -msgstr "pas de fichier source courant." +#: debug.c:502 +msgid "no current source file" +msgstr "pas de fichier source courant" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "impossible de trouver le fichier source nommé « %s » : %s" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -"ATTENTION : fichier source « %s » modifié après compilation du programme.\n" +"attention : fichier source « %s » modifié après la compilation du " +"programme.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" -msgstr "numéro de ligne %d hors limite ; « %s » a %d lignes" +msgstr "numéro de ligne %d hors limite ; « %s » a %d lignes" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "fin de fichier inattendue lors de la lecture de « %s », ligne %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "fichier source « %s » modifié depuis le début d'exécution du programme" # c-format -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Fichier source courant : %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Nombre de lignes : %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Fichier source (lignes) : %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1467,54 +1474,54 @@ "Numéro Post Activé Position\n" "\n" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" -msgstr "\tnb occurrences = %ld\n" +msgid "\tnumber of hits = %ld\n" +msgstr "\tnombre d'occurrences = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" -msgstr "\tignore %ld prochaines occurrences\n" +msgstr "\tignore les %ld prochaines occurrences\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tcondition d'arrêt : %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tcommandes :\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Trame courante : " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Appelée par la trame : " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Appelant de la trame : " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Aucune dans main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Aucun argument.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Aucune variable locale.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1522,7 +1529,7 @@ "Liste des variables définies :\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1530,7 +1537,7 @@ "Liste des fonctions définies :\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1538,7 +1545,7 @@ "Variables affichées automatiquement :\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1546,385 +1553,390 @@ "Variables inspectées :\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "pas de symbole « %s » dans le contexte actuel\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "« %s » n'est pas un tableau\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = champ non initialisé\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "le tableau « %s » est vide\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" -msgstr "[\"%.*s\"] n'est pas dans le tableau « %s »\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "l'indice « %.*s » n'est pas dans le tableau « %s »\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "« %s[\"%.*s\"] » n'est pas un tableau\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "« %s » n'est pas une variable scalaire" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "" "tentative d'utilisation du tableau « %s[\"%.*s\"] » en contexte scalaire" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "tentative d'utiliser le scalaire « %s[\"%.*s\"] » comme tableau" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "« %s » est une fonction" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "le point de surveillance %d est inconditionnel\n" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" -msgstr "Aucune entrée d'affichage numéro %ld" +msgid "no display item numbered %ld" +msgstr "aucune entrée d'affichage numéro %ld" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" -msgstr "Aucune entrée de surveillance numéro %ld" +msgid "no watch item numbered %ld" +msgstr "aucune entrée de surveillance numéro %ld" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" -msgstr "%d: [\"%.*s\"] n'est pas dans le tableau « %s »\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d : l'indice « %.*s » n'est pas dans le tableau « %s »\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "tentative d'utiliser un scalaire comme tableau" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" "Point de surveillance %d détruit, car son paramètre est hors contexte.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Affichage %d détruit, car son paramètre est hors contexte\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr "dans le fichier « %s », ligne %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " à « %s »:%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tdans " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "D'autres trames de la pile suivent...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "Numéro de trame incorrect" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Note : point d'arrêt %d (activé, ignore %ld occurrences) déjà défini à %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Note : point d'arrêt %d (activé) déjà défini à %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Note : point d'arrêt %d (désactivé, ignore %ld occurrences) déjà défini à %s:" "%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Note : point d'arrêt %d (désactivé) déjà défini à %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Point d'arrêt %d défini dans le fichier « %s » ligne %d\n" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "Impossible de définir un point d'arrêt dans le fichier « %s »\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" -msgstr "numéro de ligne %d dans le fichier « %s » hors limite" +msgid "line number %d in file `%s' is out of range" +msgstr "le numéro de ligne %d est hors du fichier « %s »" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "erreur interne : impossible de trouver la règle\n" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "Impossible de définir un point d'arrêt à « %s:%d »:\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "Impossible de définir un point d'arrêt dans la fonction « %s »\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" "le point d'arrêt %d défini sur le fichier « %s », ligne %d est " "inconditionnel\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "numéro de ligne %d dans le fichier « %s » hors limite" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Point d'arrêt %d supprimé" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Aucun point d'arrêt à l'appel de la fonction « %s »\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Pas de point d'arrêt sur le fichier « %s », ligne #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "Numéro de point d'arrêt incorrect" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Supprimer tous les points d'arrêt (o ou n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "o" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Ignorera les prochaines %ld occurrences du point d'arrêt %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "S'arrêtera à la prochaine occurrence du point d'arrêt %d.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" "Seuls les programmes fournis via l'option « -f » peuvent être débogués.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Échec de redémarrage du débogueur" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Programme en cours. Reprendre depuis le début (o/n) ? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Programme non redémarré\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "erreur : impossible de redémarrer, opération interdite\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "erreur (%s) : impossible de redémarrer, suite des commandes ignorées\n" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Démarrage du programme :\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Le programme s'est terminé en erreur avec le code de retour : %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Le programme s'est terminé correctement avec le code de retour : %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "Le programme est en cours. Sortir quand même (o/n) ?" -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" -msgstr "Auncun arrêt à un point d'arrêt : argument ignoré.\n" +msgstr "Aucun arrêt à un point d'arrêt : argument ignoré.\n" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." -msgstr "point d'arrêt %d incorrect." +msgid "invalid breakpoint number %d" +msgstr "point d'arrêt %d incorrect" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Les %ld prochaines occurrences du point d'arrêt %d seront ignorées.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "« finish » n'a pas de sens dans la trame initiale main()\n" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "S'exécute jusqu'au retour de " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "« return » n'a pas de sens dans la trame initiale main()\n" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "Impossible de trouver la position indiquée dans la fonction « %s »\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "ligne source %d incorrecte dans le fichier « %s »" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "Position %d introuvable dans le fichier « %s »\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "élément absent du tableau\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "variable sans type\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Arrêt dans %s...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "« finish » n'a pas de sens avec un saut non local « %s »\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "« until » n'a pas de sens avec un saut non local « %s »\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" -msgstr "\t-----[Entrée] : continuer ; [q] + [Entrée] : quitter-----" +msgstr "\t-----[Entrée] : continuer ; [q] + [Entrée] : quitter-----" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] est absent du tableau « %s »" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "envoi de la sortie vers stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "nombre incorrect" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" -msgstr "« %s » interdit dans ce contexte ; instruction ignorée" +msgstr "« %s » interdit dans ce contexte ; instruction ignorée" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" -msgstr "« return » interdit dans ce contexte ; instruction ignorée" +msgstr "« return » interdit dans ce contexte ; instruction ignorée" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" -msgstr "Pas de symbole « %s » dans le contexte actuel" +msgid "no symbol `%s' in current context" +msgstr "pas de symbole « %s » dans le contexte actuel" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "type de nÅ“ud %d inconnu" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "code opération %d inconnu" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "le code opération %s n'est pas un opérateur ou un mot-clef" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "débordement de tampon dans genflag2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1935,71 +1947,71 @@ "\t# Pile des appels de fonctions :\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "« IGNORECASE » est une extension gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "« BINMODE » est une extension gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "la valeur « %s » de BINMODE n'est pas valide, 3 utilisé à la place" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "spécification de « %sFMT » erronée « %s »" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "désactivation de « --lint » en raison d'une affectation à « LINT »" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "référence à un argument non initialisé « %s »" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "référence à une variable non initialisée « %s »" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "tentative de référence à un champ via une valeur non numérique" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "tentative de référence à un champ via une chaîne nulle" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "tentative d'accès au champ %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "référence à un champ non initialisé « $%ld »" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "la fonction « %s » a été appelée avec trop d'arguments" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: type « %s » inattendu" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "tentative de division par zéro dans « /= »" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "tentative de division par zéro dans « %%= »" @@ -2096,78 +2108,78 @@ msgid "dynamic loading of libraries is not supported" msgstr "chargement dynamique des bibliothèques impossible" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat : impossible de lire le lien symbolique « %s »" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "stat : le premier argument n'est pas une chaîne" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "split : le deuxième argument n'est pas un tableau" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat : paramètres incorrects" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init : impossible de créer la variable %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts n'est pas compatible avec ce système" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element : impossible de créer le tableau, mémoire saturée" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element : impossible de définir l'élément" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element : impossible de définir l'élément" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element : impossible de définir l'élément" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process : impossible de créer le tableau" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process : impossible de définir l'élément" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts : appelé avec un nombre d'arguments incorrects, attendu : 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "fts : le premier argument n'est pas un tableau" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "fts : le deuxième argument n'est pas un nombre" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "fts : le troisième argument n'est pas un tableau" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts : impossible d'aplatir le tableau\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts : on ignore le drapeau sournois FTS_NOSTAT..." @@ -2307,7 +2319,7 @@ msgid "chr: first argument is not a number" msgstr "chr : le premier argument n'est pas un nombre" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of : échec de opendir/fdopendir : %s" @@ -2381,7 +2393,7 @@ #: extension/time.c:141 msgid "gettimeofday: not supported on this platform" -msgstr "gettimeofday : n'est pas disponible sur cette plateforme" +msgstr "gettimeofday : n'est pas disponible sur cette plate-forme" #: extension/time.c:162 msgid "sleep: missing required numeric argument" @@ -2393,190 +2405,195 @@ #: extension/time.c:202 msgid "sleep: not supported on this platform" -msgstr "sleep : n'est pas disponible sur cette plateforme" +msgstr "sleep : n'est pas disponible sur cette plate-forme" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "champ d'entrée trop grand" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "une valeur négative a été assignée à NF" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "décrémenter NF n'est pas portable vers de nombreux awk" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "accéder aux champs depuis un END pourrait ne pas être portable" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split : le quatrième argument est une extension gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split : le quatrième argument n'est pas un tableau" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s : impossible d'utiliser %s comme 4e argument" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split : le deuxième argument n'est pas un tableau" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split : impossible d'utiliser le même tableau comme deuxième et quatrième " "argument" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split : impossible d'utiliser un sous-tableau du deuxième argument en " "quatrième argument" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split : impossible d'utiliser un sous-tableau du quatrième argument en " "deuxième argument" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "" "split : utiliser une chaîne vide en troisième argument est une extension non " "standard" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit : le quatrième argument n'est pas un tableau" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit : le deuxième argument n'est pas un tableau" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit : le troisième argument n'est pas un tableau" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit : impossible d'utiliser le même tableau comme deuxième et quatrième " "argument" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit : impossible d'utiliser un sous-tableau du deuxième argument en " "quatrième argument" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit : impossible d'utiliser un sous-tableau du quatrième argument en " "deuxième argument" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "« FIELDWIDTHS » est une extension gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "« * » doit être le dernier élément de FIELDWIDTHS" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "valeur de FIELDWIDTHS incorrecte, pour le champ %d, près de « %s »" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "utiliser une chaîne vide pour « FS » est une extension gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "" "l'ancien awk n'accepte pas les expr. rationnelles comme valeur de « FS »" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "« FPAT » est une extension gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node : retval nul reçu" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node : mode MPFR non utilisé" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node : MPFR non disponible" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node : type numérique incorrect « %d »" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func : réception d'un espace de noms NULL" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" "node_to_awk_value : utilisation de drapeaux numériques incorrects « %s ». " -"Merci de nous remonter l'erreur." +"Merci de nous remonter l'erreur" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value : node nul reçu" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value : val nul reçu" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value : utilisation de drapeaux incorrects « %s ». Merci de nous " -"remonter l'erreur." +"remonter l'erreur" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element : tableau nul reçu" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element : indice nul reçu" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed : impossible de convertir l'indice %d en %s" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed : impossible de convertir la valeur %d en %s" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr : MPFR non disponible" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "fin de la règle BEGINFILE non trouvée" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "impossible d'ouvrir le type de fichier « %s » inconnu en « %s »" @@ -2586,31 +2603,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "L'argument « %s » de la ligne de commande est un répertoire : ignoré" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "impossible d'ouvrir le fichier « %s » en lecture : %s" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "échec de la fermeture du fd %d (« %s ») : %s" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "« %.*s » utilisé comme fichier d'entrée et de sortie" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "« %.*s » utilisé comme fichier d'entrée et tube d'entrée" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "« %.*s » utilisé comme fichier d'entrée et tube bidirectionnel" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "« %.*s » utilisé comme fichier d'entrée et tube de sortie" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "mélange non nécessaire de « > » et « >> » pour le fichier « %.*s »" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "« %.*s » utilisé comme tube d'entrée et fichier de sortie" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "« %.*s » utilisé comme fichier de sortie et tube de sortie" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "« %.*s » utilisé comme fichier de sortie et tube bidirectionnel" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "« %.*s » utilisé comme tube d'entrée et tube de sortie" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "« %.*s » utilisé comme tube d'entrée et tube bidirectionnel" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "« %.*s » utilisé comme tube de sortie et tube bidirectionnel" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "les redirections sont interdites mode bac à sable" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "l'expression dans la redirection « %s » est un nombre" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "l'expression dans la redirection « %s » donne une chaîne nulle" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2618,298 +2690,299 @@ "le fichier « %.*s » de la redirection « %s » pourrait être le résultat d'une " "expression booléenne" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "mélange non nécessaire de « > » et « >> » pour le fichier « %.*s »" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file : impossible de créer le tube « %s » avec le fd %d" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "impossible d'ouvrir le tube « %s » en sortie : %s" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "impossible d'ouvrir le tube « %s » en entrée : %s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "" -"création d'un connecteur via get_file non disponible sur cette plateforme " +"création d'un connecteur via get_file non disponible sur cette plate-forme " "pour « %s » avec le fd %d" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" "impossible d'ouvrir un tube bidirectionnel « %s » en entrée-sortie : %s" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "impossible de rediriger depuis « %s » : %s" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "impossible de rediriger vers « %s » : %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "limite système du nombre de fichiers ouverts atteinte : début du " "multiplexage des descripteurs de fichiers" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." -msgstr "échec de la fermeture de « %s » : %s." +msgid "close of `%s' failed: %s" +msgstr "échec de fermeture de « %s » : %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "trop de fichiers d'entrées ou de tubes ouverts" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close : le deuxième argument doit être « to » ou « from »" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -"close : « %.*s » n'est ni un fichier ouvert, ni un tube ou un co-processus" +"close : « %.*s » n'est ni un fichier ouvert, ni un tube ou un coprocessus" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "fermeture d'une redirection qui n'a jamais été ouverte" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close : la redirection « %s » n'a pas été ouverte avec « |& », deuxième " "argument ignoré" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "résultat d'échec (%d) sur la fermeture du tube « %s » : %s" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "" +"résultat d'échec (%d) sur la fermeture du tube bidirectionnel « %s » : %s" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "résultat d'échec (%d) sur la fermeture du fichier « %s » : %s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "aucune fermeture explicite du connecteur « %s » fournie" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" -msgstr "aucune fermeture explicite du co-processus « %s » fournie" +msgstr "aucune fermeture explicite du coprocessus « %s » fournie" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "aucune fermeture explicite du tube « %s » fournie" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "aucune fermeture explicite du fichier « %s » fournie" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush : impossible de vider la sortie standard : %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush : impossible de vider la sortie d'erreur standard : %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "erreur lors de l'écriture vers la sortie standard : %s" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "erreur lors de l'écriture vers l'erreur standard : %s" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." -msgstr "échec du vidage du tube « %s » : %s." +msgid "pipe flush of `%s' failed: %s" +msgstr "échec du vidage du tube « %s » : %s" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." -msgstr "échec du vidage du tube vers « %s » par le co-processus : %s." +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "échec du vidage du tube vers « %s » par le coprocessus : %s" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." -msgstr "échec du vidage vers le fichier « %s » : %s." +msgid "file flush of `%s' failed: %s" +msgstr "échec du vidage vers le fichier « %s » : %s" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "port local %s incorrect dans « /inet » : %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "port local %s incorrect dans « /inet »" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "informations sur l'hôte et le port distants (%s, %s) incorrectes : %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "informations sur l'hôte et le port distants (%s, %s) incorrectes" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "les communications TCP/IP ne sont pas disponibles" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "impossible d'ouvrir « %s », mode « %s »" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "échec de la fermeture du pty maître : %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "échec de la fermeture de stdout du processus fils : %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "échec du déplacement du pty esclave vers le stdout du processus fils (dup : " "%s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "échec de fermeture du stdin du processus fils : %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "échec du déplacement du pty esclave vers le stdin du processus fils (dup : " "%s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "échec de la fermeture du pty esclave : %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "impossible de créer un processus fils ou d'ouvrir un pty" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "échec du déplacement du tube vers stdout du processus fils (dup : %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "échec de déplacement du tube vers stdin du processus fils (dup : %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "échec de la restauration du stdout dans le processus parent" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "échec de la restauration du stdin dans le processus parent" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "échec de la fermeture du tube : %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "« |& » non disponible" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "impossible d'ouvrir le tube « %s » : %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "impossible de créer le processus fils pour « %s » (fork : %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" "getline : tentative de lecture vers un tube bidirectionnel fermé côté lecture" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser : pointeur NULL reçu" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "l'analyseur d'entrée « %s » est en conflit avec l'analyseur « %s » déjà " "installé" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'analyseur d'entrée « %s » n'a pu ouvrir « %s »" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper : pointeur NULL reçu" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "le filtre de sortie « %s » est en conflit avec le filtre « %s » déjà installé" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "le filtre de sortie « %s » n'a pu ouvrir « %s »" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor : pointeur NULL reçu" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2918,219 +2991,223 @@ "le gestionnaire bidirectionnel « %s » est en conflit avec le gestionnaire " "« %s » déjà installé" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "le gestionnaire bidirectionnel « %s » n'a pu ouvrir « %s »" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "le fichier de données « %s » est vide" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "impossible d'allouer plus de mémoire d'entrée" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" "l'utilisation d'un « RS » de plusieurs caractères est une extension gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "les communications IPv6 ne sont pas disponibles" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "variable d'environnement « POSIXLY__CORRECT » définie : activation de « --" "posix »" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "« --posix » prend le pas sur « --traditional »" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "« --posix » et « --traditional » prennent le pas sur « --non-decimal-data »" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "« --posix » prend le pas sur « --characters-as-bytes »" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "l'exécution de %s en mode setuid root peut être un problème de sécurité" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "impossible d'activer le mode binaire sur stdin : %s" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "impossible d'activer le mode binaire sur stdout : %s" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "impossible d'activer le mode binaire sur stderr : %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "aucun programme !" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Utilisation : %s [options GNU ou POSIX] -f fichier_prog [--] fichier ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Utilisation : %s [options GNU ou POSIX] [--] %cprogramme%c fichier ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (standard)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichier_prog\t\t--file=fichier_prog\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valeur\t\t--assign=var=valeur\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (extensions)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichier]\t\t--dump-variables[=fichier]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fichier]\t\t--debug[=fichier]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programme'\t\t--source='programme'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichier\t\t--exec=fichier\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i fichier\t\t--include=fichier\n" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-I\t\t\t--trace\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliothèque\t\t--load=bibliothèque\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fichier]\t\t--pretty-print[=fichier]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichier]\t\t--profile[=fichier]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z nom-locale\t\t--locale=nom-locale\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3153,7 +3230,7 @@ "traduction-gawk@tigreraye.org.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3163,7 +3240,7 @@ "Par défaut, il lit l'entrée standard et écrit sur la sortie standard.\n" "\n" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -3174,7 +3251,7 @@ "\t%s '{ somme += $1 }; END { print somme }' fichier\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3194,7 +3271,7 @@ "version ultérieure de votre choix.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3209,7 +3286,7 @@ "General Public License).\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3218,11 +3295,11 @@ "(GNU General Public License) avec ce programme. Sinon, consultez\n" "http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ne définit pas le FS comme étant une tabulation en awk POSIX" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3231,160 +3308,165 @@ "%s : « %s » l'argument de « -v » ne respecte pas la forme « var=valeur »\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "« %s » n'est pas un nom de variable autorisé" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "« %s » n'est pas un nom de variable, recherche du fichier « %s=%s »" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "impossible d'utiliser le mot clef gawk « %s » comme variable" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "impossible d'utiliser la fonction « %s » comme variable" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "exception du traitement en virgule flottante" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "fatal : erreur interne" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "fatal : erreur interne : erreur de segmentation" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "fatal : erreur interne : débordement de la pile" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "aucun descripteur fd %d pré-ouvert" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "impossible de pré-ouvrir /dev/null pour le descripteur fd %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "argument vide de l'option « -e / --source » ignoré" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "« --profile » prend le pas sur « --pretty-print »" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M sans effet : version compilée sans MPFR/GMP" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s : option « -W %s » non reconnue, ignorée\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s : l'option requiert un argument - %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "la valeur « %.*s » de PREC est incorrecte" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" -msgstr "la valeur « %.*s » de RNDMODE est incorrecte" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "la valeur « %.*s » de ROUNDMODE est incorrecte" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2 : le premier argument n'est pas numérique" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2 : le deuxième argument n'est pas numérique" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s : l'argument est négatif %.*s" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int : l'argument n'est pas numérique" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl : l'argument n'est pas numérique" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg) : valeur négative interdite" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg) : les valeurs non entières seront tronquées" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd) : les valeurs négatives sont interdites" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s : argument reçu non numérique #%d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s : l'argument #%d a une valeur incorrecte %Rg, utilisation de 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s : argument #%d : la valeur négative %Rg est interdite" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s : argument #%d : la valeur non entière %Rg sera tronquée" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s : argument #%d : la valeur négative %Zd est interdite" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and : appelé avec moins de 2 arguments" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or : appelé avec moins de 2 arguments" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor : appelé avec moins de 2 arguments" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand : l'argument n'est pas numérique" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv : le premier argument n'est pas numérique" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv : le deuxième argument reçu n'est pas numérique" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "ligne de commande:" @@ -3393,20 +3475,20 @@ msgid "could not make typed regex" msgstr "impossible de créer une expression rationnelle typée" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "l'ancien awk ne dispose pas de la séquence d'échappement « \\%c »" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX n'autorise pas les séquences d'échappement « \\x »" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "aucun chiffre hexadécimal dans la séquence d'échappement « \\x » " -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3415,18 +3497,18 @@ "la séquence d'échappement hexa. \\x%.*s de %d caractères ne sera " "probablement pas interprétée comme vous l'imaginez" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "séquence d'échappement « \\%c » traitée comme un simple « %c »" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Données multioctets incorrectes détectées. Possible incohérence entre " -"données et paramètres régionaux (locale)." +"données et paramètres régionaux (locale)" #: posix/gawkmisc.c:177 #, c-format @@ -3471,11 +3553,11 @@ msgid "internal error: %s with null vname" msgstr "erreur interne : %s avec un vname nul" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "erreur interne : fonction interne avec un fname nul" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3484,7 +3566,7 @@ "%s# Extensions chargées (via -l ou @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3495,12 +3577,12 @@ "# Fichiers inclus (via -i ou @include)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profile gawk, créé %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3509,7 +3591,7 @@ "\n" "\t# Fonctions, par ordre alphabétique\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str : type de redirection %d inconnu" @@ -3547,39 +3629,39 @@ "le composant d'expression rationnelle « %.*s » devrait probablement être " "« [%.*s] »" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "[ non apparié" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "classe de caractères incorrecte" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "la syntaxe des classes de caractères est [[:space:]], et non [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "échappement \\ non terminé" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "contenu de \\{\\} incorrect" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "expression rationnelle trop grande" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "( non apparié" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "aucune syntaxe indiquée" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") non apparié" @@ -3711,18 +3793,12 @@ msgid "No previous regular expression" msgstr "Aucune expression rationnelle précédente" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" "fonction « %s » : impossible d'utiliser la fonction « %s » comme paramètre" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "impossible de rétablir (pop) le contexte principal (main)" - -#~ msgid "fts: first parameter is not an array" -#~ msgstr "fts : le premier argument n'est pas un tableau" - -#~ msgid "fts: third parameter is not an array" -#~ msgstr "fts : le troisième argument n'est pas un tableau" diff -urN gawk-5.1.0/po/gawk.pot gawk-5.1.1/po/gawk.pot --- gawk-5.1.0/po/gawk.pot 2020-04-14 14:48:02.000000000 +0300 +++ gawk-5.1.1/po/gawk.pot 2021-10-27 07:58:41.000000000 +0300 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gawk 5.1.0\n" +"Project-Id-Version: gawk 5.1.1\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,548 +17,563 @@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" msgstr "" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "" -#: array.c:844 +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "" -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "" -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +msgid "there were shadowed variables" msgstr "" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -576,8 +591,8 @@ msgid "standard error" msgstr "" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "" @@ -612,7 +627,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "" @@ -630,330 +645,321 @@ msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "" @@ -963,858 +969,861 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" msgstr "" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +msgid "down [N] - move N frames down the stack" msgstr "" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +msgid "end - end a list of commands or awk statements" msgstr "" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" msgstr "" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" msgstr "" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" msgstr "" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" msgstr "" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" msgstr "" -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +msgid "quit - exit debugger" msgstr "" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +msgid "run - start or restart executing program" msgstr "" -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +msgid "save filename - save commands from the session to file" msgstr "" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" msgstr "" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +msgid "source file - execute commands from file" msgstr "" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" msgstr "" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +msgid "trace on|off - print instruction before executing" msgstr "" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "" -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +msgid "up [N] - move N frames up the stack" msgstr "" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" msgstr "" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "" -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" #: debug.c:259 -msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "" #: debug.c:261 -msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "" #: debug.c:263 -msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" #: debug.c:358 -msgid "program not running." +msgid "program not running" msgstr "" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +msgid "no current source file" msgstr "" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr "" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "" -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" +msgid "no symbol `%s' in current context" msgstr "" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1822,71 +1831,71 @@ "\n" msgstr "" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "" @@ -1971,78 +1980,78 @@ msgid "dynamic loading of libraries is not supported" msgstr "" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" @@ -2178,7 +2187,7 @@ msgid "chr: first argument is not a number" msgstr "" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2265,169 +2274,174 @@ msgid "sleep: not supported on this platform" msgstr "" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "" @@ -2437,524 +2451,583 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" msgstr "" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -2966,14 +3039,14 @@ "\n" msgstr "" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -2981,7 +3054,7 @@ "\t%s -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -2993,7 +3066,7 @@ "\n" msgstr "" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3002,177 +3075,182 @@ "\n" msgstr "" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "" @@ -3181,35 +3259,35 @@ msgid "could not make typed regex" msgstr "" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" #: posix/gawkmisc.c:177 @@ -3249,18 +3327,18 @@ msgid "internal error: %s with null vname" msgstr "" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3268,19 +3346,19 @@ "\n" msgstr "" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" @@ -3310,39 +3388,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "" @@ -3474,11 +3552,11 @@ msgid "No previous regular expression" msgstr "" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "" diff -urN gawk-5.1.0/po/id.po gawk-5.1.1/po/id.po --- gawk-5.1.0/po/id.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/id.po 2021-10-27 07:58:41.000000000 +0300 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2014-08-03 07:30+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" @@ -16,498 +16,511 @@ "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "dari %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "mencoba untuk menggunakan skalar sebagai sebuah array" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "mencoba untuk menggunakan parameter `%s' sebagai sebuah array" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "mencoba untuk menggunakan skalar `%s' sebagai sebuah array" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "mencoba menggunakan array `%s' dalam sebuah konteks skalar" -#: array.c:575 +#: array.c:576 #, fuzzy, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: indeks `%s' tidak dalam array `%s'" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "mencoba untuk menggunakan skalar `%s[\"%.*s\"]' sebagai sebuah array" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, fuzzy, c-format msgid "%s: first argument is not an array" msgstr "asort: argumen ketiga bukan sebuah array" -#: array.c:824 +#: array.c:826 #, fuzzy, c-format msgid "%s: second argument is not an array" msgstr "split: argumen kedua bukan sebuah array" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "asort: cannot use a subarray of first arg for second arg" + +#: array.c:837 +#, fuzzy, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "asort: argumen ketiga bukan sebuah array" -#: array.c:838 +#: array.c:839 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "asort: argumen ketiga bukan sebuah array" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, fuzzy, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "asort: cannot use a subarray of first arg for second arg" -#: array.c:849 +#: array.c:856 #, fuzzy, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "asort: cannot use a subarray of second arg for first arg" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' digunakan dalam aksi" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "fungsi `%s' tidak didefinisikan" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s blok harus memiliki sebuah bagian aksi" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "setiap aturan harus memiliki sebuah pola atau sebuah bagian aksi" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "awk lama tidak mendukung multiple aturan `BEGIN' atau `END'" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' adalah sebuah fungsi bawaan, ini tidak dapat di redefinisi" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "konstanta regexp `//' tampak seperti sebuah komentar C++, tetapi bukan" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "konstanta regexp `/%s/' tampak seperti sebuah komentar C, tetapi bukan" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "duplikasi nilai case dalam tubuh switch: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "Duplikasi `default' terdeteksi dalam tubuh switch" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' diluar sebuah loop tidak diijinkan" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "`continue' diluar sebuah loop tidak diijinkan" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "`next' digunakan dalam aksi %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' digunakan dalam aksi %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "`return' digunakan diluar konteks fungsi" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "plain `print' dalam aturan BEGIN atau AKHIR seharusnya berupa `print \"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' is not allowed with SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' is not allowed with FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' adalah sebuah ekstensi tidak portabel tawk" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "multi tahap dua jalur pipe lines tidak bekerja" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "ekspresi regular di penempatan kanan" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "ekspresi regular di kiri dari operator `~' atau `!~'" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "awk lama tidak mendukung kata kunci `in' kecuali setelah `for'" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "ekspresi regular di kanan dari perbandingan" -#: awkgram.y:1797 +#: awkgram.y:1804 #, fuzzy, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`getline' invalid inside `%s' rule" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "tidak terdireksi `getline' tidak terdefinisi didalam aksi END" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "awk lama tidak mendukung array multi dimensi" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "panggilan dari `length' tanpa tanda kurung tidak portabel" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "indirect adalah sebuah ekstensi gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, fuzzy, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "tidak dapat menggunakan variabel `%s' sebagai fungsi parameter" -#: awkgram.y:2043 +#: awkgram.y:2050 #, fuzzy, c-format msgid "attempt to use non-function `%s' in function call" msgstr "mencoba untuk menggunakan fungsi `%s' sebagai sebuah array" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "ekspresi subscript tidak valid" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "peringatan: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "tidak terduga baris baru atau akhir dari string" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, fuzzy, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "tidak dapat membuka berkas sumber `%s' untuk pembacaan (%s)" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, fuzzy, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "tidak dapat membuka berkas sumber `%s' untuk pembacaan (%s)" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "alasan tidak diketahui" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, fuzzy, c-format msgid "cannot include `%s' and use it as a program file" msgstr "can't include `%s' and use it as a program file" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "tidak dapat membaca berkas sumber `%s'" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "already loaded shared library `%s'" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include adalah sebuah ekstensi gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "empty filename after @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load adalah sebuah ekstensi gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "empty filename after @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "aplikasi teks kosong di baris perintah" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, fuzzy, c-format msgid "cannot read source file `%s': %s" msgstr "tidak dapat membaca berkas sumber `%s' (%s)" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "berkas sumber `%s' kosong" -#: awkgram.y:3310 +#: awkgram.y:3317 #, fuzzy, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "nama kelas karakter tidak valid" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "berkas sumber tidak berakhir dalam baris baru" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "tidak terakhiri regexp akhir denga `\\' diakhir dari berkas" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk regex pemodifikasi `/.../%c' tidak bekerja dalam gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk regex pemodifikasi `/.../%c' tidak bekerja dalam gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "tidak terselesaikan regexp" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "tidak terselesaikan di akhir dari berkas" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "penggunaan dari `\\ #...' kelanjutan baris tidak portabel" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "backslash bukan karakter terakhir di baris" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 #, fuzzy msgid "multidimensional arrays are a gawk extension" msgstr "indirect adalah sebuah ekstensi gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, fuzzy, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX tidak mengijinkan operator `**'" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, fuzzy, c-format msgid "operator `%s' is not supported in old awk" msgstr "operator `^' tidak didukung dalam awk lama" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "string tidak terselesaikan" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 #, fuzzy msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX tidak mengijinkan escapes `\\x'" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 #, fuzzy msgid "backslash string continuation is not portable" msgstr "penggunaan dari `\\ #...' kelanjutan baris tidak portabel" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "karakter '%c' tidak valid dalam ekspresi" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' adalah sebuah ekstensi gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tidak mengijinkan `%s'" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' tidak didukung dalam awk lama" -#: awkgram.y:4500 +#: awkgram.y:4507 #, fuzzy msgid "`goto' considered harmful!" msgstr "`goto' dipertimbangkan berbahaya!\n" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d tidak valid sebagai jumlah dari argumen untuk %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, fuzzy, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: literal string sebagai argumen terakhir dari pergantian tidak memiliki " "efek" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s parameter ketika bukan sebuah objek yang dapat diubah" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "cocok: argumen ketiga adalah sebuah ekstensi gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "tutup: argumen kedua adalah sebuah ekstensi gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "penggunaan dari dcgettext(_\"...\") adalah tidak benar: hapus garis bawah " "yang mengawali" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "penggunaan dari dcngettext(_\"...\") adalah tidak benar: hapus garis bawah " "yang mengawali" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: diterima argumen kedua bukan string" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "fungsi `%s': parameter `%s' bayangan variabel global" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "tidak dapat membuka `%s' untuk penulisan: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "mengirim profile ke standar error" -#: awkgram.y:4930 +#: awkgram.y:4937 #, fuzzy, c-format msgid "%s: close failed: %s" msgstr "%s: tutup gagal (%s)" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() dipanggil dua kali!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "disana tidak ada variabel bayangan." -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "nama fungsi `%s' sebelumnya telah didefinisikan" -#: awkgram.y:5091 +#: awkgram.y:5098 #, fuzzy, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "" "fungsi `%s': tidak dapat menggunakan nama fungsi sebagai nama parameter" -#: awkgram.y:5094 +#: awkgram.y:5101 #, fuzzy, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "fungsi `%s': tidak dapat menggunakan variabel `%s' sebagai fungsi parameter" -#: awkgram.y:5098 +#: awkgram.y:5105 #, fuzzy, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "fungsi `%s': parameter `%s' bayangan variabel global" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "fungsi `%s': parameter #%d, `%s', duplikasi paramter #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "fungsi `%s' dipanggil tetapi tidak pernah didefinisikan" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "fungsi `%s' didefinisikan tetapi tidak pernah dipanggil" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstanta regexp untuk parameter #%d menghasilkan nilai boolean" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -516,65 +529,69 @@ "fungsi `%s' dipanggil dengan spasi diantara nama dan `(',\n" "atau gunakan sebagai sebuah variabel atau sebuah array" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "pembagian dengan nol telah dicoba" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "pembagian dengan nol dicoba dalam `%%'" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "cannot assign a value to the result of a field post-increment expression" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "tidak valid sebagai jumlah dari argumen untuk %s" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "pernyataan tidak memiliki efek" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 #, fuzzy msgid "@namespace is a gawk extension" msgstr "@include adalah sebuah ekstensi gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -593,8 +610,8 @@ msgid "standard error" msgstr "standar keluaran" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: diterima argumen bukan numerik" @@ -633,7 +650,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: `%s' bukan sebuah berkas terbuka, pipe atau co-proses" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, fuzzy, c-format msgid "%s: received non-string first argument" msgstr "indeks: diterima argumen pertama bukan string" @@ -651,184 +668,172 @@ msgid "`length(array)' is a gawk extension" msgstr "`length(array)' adalah sebuah ekstensi gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, fuzzy, c-format msgid "%s: received non-string argument" msgstr "system: diterima argumen bukan string" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, fuzzy, c-format msgid "%s: received negative argument %g" msgstr "log: diterima argumen negatif %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "harus menggunakan `count$' di semua format atau tidak sama sekali" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "lebar daerah diabaikan untuk penspesifikasi `%%'" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "ketepatan diabaikan untuk penspesifikasi `%%'" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "lebar daerah dan presisi diabaikan untuk penspesifikasi `%%'" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "`$' tidak diijinkan dalam format awk" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy msgid "fatal: argument index with `$' must be > 0" msgstr "arg count dengan `$' harus > 0" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" "arg count %ld lebih besar dari jumlah total dari argumen yang diberikan" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "`$' tidak diijinkan setelah periode dalam format" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "tidak ada `$' yang diberikan untuk posisional field width atau presisi" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "`l' tidak berarti dalam format awk; diabaikan" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "`l' tidak diijinkan dalam format POSIX awk" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "`L' tidak berarti dalam format awk; diabaikan" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "`L' tidak diijinkan dalam format awk POSIX" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "`h' tidak berarti dalam format awk; diabaikan" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "`h' tidak diijinkan dalam format awk POSIX" - -#: builtin.c:1092 +#: builtin.c:1070 #, fuzzy, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: nilai %g diluar dari jangkauan untuk format `%%%c'" -#: builtin.c:1105 +#: builtin.c:1083 #, fuzzy, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: nilai %g diluar dari jangkauan untuk format `%%%c'" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: nilai %g diluar dari jangkauan untuk format `%%%c'" -#: builtin.c:1505 +#: builtin.c:1483 #, fuzzy, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: nilai %g diluar dari jangkauan untuk format `%%%c'" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "mengabaikan format tidak dikenal karakter penspesifikasi `%c': tidak ada " "argumen yang diubah" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "tidak cukup argumen untuk memuaskan format string" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ kehabisan untuk yang ini" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: penspesifikasi format tidak memiliki pengontrol huruf" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "terlalu banyak argumen diberikan untuk format string" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: tidak ada argumen" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: tidak ada argumen" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: panjang %g tidak >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: panjang %g tidak >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: panjang bukan integer %g akan dipotong" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: panjang %g terlalu besar untuk pengindeksan string, dipotong ke %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: awal indeks %g tidak valid, menggunakan 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: awal indeks %g bukan integer akan dipotong" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: sumber string memiliki panjang nol" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: awal indeks %g melewati akhir dari string" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -836,156 +841,162 @@ "substr: panjang %g di awal indeks %g melewati panjang dari argumen pertama " "(%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: format value in PROCINFO[\"strftime\"] has numeric type" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, fuzzy, c-format msgid "%s: received non-numeric second argument" msgstr "or: diterima argumen kedua bukan numerik" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: second argument less than 0 or too big for time_t" -#: builtin.c:2025 +#: builtin.c:2014 #, fuzzy msgid "strftime: second argument out of range for time_t" msgstr "strftime: second argument less than 0 or too big for time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: diterima format string kosong" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: at least one of the values is out of the default range" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "'system' function not allowed in sandbox mode" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referensi ke field tidak terinisialisasi `$%d'" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, fuzzy, c-format msgid "%s: received non-numeric first argument" msgstr "or: diterima argumen pertama bukan numerik" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: argumen ketiga bukan sebuah array" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: could not get third argument" + +#: builtin.c:2916 #, fuzzy, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: argumen ketiga dari 0 diperlakukan sebagai 1" -#: builtin.c:3246 +#: builtin.c:3267 #, fuzzy, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "and: dipanggil dengan argumen negatif" -#: builtin.c:3369 +#: builtin.c:3390 #, fuzzy, c-format msgid "indirect call to %s requires at least two arguments" msgstr "and: dipanggil dengan argumen negatif" -#: builtin.c:3444 +#: builtin.c:3465 #, fuzzy, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): nilai negatif akan memberikan hasil aneh" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): nilai pecahan akan dipotong" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): nilai shift terlalu besar akan memberikan hasil aneh" -#: builtin.c:3483 +#: builtin.c:3504 #, fuzzy, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f. %f): nilai negatif akan memberikan hasil aneh" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): nilai pecahan akan dipotong" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): nilai shift terlalu besar akan memberikan hasil aneh" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, fuzzy, c-format msgid "%s: called with less than two arguments" msgstr "or: dipanggil dengan argumen negatif" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, fuzzy, c-format msgid "%s: argument %d is non-numeric" msgstr "or: argumen %d diluar dari jangkauan" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: #%d nilai negatif %Rg akan memberikan hasil aneh" -#: builtin.c:3611 +#: builtin.c:3632 #, fuzzy, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): nilai negatif akan memberikan hasil aneh" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): nilai pecahan akan dipotong" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' bukan sebuah kategori lokal yang valid" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 #, fuzzy msgid "intdiv: third argument is not an array" msgstr "match: argumen ketiga bukan sebuah array" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 #, fuzzy msgid "intdiv: division by zero attempted" msgstr "pembagian dengan nol telah dicoba" -#: builtin.c:4080 +#: builtin.c:4106 #, fuzzy msgid "typeof: second argument is not an array" msgstr "split: argumen kedua bukan sebuah array" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, fuzzy, c-format msgid "typeof: invalid argument type `%s'" msgstr "option: invalid parameter - \"%s\"" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "" @@ -995,429 +1006,544 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, fuzzy, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Type (g)awk statement(s). End with the command \"end\"\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "Akhir jangkauan tidak valid: %d" -#: command.y:297 +#: command.y:298 #, fuzzy, c-format msgid "info: invalid option - `%s'" msgstr "info: pilihan tidak valid - \"%s\"" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "source \"%s\": already sourced." -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "save \"%s\": command not permitted." -#: command.y:341 +#: command.y:342 #, fuzzy msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "Can't use command `commands' for breakpoint/watchpoint commands" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "no breakpoint/watchpoint has been set yet" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "invalid breakpoint/watchpoint number" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Type commands for when %s %d is hit, one per line.\n" -#: command.y:352 +#: command.y:353 #, fuzzy, c-format msgid "End with the command `end'\n" msgstr "End with the command \"end\"\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' valid only in command `commands' or `eval'" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "`silent' valid only in command `commands'" -#: command.y:375 +#: command.y:376 #, fuzzy, c-format msgid "trace: invalid option - `%s'" msgstr "trace: pilihan tidak valid - \"%s\"" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: invalid breakpoint/watchpoint number" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "tidak cukup argumen untuk memuaskan format string" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, fuzzy, c-format msgid "option: invalid parameter - `%s'" msgstr "option: invalid parameter - \"%s\"" -#: command.y:476 +#: command.y:477 #, fuzzy, c-format msgid "no such function - `%s'" msgstr "no such function - \"%s\"" -#: command.y:533 +#: command.y:534 #, fuzzy, c-format msgid "enable: invalid option - `%s'" msgstr "enable: pilihan tidak valid - \"%s\"" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "Akhir jangkauan tidak valid: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "non-numeric value for field number" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "non-numeric value found, numeric expected" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "non-zero integer value" -#: command.y:819 +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." -#: command.y:821 +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" "break [[filename:]N|function] - set breakpoint at the specified location." -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "clear [[filename:]N|function] - delete breakpoints previously set." -#: command.y:825 +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" "condition num [expr] - set or clear breakpoint or watchpoint condition." -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" msgstr "continue [COUNT] - continue program being debugged." -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "delete [breakpoints] [range] - delete specified breakpoints." -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "disable [breakpoints] [range] - disable specified breakpoints." -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" msgstr "display [var] - print value of variable each time the program stops." -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" msgstr "down [N] - move N frames down the stack." -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" msgstr "dump [filename] - dump instructions to file or stdout." -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" msgstr "end - end a list of commands or awk statements." -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -#: command.y:847 +#: command.y:848 #, fuzzy -msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" msgstr "quit - exit debugger." -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" msgstr "finish - execute until selected stack frame returns." -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" msgstr "frame [N] - select and print stack frame number N." -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" msgstr "help [command] - print list of commands or explanation of command." -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -#: command.y:857 +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "list [-|+|[filename:]lineno|function|range] - list specified line(s)." -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "next [COUNT] - step program, proceeding through subroutine calls." -#: command.y:863 +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [COUNT] - stepp one instruction, but proceed through subroutine calls." -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "option [name[=value]] - set or display debugger option(s)." -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" msgstr "print var [var] - print value of a variable or array." -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" msgstr "printf format, [arg], ... - formatted output." -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" msgstr "quit - exit debugger." -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" msgstr "return [value] - make selected stack frame return to its caller." -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" msgstr "run - start or restart executing program." -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" msgstr "save filename - save commands from the session to file." -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" msgstr "set var = value - assign value to a scalar variable." -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" msgstr "source file - execute commads from file." -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "step [COUNT] - step program until it reaches a different source line." -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" msgstr "stepi [COUNT] - step one instruction exactly." -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "tbreak [[filename:]N|function] - set a temporary breakpoint." -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" msgstr "trace on|off - print instruction before executing." -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "undisplay [N] - remove variable(s) from automatic display list." -#: command.y:897 +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "unwatch [N] - remove variable(s) from watch list." -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" msgstr "up [N] - move N frames up the stack." -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" msgstr "watch var - set a watchpoint for a variable." -#: command.y:905 +#: command.y:906 #, fuzzy msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "error: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format msgid "cannot read command: %s\n" msgstr "tidak dapat redirek dari (%s)\n" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format msgid "cannot read command: %s" msgstr "tidak dapat redirek dari (%s)" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "nama kelas karakter tidak valid" -#: command.y:1161 +#: command.y:1162 #, fuzzy, c-format msgid "unknown command - `%.*s', try help" msgstr "unknown command - \"%.*s\", try help" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "Karakter kolasi tidak valid" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "undefined command: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "set or show the number of lines to keep in history file." #: debug.c:259 -msgid "set or show the list command window size." +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "set or show the list command window size." #: debug.c:261 -msgid "set or show gawk output file." +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "set or show gawk output file." #: debug.c:263 -msgid "set or show debugger prompt." +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "set or show debugger prompt." #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "(un)set or show saving of command history (value=on|off)." #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "(un)set or show saving of options (value=on|off)." #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "(un)set or show instruction tracing (value=on|off)." #: debug.c:358 -msgid "program not running." +#, fuzzy +#| msgid "program not running." +msgid "program not running" msgstr "program not running." -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "berkas sumber `%s' kosong.\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "no current source file." -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format msgid "cannot find source file named `%s': %s" msgstr "tidak dapat membaca berkas sumber `%s' (%s)" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "WARNING: source file `%s' modified since program compilation.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "line number %d out of range; `%s' has %d lines" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "tidak terduga baris baru atau akhir dari string `%s', %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "source file `%s' modified since start of program execution" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Current source file: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Number of lines: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Source file (lines): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1425,54 +1551,55 @@ "Number Disp Enabled Location\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tno of hits = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignore next %ld hit(s)\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tstop condition: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tcommands:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Current frame: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Called by frame: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Caller of frame: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "None in main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "tidak ada argumen\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "No locals.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1480,7 +1607,7 @@ "All defined variables:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1488,7 +1615,7 @@ "All defined functions:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1496,7 +1623,7 @@ "Auto-display variables:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1504,379 +1631,391 @@ "Watch variables:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "no symbol `%s' in current context\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "`%s' bukan sebuah nama variabel legal\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "referensi ke field tidak terinisialisasi $%ld\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "berkas data `%s' kosong\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, fuzzy, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "indeks [\"%s\"] tidak dalam array `%s'\n" -#: debug.c:1188 +#: debug.c:1197 #, fuzzy, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s[\"%s\"]' is no an array\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' bukan sebuah nama variabel legal" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, fuzzy, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "mencoba menggunakan array `%s[\"%s\"]' dalam sebuah konteks skalar" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "mencoba untuk menggunakan skalar `%s[\"%s\"]' sebagai sebuah array" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "`%s' digunakan dalam aksi" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "watchpoint %d is unconditional\n" -#: debug.c:1514 -#, c-format -msgid "No display item numbered %ld" +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "No display item numbered %ld" -#: debug.c:1517 -#, c-format -msgid "No watch item numbered %ld" +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "No watch item numbered %ld" -#: debug.c:1543 +#: debug.c:1552 #, fuzzy, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d: indeks [\"%s\"] tidak dalam array `%s'\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "mencoba untuk menggunakan skalar sebagai sebuah array" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Watchpoint %d deleted because parameter is out of scope.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Display %d deleted because parameter is out of scope.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " in file `%s', line %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " at `%s':%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tin" -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "More stack frames follow ...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "Akhir jangkauan tidak valid" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "Note: breakpoint %d (enabled, ignore next %ld hits), alse set at %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Note: breakpoint %d (enabled), also set at %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Note: breakpoint %d (disabled), also set at %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpoint %d set at file `%s', line %d\n" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "Can't set breakpoint in file `%s'\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "argumen %d diluar dari jangkauan `%s'" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format msgid "internal error: cannot find rule\n" msgstr "internal error: %s dengan null vname" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "Can't set breakpoint at `%s':%d\n" -#: debug.c:2404 +#: debug.c:2413 #, fuzzy, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "Can't set breakpoint in function `%s'\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "breakpoint %d set at file `%s', line %d is unconditional\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "argumen %d diluar dari jangkauan `%s'" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Deleted breakpoint %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "No breakpoint(s) at entry to function `%s'\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "error membaca berkas masukan `%s': %d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "invalid breakpoint number" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Delete all breakpoints? (y or n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "y" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Will ignore next %ld crossing(s) of breakpoint %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Will stop next time breakpoint %d is reached.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Can only debug programs provided with the `-f' option.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Failed to restart debugger" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Program already running. Restart from beginning (y/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Program not restarted\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "error: cannot restart, operation not allowed\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "error (%s): cannot restart, ignoring rest of the commands\n" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Starting program: \n" -#: debug.c:2977 +#: debug.c:2988 #, fuzzy, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Program exited %s with exit value: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, fuzzy, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Program exited %s with exit value: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "The program is running. Exit anyway (y/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Not stopped at any breakpoint; argument ignored.\n" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "invalid breakpoint number %d." -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Will ignore next %ld crossings of breakpoint %d.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "'finish' not meaningful in the outermost frame main()\n" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "Run till return from" -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "'return' not meaningful in the outermost frame main()\n" -#: debug.c:3386 +#: debug.c:3397 #, fuzzy, c-format msgid "cannot find specified location in function `%s'\n" msgstr "Can't find specified location in function `%s'\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "invalid source line %d in file `%s'" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "Can't find specified location %d in file `%s'\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "tidak dalam array\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "untyped variable\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Stopping in %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "'finish' not meaningful with non-local jump '%s'\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' not meaningful with non-local jump '%s'\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 #, fuzzy msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t------[Enter] to continue or q [Enter] to quit------" -#: debug.c:5141 +#: debug.c:5152 #, fuzzy, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%s\"] tidak dalam array `%s'" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "sending output to stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "invalid number" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' not allowed in current context; statement ignored" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' not allowed in current context; statement ignored" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "No symbol `%s' in current context" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "no symbol `%s' in current context\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "tipe titik %d tidak diketahui" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "tipe titik %d tidak diketahui" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s not an operator or keyword" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "buffer overflow dalam genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1887,71 +2026,71 @@ "\t# Fungsi Call Stack:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' adalah ekstensi gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' adalah ekstensi gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE nilai `%s' tidak valid, diperlakukan sebagai 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "buruk `%sFMT' spesifikasi `%s'" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "menonaktifkan `--lint' karena penempatan ke `LINT'" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referensi ke argumen `%s' tidak terinisialisasi" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referensi ke variabel `%s' tidak terinisialisasi" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "mencoba untuk mereferensi field dari nilai bukan numerik" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "mencoba untuk mereferensi dari null string" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "mencoba untuk mengakses field %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referensi ke field tidak terinisialisasi `$%ld'" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "fungsi `%s' dipanggil argumen lebih dari yang dideklarasikan" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: unexpected type `%s'" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "pembagian dengan nol dicoba dalam `/='" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "pembagian dengan nol dicoba dalam `%%='" @@ -2043,84 +2182,84 @@ msgid "dynamic loading of libraries is not supported" msgstr "dynamic loading of library not supported" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: unable to read symbolic link `%s'" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: first argument is not a string" msgstr "do_write: argumen diluar dari jangkauan\n" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy msgid "stat: second argument is not an array" msgstr "split: argumen kedua bukan sebuah array" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: adalah parameter" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: could not create variable %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "tidak didukung dalam awk lama" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 #, fuzzy msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: could not create array" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: could not set element" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: could not set element" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: could not set element" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: could not create array" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: could not set element" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: dipanggil dengan argumen negatif" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "asort: argumen ketiga bukan sebuah array" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "split: argumen kedua bukan sebuah array" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "match: argumen ketiga bukan sebuah array" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: could not flatten array\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." @@ -2262,7 +2401,7 @@ msgid "chr: first argument is not a number" msgstr "asort: argumen ketiga bukan sebuah array" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir failed: %s" @@ -2362,174 +2501,179 @@ msgid "sleep: not supported on this platform" msgstr "sleep: not supported on this platform" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF set ke nilai negatif" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: argumen ketiga adalah sebuah ekstensi gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: argumen kedua bukan sebuah array" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "asort: cannot use a subarray of second arg for first arg" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: argumen kedua bukan sebuah array" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "split: cannot use the same array for second and fourth args" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "split: cannot use a subarray of second arg for fourth arg" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "split: cannot use a subarray of fourth arg for secod arg" -#: field.c:1038 +#: field.c:1050 #, fuzzy msgid "split: null string for third arg is a non-standard extension" msgstr "split: null string untuk arg ketika adalah sebuah ekstensi gawk" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: argumen kedua bukan sebuah array" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: argumen kedua bukan sebuah array" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: argumen ketiga bukan sebuah array" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: cannot use the same array for second and fourth args" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplit: cannot use a subarray of second arg for fourth arg" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplit: cannot use a subarray of fourth arg for second arg" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' adalah sebuah ekstensi gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, fuzzy, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "nilai FIELDWIDTHS tidak valid, didekat `%s'" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "null string untuk `FS' adalah sebuah ekstensi gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "awk lama tidak mendukung regexps sebagai nilai dari `FS'" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' adalah sebuah ekstensi gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: received null retval" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 #, fuzzy msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: received null retval" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 #, fuzzy msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: received null retval" -#: gawkapi.c:198 +#: gawkapi.c:190 #, fuzzy, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: received null retval" -#: gawkapi.c:385 +#: gawkapi.c:377 #, fuzzy msgid "add_ext_func: received NULL name_space parameter" msgstr "load_ext: received NULL lib_name" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: received null node" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: received null val" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: received null array" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: received null subscript" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array: could not convert index %d\n" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array: could not convert value %d\n" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "" -#: gawkapi.c:1365 +#: gawkapi.c:1358 #, fuzzy msgid "cannot find end of BEGINFILE rule" msgstr "`next' tidak dapat dipanggil dari sebuah aturan BEGIN" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, fuzzy, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "tidak dapat membuka berkas sumber `%s' untuk pembacaan (%s)" @@ -2539,321 +2683,376 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "command line argument `%s' is a directory: skipped" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format msgid "cannot open file `%s' for reading: %s" msgstr "tidak dapat membuka berkas `%s' untuk membaca (%s)" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "penutupan dari fd %d (`%s') gagal (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "pencampuran tidak perlu dari `>' dan `>>' untuk berkas `%.*s'" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "redirection not allowed in sandbox mode" -#: io.c:787 +#: io.c:847 #, fuzzy, c-format msgid "expression in `%s' redirection is a number" msgstr "ekspresi dalam `%s' redireksi hanya memiliki nilai numerik" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "ekspresi untuk `%s' redireksi hanya memiliki nilai string null" -#: io.c:796 +#: io.c:856 #, fuzzy, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" msgstr "" "nama berkas `%s' untuk `%s' redireksi hanya menghasilkan ekspresi logikal" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "pencampuran tidak perlu dari `>' dan `>>' untuk berkas `%.*s'" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "tidak dapat membuka pipe `%s' untuk keluaran (%s)" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "tidak dapat membuka pipe `%s' untuk masukan (%s)" -#: io.c:950 +#: io.c:1007 #, fuzzy, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "gettimeofday: not supported on this platform" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "tidak dapat membuka pipe dua arah `%s' untuk input/output (%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format msgid "cannot redirect from `%s': %s" msgstr "tidak dapat redirek dari `%s' (%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format msgid "cannot redirect to `%s': %s" msgstr "tidak dapat redirek ke `%s' (%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "batas sistem tercapi untuk berkas terbuka: mulai untuk multiplex berkas " "deskripsi" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "penutupan dari `%s' gagal (%s)." -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "terlalu banyak pipes atau berkas masukan terbuka" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: argumen kedua harus berupa `to' atau `from'" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' bukan sebuah berkas terbuka, pipe atau co-proses" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "penutupan dari redireksi yang tidak pernah terbuka" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: redireksi `%s' tidak dibuka dengan `|&', argumen kedua diabaikan" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "status gagal (%d) di tutup pipe dari `%s' (%s)" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "status gagal (%d) di tutup pipe dari `%s' (%s)" + +#: io.c:1405 #, fuzzy, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "status gagal (%d) di tutup berkas dari `%s' (%s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "tidak ada eksplisit tutup dari socket `%s' yang disediakan" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "tidak ada eksplisit tutup dari co-proses `%s' yang disediakan" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "tidak ada eksplisit tutup dari pipe `%s' disediakan" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "tidak ada eksplisit close dari berkas `%s' disediakan" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format msgid "error writing standard output: %s" msgstr "error menulis standar keluaran (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format msgid "error writing standard error: %s" msgstr "error menulis standar error (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "pipe flush dari `%s' gagal (%s)." -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "co-proses flush dari pipe ke `%s' gagal (%s)." -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "file flush dari `%s' gagal (%s)." -#: io.c:1610 +#: io.c:1670 #, fuzzy, c-format msgid "local port %s invalid in `/inet': %s" msgstr "lokal port %s tidak valid dalam `/inet'" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s tidak valid dalam `/inet'" -#: io.c:1636 +#: io.c:1696 #, fuzzy, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "remote host dan informasi port (%s, %s) tidak valid" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "remote host dan informasi port (%s, %s) tidak valid" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "komunikasi TCP/IP tidak didukung" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "tidak dapat membuka `%s', mode `%s'" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format msgid "close of master pty failed: %s" msgstr "penutupan dari master pty gagal (%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format msgid "close of stdout in child failed: %s" msgstr "penutupan dari stdout dalam child gagal (%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "memindahkan slave pty ke stdout dalam child gagal (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format msgid "close of stdin in child failed: %s" msgstr "penutupan dari stdin dalam anak gagal (%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "memindahkan slave pty ke stdin dalam anak gagal (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format msgid "close of slave pty failed: %s" msgstr "penutupan dari pty budak gagal (%s)" -#: io.c:2265 +#: io.c:2325 #, fuzzy msgid "could not create child process or open pty" msgstr "tidak dapat membuat proses anak untuk `%s' (fork: %s)" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "memindahkan pipe ke stdout dalam anak gaal (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "memindahkan pipe ke stdin dalam anak gagal (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy msgid "restoring stdout in parent process failed" msgstr "mengembalikan stdout dalam proses orang tua gagal\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy msgid "restoring stdin in parent process failed" msgstr "mengembalikan stdin dalam proses orang tua gagal\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format msgid "close of pipe failed: %s" msgstr "penutupan dari pipe gagal (%s)" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "`|&' tidak didukung" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format msgid "cannot open pipe `%s': %s" msgstr "tidak dapat membuka pipe `%s' (%s)" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "tidak dapat membuat proses anak untuk `%s' (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: received NULL pointer" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "input parser `%s' conflicts with previously installed input parser `%s'" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "input parser `%s' failed to open `%s'" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: received NULL pointer" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "output wrapper `%s' failed to open `%s'" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: received NULL pointer" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2862,217 +3061,223 @@ "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "two way processor `%s' failed to open `%s'" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "berkas data `%s' kosong" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "tidak dapat mengalokasikan lebih dari masukan memori" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "nilai multi karakter dari `RS' adalah sebuah ekstensi gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6 komunikasi TCP/IP tidak didukung" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "variabel lingkungan `POSIXLY_CORRECT' set: mengaktifkan `--posix'" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' overrides `--traditional'" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' overrides `--non-decimal-data'" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' overrides `--characters-as-bytes'" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "menjalankan %s setuid root mungkin sebuah masalah keamanan" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format msgid "cannot set binary mode on stdin: %s" msgstr "tidak dapat menset mode binari di stdin (%s)" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format msgid "cannot set binary mode on stdout: %s" msgstr "tidak dapat menset mode binari di stdout (%s)" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format msgid "cannot set binary mode on stderr: %s" msgstr "tidak dapat menset mode binari di stderr (%s)" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "tidak ada teks aplikasi apapun!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Penggunaan: %s [pilihan POSIX atau gaya GNU] -f progfile [--] berkas ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Penggunaan: %s[ pilihan POSIX atau gaya GNU] [--] %cprogram%c berkas ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "pilihan POSIX:\t\tpilihan panjang GNU:\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfile\t\t--file=progfile\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "pilihan POSIX:\t\tpilihan panjang GNU:\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C hak cipta\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d tampilkan variabel[=berkas]\t\t--dump-variables[=berkas]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D profile[=file]\t\t--profile[=file]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e sumber=teks-program\t\t--source=teks-program\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E exec=berkas\t\t\t--exec=berkas\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g gen-po\t\t\t--gen-po\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h bantuan\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=includefile\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h bantuan\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-I library\t\t--load=library\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L lint[=fatal]\t\t--lint[=fatal]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--optimize\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N use-lc-numeric\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n non-decimal-data\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-W profile[=file]\t\t--profile[=file]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-0\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p profile[=file]\t\t--profile[=file]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P posix\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r re-interval\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 #, fuzzy msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-0\t\t\t--optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t lint-old\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V versi\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 #, fuzzy msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y parsedebug\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy msgid "" "\n" @@ -3089,7 +3294,7 @@ "daerah `Reporting Problems and Bugs' dalam versi tercetak.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3099,7 +3304,7 @@ "Secara baku ini membaca standar masukan dan menulis standa keluaran.\n" "\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format msgid "" "Examples:\n" @@ -3110,7 +3315,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' berkas\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3131,7 +3336,7 @@ "(di pilihan anda) untuk versi selanjutnya.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3146,7 +3351,7 @@ "GNU General Public License untuk lebih lengkapnya.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3155,11 +3360,11 @@ "bersama dengan aplikasi ini. Jika tidak, lihat http://www.gnu.org/" "licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft tidak menset FS ke tab dalam POSIX awk" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3168,166 +3373,172 @@ "%s: `%s' argumen ke `-v' tidak dalam bentuk `var=value'\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' bukan sebuah nama variabel legal" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' bukan sebuah nama variabel, pencarian untuk berkas `%s=%s'" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "tidak dapat menggunakan gawk bawaan `%s' sebagai nama fungsi" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" "tidak dapat menggunakan nama fungsi `%s' sebagai sebuah variabel atau array" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "eksepsi titik pecahan" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "fatal error: internal error" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "fatal error: internal error: segfault" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "fatal error: internal error: stack overflow" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "tidak ada pre-opened fd %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "tidak dapat pre-open /dev/null untuk fd %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "argumen kosong ke `-e/--source' diabaikan" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy msgid "`--profile' overrides `--pretty-print'" msgstr "`--posix' overrides `--traditional'" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: pilihan `-W %s' tidak dikenal, diabaikan\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC nilai `%.*s' tidak valid, diperlakukan sebagai 3" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "RNDMODE nilai `%.*s' tidak valid, diperlakukan sebagai 3" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: diterima argumen pertama bukan numerik" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: diterima argumen kedua bukan numerik" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +msgid "%s: received negative argument %.*s" +msgstr "log: diterima argumen negatif %g" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: diterima argumen bukan numerik" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: diterima argumen bukan numerik" -#: mpfr.c:816 +#: mpfr.c:874 #, fuzzy msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): nilai negatif akan memberikan hasil aneh" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): nilai pecahan akan dipotong" -#: mpfr.c:832 +#: mpfr.c:890 #, fuzzy, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): nilai negatif akan memberikan hasil aneh" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: diterima argumen bukan numerik #%d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d has invalid value %Rg, using 0" -#: mpfr.c:871 +#: mpfr.c:929 #, fuzzy msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: #%d nilai negatif %Rg akan memberikan hasil aneh" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: #%d nilai pecahan %Rg akan dipotong" -#: mpfr.c:892 +#: mpfr.c:950 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: #%d nilai negatif %Zd akan memberikan hasil aneh" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: dipanggil dengan argumen negatif" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: dipanggil dengan argumen negatif" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: dipanggil dengan argumen negatif" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: diterima argumen bukan numerik" -#: mpfr.c:1211 +#: mpfr.c:1269 #, fuzzy msgid "intdiv: received non-numeric first argument" msgstr "and: diterima argumen pertama tidak numerik" -#: mpfr.c:1213 +#: mpfr.c:1271 #, fuzzy msgid "intdiv: received non-numeric second argument" msgstr "and: diterima argumen kedua bukan numerik" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "cmd. baris:" @@ -3337,20 +3548,20 @@ msgid "could not make typed regex" msgstr "tidak terselesaikan regexp" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "awk lama tidak mendukung escape sequence `\\%c'" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tidak mengijinkan escapes `\\x'" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "tidak ada digit heksa dalam escape sequence `\\x'" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3359,15 +3570,19 @@ "hex escape \\x%.*s dari karakter %d mungkin tidak dapat diinterpretrasikan " "seperti yang anda kira" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "escape sequence `\\%c' diperlakukan sebagai plain `%c'" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3413,11 +3628,11 @@ msgid "internal error: %s with null vname" msgstr "internal error: %s dengan null vname" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "internal error: dengan null vname" -#: profile.c:1317 +#: profile.c:1318 #, fuzzy, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3426,7 +3641,7 @@ "\t# Loaded extensions (-l and/or @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, fuzzy, c-format msgid "" "\n" @@ -3436,12 +3651,12 @@ "\t# Loaded extensions (-l and/or @load)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk profile, dibuat %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3450,7 +3665,7 @@ "\n" "\t# Fungsi, terdaftar secara alphabet\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: unknown redirection type %d" @@ -3480,41 +3695,41 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "regexp component `%.*s' should probably be `[%.*s]'" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "unbalanced [" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "nama kelas karakter tidak valid" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "character class syntax is [[:space:]], not [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "unfinished \\ escape" -#: support/dfa.c:1425 +#: support/dfa.c:1371 #, fuzzy msgid "invalid content of \\{\\}" msgstr "Isi dari \\{\\} tidak valid" -#: support/dfa.c:1428 +#: support/dfa.c:1374 #, fuzzy msgid "regular expression too big" msgstr "Ekspresi regular terlalu besar" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "unbalanced (" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "no syntax specified" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "unbalanced )" @@ -3647,17 +3862,33 @@ msgid "No previous regular expression" msgstr "Tidak ada ekspresi regular sebelumnya" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" "fungsi `%s': tidak dapat menggunakan nama fungsi sebagai nama parameter" -#: symbol.c:821 +#: symbol.c:828 #, fuzzy msgid "cannot pop main context" msgstr "can not pop main context" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "`L' tidak berarti dalam format awk; diabaikan" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "`L' tidak diijinkan dalam format awk POSIX" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "`h' tidak berarti dalam format awk; diabaikan" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "`h' tidak diijinkan dalam format awk POSIX" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "No symbol `%s' in current context" + #, fuzzy #~ msgid "fts: first parameter is not an array" #~ msgstr "asort: argumen ketiga bukan sebuah array" @@ -4018,9 +4249,6 @@ #~ msgid "`nextfile' cannot be called from an END rule" #~ msgstr "`nextfile' tidak dapat dipanggil dari sebuah aturan END" -#~ msgid "statement has no effect" -#~ msgstr "pernyataan tidak memiliki efek" - #~ msgid "" #~ "concatenation: side effects in one expression have changed the length of " #~ "another!" diff -urN gawk-5.1.0/po/insert-header.sin gawk-5.1.1/po/insert-header.sin --- gawk-5.1.0/po/insert-header.sin 2018-09-16 21:30:55.000000000 +0300 +++ gawk-5.1.1/po/insert-header.sin 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,10 @@ # Sed script that inserts the file called HEADER before the header entry. # +# Copyright (C) 2001 Free Software Foundation, Inc. +# Written by Bruno Haible , 2001. +# This file is free software; the Free Software Foundation gives +# unlimited permission to use, copy, distribute, and modify it. +# # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following diff -urN gawk-5.1.0/po/it.po gawk-5.1.1/po/it.po --- gawk-5.1.0/po/it.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/it.po 2021-10-27 07:58:41.000000000 +0300 @@ -1,13 +1,13 @@ # Italian messages for GNU Awk -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2021 Free Software Foundation, Inc. # Antonio Colombo . # msgid "" msgstr "" -"Project-Id-Version: GNU Awk 5.1.0, API: 3.0\n" +"Project-Id-Version: GNU Awk 5.1.1, API: 3.0\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2020-03-19 10:50+0100\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-10-22 17:15+0100\n" "Last-Translator: Antonio Colombo \n" "Language-Team: Italian \n" "Language: it\n" @@ -15,234 +15,251 @@ "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "da %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "tentativo di usare valore scalare come vettore" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "tentativo di usare il parametro scalare `%s' come un vettore" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "tentativo di usare scalare '%s' come vettore" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentativo di usare vettore `%s' in un contesto scalare" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: indice `%.*s' non presente nel vettore `%s'" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentativo di usare scalare`%s[\"%.*s\"]' come vettore" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "%s: il primo argomento non è un vettore" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "%s: il secondo argomento non è un vettore" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "%s: il primo argomento non può essere SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "%s: non consentito usare %s come secondo argomento" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "%s: il primo argomento non può essere FUNCTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "" +"%s: il primo argomento non può essere SYMTAB senza specificare un secondo " +"argomento" + +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "" +"%s: il primo argomento non può essere FUNCTAB senza specificare un secondo " +"argomento" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti: usare lo stesso vettore come origine e come destinazione è " +"sciocco." -#: array.c:844 +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "%s: non consentito un secondo argomento che sia un sottovettore del primo " "argomento" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "%s: non consentito un primo argomento che sia un sottovettore del secondo " "argomento" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' non è un nome funzione valido" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funzione di confronto del sort `%s' non definita" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "blocchi %s richiedono una `azione'" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "ogni regola deve avere una parte `espressione' o una parte `azione'" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "il vecchio awk non supporta più di una regola `BEGIN' o `END'" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' è una funzione interna, non si può ridefinire" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "espressione regolare costante `//' sembra un commento C++, ma non lo è" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "espressione regolare costante `/%s/' sembra un commento C, ma non lo è" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valori di `case' doppi all'interno di uno `switch': %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "valori di default doppi all'interno di uno `switch'" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' non consentito fuori da un ciclo o da uno `switch'" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "`continue' non consentito fuori da un un ciclo" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "`next' usato in `azione' %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' usato in `azione' %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "`return' usato fuori da una funzione" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "`print' da solo in BEGIN o END dovrebbe forse essere `print \"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' non consentito in SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' non consentito in FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' è un'estensione tawk non-portabile" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "`pipeline' multistadio bidirezionali non funzionano" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "concatenazione in I/O `>' destinazione della ridirezione ambigua" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "espressione regolare usata per assegnare un valore" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "espressione regolare prima di operatore `~' o `!~'" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "il vecchio awk non supporta la parola-chiave `in' se non dopo `for'" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "espressione regolare a destra in un confronto" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`getline' non ridiretta invalida all'interno della regola `%s'" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "`getline' non ri-diretta indefinita dentro `azione' END" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "il vecchio awk non supporta vettori multidimensionali" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "chiamata a `length' senza parentesi non-portabile" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "chiamate indirette di funzione sono un'estensione gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "non riesco a usare la variabile speciale `%s' in una chiamata indiretta di " "funzione" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "tentativo di usare la non-funzione `%s' in una chiamata di funzione" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "espressione indice invalida" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "attenzione: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatale: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "carattere 'a capo' o fine stringa non previsti" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" @@ -250,270 +267,270 @@ "i file sorgente / gli argomenti sulla riga di comando devono contenere " "funzioni o regole complete" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "non riesco ad aprire file sorgente `%s' in lettura: %s" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "non riesco ad aprire shared library `%s' in lettura: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "ragione indeterminata" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "non riesco a includere `%s' per usarlo come file di programma" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "file sorgente `%s' già incluso" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "shared library `%s' già inclusa" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include è un'estensione gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load è un'estensione gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "nome-file mancante dopo @include" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "programma nullo sulla riga comandi" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "non riesco a leggere file sorgente `%s': %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "file sorgente `%s' vuoto" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "errore: carattere invalido '\\%03o' nel codice sorgente" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "file sorgente non termina con carattere 'a capo'" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "espressione regolare non completata termina con `\\' a fine file" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: modificatore di espressione regolare tawk `/.../%c' non valido in " "gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "modificatore di espressione regolare tawk `/.../%c' non valido in gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "espressione regolare non completa" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "espressione regolare non completa a fine file" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "uso di `\\ #...' continuazione riga non-portabile" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "la barra inversa non è l'ultimo carattere della riga" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "i vettori multidimensionali sono un'estensione gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX non consente l'operatore `%s'" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "operatore `%s' non supportato nel vecchio awk" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "stringa non delimitata" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "" "POSIX non consente dei caratteri di ritorno a capo nei valori assegnati a " "una stringa" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "uso di barra inversa per continuazione stringa non-portabile" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "carattere '%c' non valido in un'espressione" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' è un'estensione gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX non consente `%s'" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' non è supportato nel vecchio awk" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "`goto' considerato pericoloso!" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d non valido come numero di argomenti per %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: una stringa di caratteri come ultimo argomento di substitute non ha " "effetto" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "il terzo parametro di %s non è un oggetto modificabile" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: il terzo argomento è un'estensione gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: il secondo argomento è un'estensione gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: espressione regolare come secondo argomento non consentita" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funzione `%s': il parametro `%s' nasconde variabile globale" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "non riesco ad aprire `%s' in scrittura: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "mando lista variabili a `standard error'" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "%s: close non riuscita: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() chiamata due volte!" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "c'erano variabili nascoste." +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "erano presenti variabili nascoste" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "funzione di nome `%s' definita in precedenza" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "funzione `%s': non si può usare nome di funzione come nome parametro" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "funzione `%s': non si può usare la variabile speciale `%s' come parametro di " "funzione" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "funzione `%s': il parametro `%s' non può contenere un nome-di-spazio" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funzione `%s': il parametro #%d, `%s', duplica il parametro #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "funzione `%s' chiamata ma mai definita" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "funzione `%s' definita ma mai chiamata direttamente" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" "espressione regolare di valore costante per parametro #%d genera valore " "booleano" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -522,47 +539,51 @@ "funzione `%s' chiamata con spazio tra il nome e `(',\n" "o usata come variabile o vettore" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "tentativo di dividere per zero" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentativo di dividere per zero in `%%'" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "impossibile assegnare un valore al risultato di un'espressione di post-" "incremento di un campo" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "destinazione di assegnazione non valida (codice operativo %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "l'istruzione non fa nulla" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" "identificativo %s: nomi qualificati non consentiti in modo tradizionale / " "POSIX" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" "identificativo %s: il separatore dello spazio-dei-nomi è costituito da due " "caratteri ':', non da uno solo" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "l'identificativo qualificato `%s' non è nel formato richiesto" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" @@ -570,14 +591,14 @@ "identificativo `%s': il separatore dello spazio-dei-nomi può apparire una " "sola volta in un identificativo qualificato" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" "l'uso dell'identificativo riservato `%s' come nome-di-spazio non è " "consentito" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " @@ -586,11 +607,11 @@ "l'uso dell'identificativo riservato `%s' come secondo componente di un " "identificativo qualificato non è consentito" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "@namespace è un'estensione gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -610,8 +631,8 @@ msgid "standard error" msgstr "standard error" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: ricevuto argomento non numerico" @@ -652,7 +673,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: `%.*s' non è un file aperto, una `pipe' o un co-processo" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "%s: ricevuto primo argomento che non è una stringa" @@ -670,184 +691,170 @@ msgid "`length(array)' is a gawk extension" msgstr "`length(array)' è un'estensione gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "%s: ricevuto argomento che non è una stringa" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "%s: ricevuto argomento negativo %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fatale: `count$' va usato per tutti i formati o per nessuno" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "larghezza campo ignorata per la specifica `%%'" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precisione ignorata per la specifica `%%'" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "larghezza campo e precisone ignorate per la specifica `%%'" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatale: operatore `$' non consentito nei formati awk" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "fatale: indice argomenti con `$' dev'essere > 0" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" "fatale: indice argomenti %ld maggiore del numero totale argomenti specificati" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatale: `$' non consentito dopo il punto in un formato" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatale: manca `$' per i campi posizionali larghezza o precisione" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "`l' non ha senso nei formati awk; ignorato" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "fatale: `l' non consentito nei formati POSIX awk" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "`L' non ha senso nei formati awk; ignorato" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatale: `L' non consentito nei formati POSIX awk" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "`h' non ha senso nei formati awk; ignorato" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatale: `h' non consentito nei formati POSIX awk" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "`%c' non ha senso nei formati awk; ignorato" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "fatale: `%c' non consentito nei formati POSIX awk" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: valore %g troppo elevato per il formato %%c" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: valore %g non è un carattere multibyte valido " -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: valore %g fuori intervallo per il formato `%%%c'" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: valore %s fuori intervallo per il formato `%%%c'" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "il formato %%%c è nello standard POSIX ma non-portabile ad altri awk" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "carattere di formato ignoto `%c' ignorato: nessun argomento convertito" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatale: argomenti in numero minore di quelli richiesti dalla stringa di " "formato" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ esauriti a questo punto" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specifica di formato senza un carattere di controllo" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "troppi argomenti specificati per questa stringa di formato" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: nessun argomento" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: nessun argomento" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf: tentativo di scrivere al lato in scrittura, chiuso, di una `pipe' " "bidirezionale" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lunghezza %g non >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lunghezza %g non >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lunghezza non intera %g: sarà troncata" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: lunghezza %g troppo elevata per indice stringa, tronco a %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: indice di partenza %g non valido, uso 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: indice di partenza non intero %g: sarà troncato" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: stringa di partenza lunga zero" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: indice di partenza %g oltre la fine della stringa" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -855,157 +862,162 @@ "substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo " "argomento (%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: il valore del formato in PROCINFO[\"strftime\"] è di tipo numerico" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "%s: ricevuto secondo argomento non numerico" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: secondo argomento minore di 0 o troppo elevato per time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: il secondo argomento è fuori intervallo per time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: ricevuta stringa nulla come formato" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: almeno un valore è fuori dall'intervallo di default" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "funzione 'system' non consentita in modo `sandbox'" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print: tentativo di scrivere al lato in scrittura, chiuso, di una `pipe' " "bidirezionale" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "riferimento a variabile non inizializzata `$%d'" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "%s: ricevuto primo argomento non numerico" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: il terzo argomento non è un vettore" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s: non si può usare %s come terzo argomento" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: il terzo argomento `%.*s' trattato come 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: può essere chiamata indirettamente solo con due argomenti" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "chiamata indiretta a %s richiede almeno due argomenti" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): valori negativi non sono consentiti" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): valori troppo alti daranno risultati strani" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): valori negativi non sono consentiti" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): valori troppo alti daranno risultati strani" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "%s: chiamata con meno di due argomenti" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "%s: argomento %d non numerico" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: argomento %d con valore negativo %g non consentito" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): valore negativo non consentito" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): valori decimali saranno troncati" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' non è una categoria `locale' valida" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: il terzo argomento non è un vettore" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: tentativo di dividere per zero" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof: il secondo argomento non è un vettore" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" "typeof ha trovato una combinazione di flag `%s' non valida; siete pregati di " -"notificare questo bug." +"notificare questo bug" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: tipo di argomento sconosciuto `%s'" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: tipo di argomento sconosciuto `%s'" @@ -1016,443 +1028,440 @@ msgstr "" "non è consentito aggiungere un nuovo file (%.*s) ad ARGV in modo sandbox" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Immetti istruzioni (g)awk. Termina col comando `end'\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "numero elemento non valido: %d" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "info: opzione non valida - `%s'" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." -msgstr "sorgente: `%s': già immesso." +msgid "source: `%s': already sourced" +msgstr "sorgente: `%s': già immesso" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." -msgstr "save: `%s': comando non consentito." +msgid "save: `%s': command not permitted" +msgstr "save: `%s': comando non consentito" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "non si può usare il comando `commands' con comandi di breakpoint/watchpoint" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "non è stato ancora impostato alcun breakpoint/watchpoint" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "numero di breakpoint/watchpoint non valido" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Immetti comandi per quando si incontra %s %d, uno per riga.\n" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "Termina col comando `end'\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' valido solo nei comandi `commands' o `eval'" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "`silent' valido solo nel comando `commands'" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "trace: opzione non valida - `%s'" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: numero di breakpoint/watchpoint non valido" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "l'argomento non è una stringa" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "option: parametro non valido - `%s'" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "funzione non esistente - `%s'" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "enable: opzione non valida - `%s'" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "intervallo specificato non valido: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "valore non-numerico per campo numerico" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "trovato valore non-numerico, invece che numerico" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "valore intero diverso da zero" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -"backtrace [N] - stampe trace di tutti gli elementi o degli N più interni " -"(più esterni se N <0)" +"backtrace [N] - stampa trace di tutti gli elementi o degli N più interni " +"(degli N più esterni se N <0)" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -"break [[nome-file:]N|funzione] - metti breakpoint nel punto specificato." +"break [[nome-file:]N|funzione] - metti breakpoint nel punto specificato" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[nome-file:]N|funzione] - togli breakpoint impostati prima." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" +msgstr "clear [[nome-file:]N|funzione] - togli breakpoint impostati prima" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [num] - inizia una lista di comandi da eseguire se si raggiunge un " -"breakpoint (watchpoint)." +"breakpoint (watchpoint)" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -"condition num [espr.] - imposta o togli condizione di breakpoint o " -"watchpoint." +"condition num [espr.] - imposta o togli condizione di breakpoint o watchpoint" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [COUNT] - continua il programma che stai testando." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [COUNT] - continua il programma che stai testando" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "delete [breakpoints] [range] - togli breakpoint specificati." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "delete [breakpoints] [range] - togli breakpoint specificati" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." -msgstr "disbale [breakpoints] [range] - disabilita breakpoint specificati." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" +msgstr "disable [breakpoints] [range] - disabilita breakpoint specificati" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." -msgstr "display [var] - stampa valore variabile a ogni arresto di programma." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" +msgstr "display [var] - stampa valore variabile a ogni arresto di programma" -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] - discendi N elementi nello stack." +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [N] - discendi N elementi nello stack" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [nome-file] - elenca istruzioni su file o stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" +msgstr "dump [nome-file] - elenca istruzioni su file o stdout" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -"enable [once|del] [breakpoints] [range] - abilita breakpoint specificati." +"enable [once|del] [breakpoints] [range] - abilita breakpoint specificati" -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end - termina una lista di comandi o istruzioni awk." +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end - termina una lista di comandi o istruzioni awk" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval stmt|[p1, p2, ...] - calcola valore di istruzione/i awk." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval stmt|[p1, p2, ...] - calcola valore di istruzione/i awk" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." -msgstr "exit - (equivale a quit) esci dal debugger." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit - (equivale a quit) esci dal debugger" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." -msgstr "finish - esegui fino al ritorno dell'elemento di stack selezionato." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" +msgstr "finish - esegui fino al ritorno dell'elemento di stack selezionato" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - seleziona e stampa elemento di stack numero N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] - seleziona e stampa elemento di stack numero N" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." -msgstr "help [command] - stampa lista comandi o spiegazione di un comando." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" +msgstr "help [command] - stampa lista comandi o spiegazione di un comando" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" "ignore N CONTATORE - imposta a CONTATORE il numero delle volte in cui " -"ignorare il breakpoint numero N." +"ignorare il breakpoint numero N" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info argomento - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" "list [-|+|[nome-file:]num_riga|funzione|intervallo] - elenca riga/he " -"richiesta/e." +"richiesta/e" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" "next [COUNT] - esegui la/e prossima/e istruzione/i, incluse chiamate a " -"subroutine." +"subroutine" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [COUNT] - esegui la prossima istruzione, anche se è una chiamate a " -"subroutine." +"subroutine" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [name[=value]] - imposta o mostra opzione/i debugger." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [name[=value]] - imposta o visualizza opzione/i debugger" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." -msgstr "print var [var] - stampa valore di variabile/i o vettore/i." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "print var [var] - stampa valore di una variabile o di un vettore" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." -msgstr "printf format, [arg], ... - output secondo formato." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf format, [arg], ... - output secondo formato" -#: command.y:871 -msgid "quit - exit debugger." -msgstr "quit - esci dal debugger." +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit - esci dal debugger" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" -"return [value] - fa tornare al suo chiamante l'elemento di stack selezionato." +"return [value] - fa tornare al suo chiamante l'elemento di stack selezionato" -#: command.y:875 -msgid "run - start or restart executing program." -msgstr "run - inizia o ricomincia esecuzione programma." +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run - inizia o ricomincia esecuzione programma" -#: command.y:878 -msgid "save filename - save commands from the session to file." -msgstr "save nome-file - salva i comandi dalla sessione al file." +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save nome-file - salva i comandi dalla sessione al file" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." -msgstr "set var = value - assegna valore a una variabile scalare." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" +msgstr "set var = value - assegna valore a una variabile scalare" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -"silent - sospendi messaggio che segnala stop a un breakpoint/watchpoint." +"silent - sospendi messaggio che segnala stop a un breakpoint/watchpoint" -#: command.y:885 -msgid "source file - execute commands from file." -msgstr "source file - esegui comandi contenuti nel file." +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source nome-file - esegui comandi contenuti nel file" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" "step [CONTATORE] - esegui il programma finché non arriva a un'istruzione con " -"numero di riga differente." +"numero di riga differente" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [COUNT] - esegui esattamente un'istruzione." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [COUNT] - esegui esattamente un'istruzione" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[nome-file:]N|funzione] - imposta un breakpoint temporaneo." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[nome-file:]N|funzione] - imposta un breakpoint temporaneo" -#: command.y:893 -msgid "trace on|off - print instruction before executing." -msgstr "trace on|off - stampa istruzione prima di eseguirla." +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off - stampa istruzione prima di eseguirla" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" -"undisplay [N] - togli variabile/i dalla lista visualizzazioni automatiche." +"undisplay [N] - togli variabile/i dalla lista visualizzazioni automatiche" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[nome-file:]N|funzione] - esegui finché il programma arriva una riga " -"differente, o alla riga N nell'elemento di stack corrente." +"differente, o alla riga N nell'elemento di stack corrente" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] - togli variabile/i dalla watchlist." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] - togli variabile/i dalla watchlist" -#: command.y:901 -msgid "up [N] - move N frames up the stack." -msgstr "up [N] - spostati di N elementi dello stack verso l'alto." +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [N] - spostati di N elementi dello stack verso l'alto" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." -msgstr "watch var - imposta un watchpoint per una variabile." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch var - imposta un watchpoint per una variabile" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" -"dove [N] - (equivalente a backtrace) stampa traccia di tutti gli elementi o " -"degli N più interni (più esterni se N <0)" +"where [N] - (equivale a backtrace) stampa traccia di tutti gli elementi o " +"degli N più interni (degli N più esterni se N <0)" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "errore: " -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "non riesco a leggere comando: %s\n" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "non riesco a leggere comando: %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "carattere non valido nel comando" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "comando sconosciuto - `%.*s', vedere help" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "carattere non valido" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "comando non definito: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" -"imposta o mostra il numero di righe da tenere nel file che contiene la " -"storia comandi." +"imposta o visualizza il numero di righe da tenere nel file che contiene la " +"storia comandi" #: debug.c:259 -msgid "set or show the list command window size." -msgstr "imposta o mostra dimensioni finestra lista comandi" +msgid "set or show the list command window size" +msgstr "imposta o visualizza dimensioni finestra lista comandi" #: debug.c:261 -msgid "set or show gawk output file." -msgstr "imposta o mostra file di outpu gawk" +msgid "set or show gawk output file" +msgstr "imposta o visualizza file di output gawk" #: debug.c:263 -msgid "set or show debugger prompt." -msgstr "imposta o mostra prompt di debug" +msgid "set or show debugger prompt" +msgstr "imposta o visualizza prompt di debug" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." -msgstr "(dis)imposta o mostra salvataggio storia comandi (valore=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" +msgstr "(dis)imposta o visualizza salvataggio storia comandi (valore=on|off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." -msgstr "(dis)imposta o mostra salvataggio opzioni (valore=on|off)." +msgid "(un)set or show saving of options (value=on|off)" +msgstr "(dis)imposta o visualizza salvataggio opzioni (valore=on|off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." -msgstr "(dis)imposta o mostra tracciamento istruzioni (valore=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" +msgstr "(dis)imposta o visualizza tracciamento istruzioni (valore=on|off)" #: debug.c:358 -msgid "program not running." -msgstr "programma non in esecuzione." +msgid "program not running" +msgstr "programma non in esecuzione" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" -msgstr "file sorgente `%s' vuoto.\n" +msgstr "il file sorgente `%s' è vuoto.\n" -#: debug.c:493 -msgid "no current source file." -msgstr "file sorgente non disponibile." +#: debug.c:502 +msgid "no current source file" +msgstr "file sorgente corrente non disponibile." -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "non riesco a leggere file di nome `%s': %s" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -"ATTENZIONE: file sorgente `%s' modificato dopo la compilazione del " +"attenzione: file sorgente `%s' modificato dopo la compilazione del " "programma.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "numero riga %d non ammesso; `%s' ha %d righe" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "fine-file inattesa durante lettura file `%s', riga %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "file sorgente `%s' modificato dopo l'inizio esecuzione del programma." -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "File sorgente corrente: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Numero di righe: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "File sorgente (righe): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1460,54 +1469,54 @@ "Numero Disp Abilit. Posizione\n" "\n" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" -msgstr "\tn. di occorrenze = %ld\n" +msgid "\tnumber of hits = %ld\n" +msgstr "\tnumero di occorrenze = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignora prossime %ld occorrenze\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tcondizione per stop: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tcomandi:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Elemento corrente: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Chiamato da elemento: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Chiamante di elemento: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Assente in main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Nessun argomento.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Nessun `locale'.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1515,7 +1524,7 @@ "Tutte le variabili definite:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1523,7 +1532,7 @@ "Tutte le funzioni definite:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1531,7 +1540,7 @@ "Auto-visualizzazione variabili:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1539,382 +1548,387 @@ "Variabili Watch [da tenere sott'occhio]:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "nessun simbolo `%s' nel contesto corrente\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "`%s' non è un vettore\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "%ld = variabile non inizializzata\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "vettore `%s' vuoto\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" -msgstr "[\"%.*s\"] non presente nel vettore `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "indice \"%.*s\" non presente nel vettore `%s'\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s[\"%.*s\"]' non è un vettore\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' non è una variabile scalare" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "tentativo di usare vettore `%s[\"%.*s\"]' in un contesto scalare" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "tentativo di usare scalare `%s[\"%.*s\"]' come vettore" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "`%s' è una funzione" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "watchpoint %d non soggetto a condizioni\n" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" -msgstr "Nessun elemento numerato da visualizzare %ld" +msgid "no display item numbered %ld" +msgstr "nessun elemento numerato da visualizzare %ld" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" -msgstr "Nessun elemento numerato watch [da sorvegliare] da visualizzare %ld" +msgid "no watch item numbered %ld" +msgstr "nessun elemento numerato watch [da sorvegliare] da visualizzare %ld" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" -msgstr "%d: [\"%.*s\"] non presente nel vettore `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: indice \"%.*s\" non presente nel vettore `%s'\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "tentativo di usare valore scalare come vettore" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Watchpoint %d cancellato perché il parametro è fuori intervallo.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" "Visualizzazione %d cancellata perché il parametro è fuori intervallo.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " nel file `%s', riga %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " a `%s':%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tin " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Ulteriori elementi stack seguono...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "numero elemento non valido" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: breakpoint %d (abilitato, ignora prossimi %ld passaggi), anche " "impostato a %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Nota: breakpoint %d (abilitato), anche impostato a %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: breakpoint %d (disabilitato, ignora prossimi %ld passaggi), anche " "impostato a %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Nota: breakpoint %d (disabilitato), anche impostato a %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpoint %d impostato al file `%s', riga %d\n" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "non riesco a impostare breakpoint nel file `%s'\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" -msgstr "numero riga %d nel file `%s' fuori intervallo" +msgid "line number %d in file `%s' is out of range" +msgstr "il numero riga %d nel file `%s' è fuori intervallo" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "errore interno: non riesco a trovare la regola\n" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "non riesco a impostare breakpoint a `%s':%d\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "non riesco a impostare breakpoint nella funzione `%s'\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "breakpoint %d impostato al file `%s', riga %d è senza condizioni\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "numero riga %d nel file `%s' fuori intervallo" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Cancellato breakpoint %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "No breakpoint all'entrata nella funzione `%s'\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "No breakpoint al file `%s', riga #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "numero breakpoint non valido" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Cancello tutti i breakpoint? (y oppure n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "y" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Prossimi %ld passaggi dal breakpoint %d ignorati.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Farò uno stop al prossimo passaggio dal breakpoint %d.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Debug possibile solo per programmi con opzione `-f' specificata.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Non sono riuscito a far ripartire il debugger" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Programma già in esecuzione. Lo faccio ripartire dall'inizio (y/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Programma non fatto ripartire\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "errore: non riesco a far ripartire, operazione non consentita\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "errore (%s): non riesco a far ripartire, ignoro i comandi rimanenti\n" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" -msgstr "Partenza del programma: \n" +msgid "Starting program:\n" +msgstr "Partenza del programma:\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Programma completato anormalmente, valore in uscita: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Programma completato normalmente, valore in uscita: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "Il programma è in esecuzione. Esco comunque (y/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Non interrotto ad alcun breakpoint: argomento ignorato.\n" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." -msgstr "numero di breakpoint non valido %d." +msgid "invalid breakpoint number %d" +msgstr "numero di breakpoint non valido %d" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Prossimi %ld passaggi dal breakpoint %d ignorati.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "'finish' non significativo nell'elemento iniziale main()\n" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "Esegui fino al ritorno da " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "'return' non significativo nell'elemento iniziale main()\n" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "non trovo la posizione specificata nella funzione `%s'\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "riga sorgente invalida %d nel file `%s'" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "non trovo posizione specificata %d nel file `%s'\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "elemento non presente nel vettore\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "variabile di tipo sconosciuto\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Mi fermo in %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "'finish' not significativo per salti non-locali '%s'\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' not significativo per salti non-locali '%s'\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t------[Invio] per continuare o [q] + [Invio] per uscire------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] non presente nel vettore `%s'" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "output inviato a stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "numero non valido" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' non consentito nel contesto corrente; istruzione ignorata" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' non consentito nel contesto corrente; istruzione ignorata" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" -msgstr "Simbolo `%s' non esiste nel contesto corrente" +msgid "no symbol `%s' in current context" +msgstr "nessun simbolo `%s' nel contesto corrente" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "tipo nodo sconosciuto %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "codice operativo sconosciuto %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "codice operativo %s non è un operatore o una parola chiave" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "superamento limiti buffer in 'genflags2str'" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1925,71 +1939,71 @@ "\t# `Stack' (Pila) Chiamate Funzione:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' è un'estensione gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' è un'estensione gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "valore di BINMODE `%s' non valido, considerato come 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "specificazione invalida `%sFMT' `%s'" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "disabilito `--lint' a causa di assegnamento a `LINT'" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "riferimento ad argomento non inizializzato `%s'" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "riferimento a variabile non inizializzata `%s'" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "tentativo di riferimento a un campo da valore non-numerico" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "tentativo di riferimento a un campo da una stringa nulla" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "tentativo di accedere al campo %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "riferimento a campo non inizializzato `$%ld'" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funzione `%s' chiamata con più argomenti di quelli previsti" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo non previsto `%s'" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "divisione per zero tentata in `/='" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "divisione per zero tentata in `%%='" @@ -2078,78 +2092,78 @@ msgid "dynamic loading of libraries is not supported" msgstr "caricamento dinamico di librerie non supportato" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: non riesco a leggere il link simbolico `%s'" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "stat: il primo argomento non è una stringa" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "stat: il secondo argomento non è un vettore" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: parametri errati" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "ftp init: non riesco a creare variabile %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts non disponibile su questo sistema" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: non riesco a creare vettore, memoria esaurita" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: non riesco a impostare elemento" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: non riesco a impostare elemento" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: non riesco a impostare elemento" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: non riesco a creare vettore" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: non riesco a impostare elemento" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: chiamata con numero di argomenti errato, 3 previsti" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "fts: il primo argomento non è un vettore" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "fts: il secondo argomento non è un vettore" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "ftp: il terzo argomento non è un vettore" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: non sono riuscito ad appiattire un vettore\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignoro flag infido FTS_NOSTAT. nooo, nooo, nooo." @@ -2288,7 +2302,7 @@ msgid "chr: first argument is not a number" msgstr "chr: il primo argomento non è un vettore" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir non riuscita: %s" @@ -2376,185 +2390,190 @@ msgid "sleep: not supported on this platform" msgstr "sleep: non supportato in questa architettura" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "record in input troppo lungo" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF impostato a un valore negativo" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "diminuire NF è non-portabile a molte versioni awk" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "utilizzare campi da una regola END può essere non-portabile" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: il quarto argomento è un'estensione gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: il quarto argomento non è un vettore" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: non consentito usare %s come quarto argomento" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: il secondo argomento non è un vettore" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: non si può usare un unico vettore come secondo e quarto argomento" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: non consentito un quarto argomento che sia un sottovettore del " "secondo argomento" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: non consentito un secondo argomento che sia un sottovettore del " "quarto argomento" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "split: la stringa nulla come terzo arg. è un'estensione non-standard" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: il quarto argomento non è un vettore" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: il secondo argomento non è un vettore" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: il terzo argomento non può essere nullo" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: non si può usare un unico vettore come secondo e quarto argomento" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: non consentito un quarto argomento che sia un sottovettore del " "secondo argomento" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: non consentito un secondo argomento che sia un sottovettore del " "quarto argomento" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' è un'estensione gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "`*' deve essere l'ultimo elemento specificato per FIELDWIDTHS" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "valore di FIELDWIDTHS non valido, per il campo %d, vicino a `%s'" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "la stringa nulla usata come `FS' è un'estensione gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "il vecchio awk non supporta espressioni come valori di `FS'" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' è un'estensione gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: ricevuto retval nullo" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: non in modalità MPFR" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: MPFR non disponibile" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: tipo di numero non valido `%d'" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func: ricevuto come nome dello spazio-dei-nomi la stringa NULL" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" "node_to_awk_value: trovata combinazione numerica di flag non valida `%s'; " -"siete pregati di notificare questo bug." +"siete pregati di notificare questo bug" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: ricevuto nodo nullo" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: ricevuto valore nullo" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value ha trovato la combinazione flag invalida `%s'; siete " -"pregati di notificare questo bug." +"pregati di notificare questo bug" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: ricevuto vettore nullo" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: ricevuto indice nullo" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" "api_flatten_array_typed: non sono riuscito a convertire l'indice %d a %s" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "" "api_flatten_array_typed: non sono riuscito a convertire il valore %d a %s" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: MPFR non disponibile" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "non riesco a trovare la fine di una regola BEGINFILE" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "non riesco ad aprire file di tipo non riconosciuto `%s' per `%s'" @@ -2564,31 +2583,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "l'argomento in riga comando `%s' è una directory: ignorata" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "non riesco ad aprire file `%s' in lettura: %s" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "chiusura di fd %d (`%s') non riuscita: %s" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "`%.*s' usati come file di input e file di output" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "`%.*s' usati come file di input e `pipe' di input" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "`%.*s' usati come file di input e `pipe' bidirezionale" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "`%.*s' usati come file di input e `pipe' di output" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "mistura non necessaria di `>' e `>>' per il file `%.*s'" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "`%.*s' usati come `pipe' in input e file in output" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "`%.*s' usati come file in output e `pipe' in output" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "`%.*s' usati come file in output e `pipe' bidirezionale" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "`%.*s' usati come `pipe' in input e `pipe' in output" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "`%.*s' usati come `pipe' in input e `pipe' bidirezionale" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "`%.*s' usati come `pipe' in output e `pipe' bidirezionale" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "ri-direzione non consentita in modo `sandbox'" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "espressione nella ri-direzione `%s' è un numero" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "espressione nella ri-direzione `%s' ha per valore la stringa nulla" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2596,27 +2670,22 @@ "nome-file `%.*s' per la ri-direzione `%s' può essere il risultato di una " "espressione logica" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "mistura non necessaria di `>' e `>>' per il file `%.*s'" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file non riesce a creare una `pipe' `%s' con fd %d" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "non riesco ad aprire `pipe' `%s' in scrittura: %s" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "non riesco ad aprire `pipe' `%s' in lettura: %s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2624,254 +2693,260 @@ "creazione di socket get_file non disponibile su questa piattaforma per `%s' " "con fd %d" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" "non riesco ad aprire `pipe' bidirezionale `%s' in lettura/scrittura: %s" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "non riesco a ri-dirigere da `%s': %s" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "non riesco a ri-dirigere a `%s': %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "numero massimo consentito di file aperti raggiunto: comincio a riutilizzare " "i descrittori di file" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." -msgstr "chiusura di `%s' non riuscita: %s." +msgid "close of `%s' failed: %s" +msgstr "chiusura di `%s' non riuscita: %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "troppe `pipe' o file di input aperti" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: il secondo argomento deve essere `a' o `da'" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' non è un file aperto, una `pipe' o un co-processo" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "chiusura di una ri-direzione mai aperta" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "close: ri-direzione `%s' non aperta con `|&', ignoro secondo argomento" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "errore ritornato (%d) dalla chiusura della `pipe' `%s': %s" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "" +"errore ritornato (%d) dalla chiusura della `pipe' bidirezionale `%s': %s" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "errore ritornato (%d) dalla chiusura del file `%s': %s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "nessuna chiusura esplicita richiesta per `socket' `%s'" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "nessuna chiusura esplicita richiesta per co-processo `%s'" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "nessuna chiusura esplicita richiesta per `pipe' `%s'" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "nessuna chiusura esplicita richiesta per file `%s'" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: non riesco a terminare lo standard output: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: non riesco a terminare lo standard error: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "errore scrivendo `standard output': %s" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "errore scrivendo `standard error': %s" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." -msgstr "scaricamento di `pipe' `%s' non riuscito: %s." +msgid "pipe flush of `%s' failed: %s" +msgstr "scaricamento di `pipe' `%s' non riuscito: %s" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." -msgstr "scaricamento da co-processo di `pipe' a `%s' non riuscito: %s." +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "scaricamento da co-processo di `pipe' a `%s' non riuscito: %s" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." -msgstr "scaricamento di file `%s' non riuscito: %s." +msgid "file flush of `%s' failed: %s" +msgstr "scaricamento di file `%s' non riuscito: %s" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "porta locale %s invalida in `/inet: %s'" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "porta locale %s invalida in `/inet'" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "host remoto e informazione di porta (%s, %s) invalidi: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "host remoto e informazione di porta (%s, %s) invalidi" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "comunicazioni TCP/IP non supportate" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "non riesco ad aprire `%s', modo `%s'" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "close di `pty' principale non riuscita: %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "close di `stdout' nel processo-figlio non riuscita: %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "trasferimento di `pty' secondaria a `stdout' nel processo-figlio non " "riuscita (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "close di `stdin' nel processo-figlio non riuscita: %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "trasferimento di `pty' secondaria a `stdin' nel processo-figlio non riuscito " "(dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "close di `pty' secondaria non riuscita: %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "non riesco a creare processo-figlio o ad aprire `pty'" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "passaggio di `pipe' a `stdout' nel processo-figlio non riuscito (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "passaggio di `pipe' a `stdin' nel processo-figlio non riuscito (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "ripristino di `stdout' nel processo-padre non riuscito" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "ripristino di `stdin' nel processo-padre non riuscito" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "close di `pipe' non riuscita: %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "`|&' non supportato" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "non riesco ad aprire `pipe' `%s': %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "non riesco a creare processo-figlio per `%s' (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" "getline: tentativo di elggere dal lato in scrittura, chiuso, di una `pipe' " "bidirezionale" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: ricevuto puntatore NULL" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "input parser `%s' in conflitto con l'input parser `%s' installato in " "precedenza" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'input parser `%s' non è riuscito ad aprire `%s'" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: ricevuto puntatore NULL" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2879,16 +2954,16 @@ "output wrapper `%s' in conflitto con l'output wrapper `%s' installato in " "precedenza" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "l'output wrapper `%s' non è riuscito ad aprire `%s'" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: ricevuto puntatore NULL" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2897,212 +2972,216 @@ "processore doppio `%s' in conflitto con il processore doppio installato in " "precedenza `%s'" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "il processore doppio `%s' non è riuscito ad aprire `%s'" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "file dati `%s' vuoto" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "non riesco ad allocare ulteriore memoria per l'input" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "valore multicarattere per `RS' è un'estensione gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "comunicazioni IPv6 non supportate" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "variable d'ambiente `POSIXLY_CORRECT' impostata: attivo `--posix'" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' annulla `--traditional'" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' annulla `--non-decimal-data'" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' annulla `--characters-as-bytes'" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "eseguire %s con `setuid' root può essere un rischio per la sicurezza" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "non è possibile impostare modalità binaria su `stdin': %s" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "non è possibile impostare modalità binaria su `stdout': %s" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "non è possibile impostare modalità binaria su `stderr': %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "manca del tutto il testo del programma!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Uso: %s [opzioni in stile POSIX o GNU] -f file-prog. [--] file ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Usage: %s [opzioni in stile POSIX o GNU] [--] %cprogramma%c file ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opzioni POSIX:\t\topzioni lunghe GNU: (standard)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fileprog\t\t--file=file-prog.\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valore\t\t--assign=var=valore\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opzioni brevi:\t\topzioni lunghe GNU: (estensioni)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[file]\t\t--debug[=file]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'testo-del-programma'\t--source='testo-del-programma'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include_file\t\t--include=include_file\n" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-I\t\t\t--trace\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l libreria\t\t--load=libreria\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[file]\t\t--pretty-print[=file]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z locale-name\t\t--locale=locale-name\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3122,7 +3201,7 @@ "Per problemi di traduzione, contattare: azc100@gmail.com.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3132,7 +3211,7 @@ "Senza parametri, legge da `standard input' e scrive su `standard output'.\n" "\n" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -3143,7 +3222,7 @@ "\t%s '{ sum += $1 }; END { print sum }' file\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3162,7 +3241,7 @@ "Licenza, o (a tua scelta) a una qualsiasi versione successiva.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3176,7 +3255,7 @@ "Vedi la 'GNU General Public License' per ulteriori dettagli.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3185,11 +3264,11 @@ "assieme a questo programma; se non è così, vedi http://www.gnu.org/" "licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft non imposta FS a `tab' nell'awk POSIX" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3198,160 +3277,165 @@ "%s: `%s' argomento di `-v' non in forma `var=valore'\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' non è un nome di variabile ammesso" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' non è un nome di variabile, cerco il file `%s=%s'" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "nome funzione interna gawk `%s' non ammesso come nome variabile" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "non è possibile usare nome di funzione `%s' come nome di variabile" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "eccezione floating point" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "errore fatale: errore interno" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "errore fatale: errore interno: segfault" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "errore fatale: errore interno: stack overflow" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "manca `fd' pre-aperta %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "non riesco a pre-aprire /dev/null per `fd' %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "argomento di `-e/--source' nullo, ignorato" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "`--profile' annulla `--pretty-print'" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignorato: supporto per MPFR/GMP non generato" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opzione `-W %s' non riconosciuta, ignorata\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "valore PREC `%.*s' non valido" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" -msgstr "valore di RNDMODE `%.*s' non valido" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "valore di ROUNDMODE `%.*s' non valido" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: ricevuto primo argomento non numerico" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: ricevuto secondo argomento non numerico" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s: ricevuto argomento negativo %.*s" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: ricevuto argomento non numerico" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: ricevuto argomento non numerico" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): valore negativo non consentito" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "comp(%Rg): valore decimale sarà troncato" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): non sono consentiti valori negativi" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: ricevuto argomento non numerico #%d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argomento #%d con valore non valido %Rg, uso 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: argomento #%d con valore negativo %Rg non consentito" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argomento #%d, valore decimale sarà troncato" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: argomento #%d con valore negativo %Zd non consentito" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: chiamata con meno di due argomenti" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: chiamata con meno di due argomenti" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: chiamata con meno di due argomenti" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: ricevuto argomento non numerico" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: ricevuto primo argomento non numerico" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: ricevuto secondo argomento non numerico" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "riga com.:" @@ -3360,20 +3444,20 @@ msgid "could not make typed regex" msgstr "non sono riuscito a creare una `typed regex'" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "il vecchio awk non supporta la sequenza di protezione '\\%c'" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX non consente escape `\\x'" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "niente cifre esadecimali nella sequenza di protezione `\\x'" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3382,18 +3466,18 @@ "sequenza di escape esadec.\\x%.*s di %d caratteri probabilmente non " "interpretata nel modo previsto" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sequenza di protezione `\\%c' considerata come semplice `%c'" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Trovati dati multi-byte invalidi. Può esserci una differenza tra i dati e la " -"codifica locale." +"codifica locale" #: posix/gawkmisc.c:177 #, c-format @@ -3439,11 +3523,11 @@ msgid "internal error: %s with null vname" msgstr "errore interno: %s con `vname' nullo" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "errore interno: funzione interna con `fname' nullo" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3452,7 +3536,7 @@ "%s# Estensioni caricate (-l e/o @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3463,12 +3547,12 @@ "# File inclusi (-i e/o @include)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profilo gawk, creato %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3477,7 +3561,7 @@ "\n" "\t# Funzioni, in ordine alfabetico\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo di ri-direzione non noto %d" @@ -3512,39 +3596,39 @@ msgstr "" "componente di espressione `%.*s' dovrebbe probabilmente essere `[%.*s]'" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "[ non chiusa" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "character class non valida" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "sintassi character class è [[:spazio:]], non [:spazio:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "sequenza escape \\ non completa" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "contenuto di \\{\\} non valido" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "espressione regolare troppo complessa" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "( non chiusa" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "nessuna sintassi specificata" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") non aperta" @@ -3676,12 +3760,12 @@ msgid "No previous regular expression" msgstr "Nessuna espressione regolare precedente" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" "funzione `%s': non è possibile usare nome funzione `%s' come nome parametro" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "non posso salire più in alto nel contesto di esecuzione" diff -urN gawk-5.1.0/po/ja.po gawk-5.1.1/po/ja.po --- gawk-5.1.0/po/ja.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/ja.po 2021-10-27 07:58:41.000000000 +0300 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2014-11-07 12:26+0000\n" "Last-Translator: Yasuaki Taniguchi \n" "Language-Team: Japanese \n" @@ -18,495 +18,508 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "%s ã‹ã‚‰" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "スカラー値をé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "スカラー仮引数 `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "スカラー `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "スカラーコンテキストã§é…列 `%s' を使用ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:575 +#: array.c:576 #, fuzzy, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚りã¾ã›ã‚“" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "スカラー `%s[\"%.*s\"]' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, fuzzy, c-format msgid "%s: first argument is not an array" msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: array.c:824 +#: array.c:826 #, fuzzy, c-format msgid "%s: second argument is not an array" msgstr "split: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "asort: 第一引数ã®éƒ¨åˆ†é…列を第二引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" + +#: array.c:837 +#, fuzzy, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: array.c:838 +#: array.c:839 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, fuzzy, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "asort: 第一引数ã®éƒ¨åˆ†é…列を第二引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: array.c:849 +#: array.c:856 #, fuzzy, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "asort: 第二引数ã®éƒ¨åˆ†é…列を第一引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' ã¯é–¢æ•°åã¨ã—ã¦ã¯ç„¡åйã§ã™" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "ソート比較関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s ブロックã«ã¯ã‚¢ã‚¯ã‚·ãƒ§ãƒ³éƒ¨ãŒå¿…é ˆã§ã™" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "å„ルールã«ã¯ãƒ‘ターンã¾ãŸã¯ã‚¢ã‚¯ã‚·ãƒ§ãƒ³éƒ¨ãŒå¿…é ˆã§ã™ã€‚" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "å¤ã„ awk ã¯è¤‡æ•°ã® `BEGIN' ã¾ãŸã¯ `END' ルールをサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' ã¯çµ„è¾¼ã¿é–¢æ•°ã§ã™ã€‚å†å®šç¾©ã§ãã¾ã›ã‚“" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "æ­£è¦è¡¨ç¾å®šæ•° `//' 㯠C++コメントã«ä¼¼ã¦ã„ã¾ã™ãŒã€é•ã„ã¾ã™ã€‚" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "æ­£è¦è¡¨ç¾å®šæ•° `/%s/' 㯠C コメントã«ä¼¼ã¦ã„ã¾ã™ãŒã€ç•°ãªã‚Šã¾ã™" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "switch æ–‡ã®ä¸­ã§é‡è¤‡ã—㟠case 値ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "switch æ–‡ã®ä¸­ã§é‡è¤‡ã—㟠`default' ãŒæ¤œå‡ºã•れã¾ã—ãŸ" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' ã¯ãƒ«ãƒ¼ãƒ—ã¾ãŸã¯ switch ã®å¤–ã§ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "`continue' ã¯ãƒ«ãƒ¼ãƒ—ã®å¤–ã§ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "%s アクション内㧠`next' ãŒä½¿ç”¨ã•れã¾ã—ãŸ" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' ㌠%s アクション内ã§ä½¿ç”¨ã•れã¾ã—ãŸ" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "`return' ãŒé–¢æ•°å®šç¾©æ–‡ã®å¤–ã§ä½¿ã‚れã¾ã—ãŸ" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "BEGIN ã¾ãŸã¯ END ルール内ã®å¼•æ•°ã®ç„¡ã„ `print' 㯠`print \"\"' ã ã¨æ€ã‚れã¾ã™" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' ã¯ç§»æ¤æ€§ã®ç„¡ã„ tawk æ‹¡å¼µã§ã™" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "多段階ã§åŒæ–¹å‘パイプを利用ã—ãŸå¼ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "æ­£è¦è¡¨ç¾ãŒä»£å…¥å¼ã®å³è¾ºã«ä½¿ç”¨ã•れã¦ã„ã¾ã™" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "`~' ã‚„ `!~' 演算å­ã®å·¦è¾ºã«æ­£è¦è¡¨ç¾ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "å¤ã„ awk ã§ã¯ `in' 予約語㯠`for' ã®å¾Œã‚’除ãサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "比較å¼ã®å³è¾ºã«æ­£è¦è¡¨ç¾ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`%s' ルールã®å†…å´ã§ã¯ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¦ã„ãªã„ `getline' ã¯ç„¡åйã§ã™" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "リダイレクトã•れã¦ã„ãªã„ `getline' 㯠END アクションã§ã¯æœªå®šç¾©ã§ã™ã€‚" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "å¤ã„ awk ã¯å¤šæ¬¡å…ƒé…列をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "å°æ‹¬å¼§ãŒç„¡ã„ `length' ã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "間接関数呼ã³å‡ºã—㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:2010 +#: awkgram.y:2017 #, fuzzy, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "特別ãªå¤‰æ•° `%s' ã¯é–“接関数呼ã³å‡ºã—用ã«ã¯ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:2043 +#: awkgram.y:2050 #, fuzzy, c-format msgid "attempt to use non-function `%s' in function call" msgstr "関数 `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "添字ã®å¼ãŒç„¡åйã§ã™" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "警告: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "致命的: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "予期ã—ãªã„改行ã¾ãŸã¯æ–‡å­—列終端ã§ã™" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, fuzzy, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "ソースファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, fuzzy, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "共有ライブラリ `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "åŽŸå› ä¸æ˜Ž" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "共有ライブラリ `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "@include ã®å¾Œã«ç©ºã®ãƒ•ァイルåãŒã‚りã¾ã™" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "@load ã®å¾Œã«ç©ºã®ãƒ•ァイルåãŒã‚りã¾ã™" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "コマンド行ã®ãƒ—ログラム表記ãŒç©ºã§ã™" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, fuzzy, c-format msgid "cannot read source file `%s': %s" msgstr "ソースファイル `%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ (%s)" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "ソースファイル `%s' ã¯ç©ºã§ã™" -#: awkgram.y:3310 +#: awkgram.y:3317 #, fuzzy, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "ç„¡åŠ¹ãªæ–‡å­—クラスåã§ã™" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ”¹è¡Œã§çµ‚ã£ã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "終端ã•れã¦ã„ãªã„æ­£è¦è¡¨ç¾ãŒãƒ•ァイル最後㮠`\\' ã§çµ‚ã£ã¦ã„ã¾ã™ã€‚" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "æ­£è¦è¡¨ç¾ãŒçµ‚端ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "ファイルã®ä¸­ã§æ­£è¦è¡¨ç¾ãŒçµ‚端ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "`\\ #...' å½¢å¼ã®è¡Œç¶™ç¶šã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ãŒè¡Œæœ€å¾Œã®æ–‡å­—ã«ãªã£ã¦ã„ã¾ã›ã‚“。" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 #, fuzzy msgid "multidimensional arrays are a gawk extension" msgstr "間接関数呼ã³å‡ºã—㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, fuzzy, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX ã§ã¯æ¼”ç®—å­ `**' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, fuzzy, c-format msgid "operator `%s' is not supported in old awk" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `^' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "文字列ãŒçµ‚端ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 #, fuzzy msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX ã§ã¯ `\\x' エスケープã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 #, fuzzy msgid "backslash string continuation is not portable" msgstr "`\\ #...' å½¢å¼ã®è¡Œç¶™ç¶šã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "å¼å†…ã«ç„¡åŠ¹ãªæ–‡å­— '%c' ãŒã‚りã¾ã™" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ã§ã¯ `%s' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "å¤ã„ awk 㯠`%s' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:4500 +#: awkgram.y:4507 #, fuzzy msgid "`goto' considered harmful!" msgstr "`goto' ã¯æœ‰å®³ã ã¨è¦‹ãªã•れã¦ã„ã¾ã™!\n" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d 㯠%s 用ã®å¼•æ•°ã®æ•°ã¨ã—ã¦ã¯ç„¡åйã§ã™" -#: awkgram.y:4604 +#: awkgram.y:4611 #, fuzzy, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "%s: æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã‚’ç½®ãæ›ãˆæœ€å¾Œã®å¼•æ•°ã«ä½¿ç”¨ã™ã‚‹ã¨åŠ¹æžœãŒã‚りã¾ã›ã‚“" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s 第三仮引数ã¯å¯å¤‰ã‚ªãƒ–ジェクトã§ã¯ã‚りã¾ã›ã‚“" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: 第三引数㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: 第二引数㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcgettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—" "ã¦ãã ã•ã„" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcngettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—" "ã¦ãã ã•ã„" -#: awkgram.y:4819 +#: awkgram.y:4826 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–りã¾ã—ãŸ" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "関数 `%s': 仮引数 `%s' ãŒå¤§åŸŸå¤‰æ•°ã‚’覆ã„éš ã—ã¦ã„ã¾ã™" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "`%s' を書込ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "変数リストを標準エラーã«é€ã£ã¦ã„ã¾ã™" -#: awkgram.y:4930 +#: awkgram.y:4937 #, fuzzy, c-format msgid "%s: close failed: %s" msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() を二回呼ã³å‡ºã—ã¦ã„ã¾ã™!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "覆ã„éš ã•れãŸå¤‰æ•°ãŒã‚りã¾ã—ãŸ" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "関数å `%s' ã¯å‰ã«å®šç¾©ã•れã¦ã„ã¾ã™" -#: awkgram.y:5091 +#: awkgram.y:5098 #, fuzzy, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "関数 `%s': 関数åを仮引数åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:5094 +#: awkgram.y:5101 #, fuzzy, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "関数 `%s': 特別ãªå¤‰æ•° `%s' ã¯é–¢æ•°ã®ä»®å¼•æ•°ã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:5098 +#: awkgram.y:5105 #, fuzzy, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "関数 `%s': 仮引数 `%s' ãŒå¤§åŸŸå¤‰æ•°ã‚’覆ã„éš ã—ã¦ã„ã¾ã™" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "関数 `%s': 仮引数 #%d, `%s' ãŒä»®å¼•æ•° #%d ã¨é‡è¤‡ã—ã¦ã„ã¾ã™" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "未定義ã®é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "関数 `%s' ã¯å®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ä¸€åº¦ã‚‚直接呼ã³å‡ºã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "仮引数 #%d ç”¨ã®æ­£è¦è¡¨ç¾å®šæ•°ã¯çœŸå½å€¤ã‚’出力ã—ã¾ã™" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -515,64 +528,68 @@ "関数å㨠`(' ã®é–“ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’入れã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚\n" "ã¾ãŸã¯ã€å¤‰æ•°ã‹é…列ã¨ã—ã¦ä½¿ã‚れã¦ã„ã¾ã™ã€‚" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "ゼロã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "`%%' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5805 +#: awkgram.y:5828 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d 㯠%s 用ã®å¼•æ•°ã®æ•°ã¨ã—ã¦ã¯ç„¡åйã§ã™" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "æ–‡ã«åŠ¹æžœãŒã‚りã¾ã›ã‚“" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 #, fuzzy msgid "@namespace is a gawk extension" msgstr "@include 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -591,8 +608,8 @@ msgid "standard error" msgstr "標準出力" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" @@ -635,7 +652,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: `%s' ãŒé–‹ã‹ã‚ŒãŸãƒ•ァイルã€ãƒ‘イプã€ãƒ—ロセス共有ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, fuzzy, c-format msgid "%s: received non-string first argument" msgstr "index: 文字列ã§ã¯ç„¡ã„第一引数をå—ã‘å–りã¾ã—ãŸ" @@ -653,182 +670,170 @@ msgid "`length(array)' is a gawk extension" msgstr "`length(array)' 㯠gawk æ‹¡å¼µã§ã™" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, fuzzy, c-format msgid "%s: received non-string argument" msgstr "system: 文字列ã§ã¯ç„¡ã„引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, fuzzy, c-format msgid "%s: received negative argument %g" msgstr "log: è² ã®å¼•æ•° %g ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "" "致命的: `count$’ ã¯å…¨ã¦ã®æ›¸å¼ä½¿ç”¨ã™ã‚‹ã€ã¾ãŸã¯å…¨ã¦ã«ä½¿ç”¨ã—ãªã„ã®ã„ãšã‚Œã‹ã§ãªã‘" "れã°ã„ã‘ã¾ã›ã‚“" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ィールド幅ã¯ç„¡è¦–ã•れã¾ã™" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ィールド幅ã¯ç„¡è¦–ã•れã¾ã™" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ィールド幅ãŠã‚ˆã³ç²¾åº¦ã¯ç„¡è¦–ã•れã¾ã™" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "致命的: `$' 㯠awk å½¢å¼å†…ã§ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy msgid "fatal: argument index with `$' must be > 0" msgstr "致命的: `$' ã§æŒ‡å®šã™ã‚‹å¼•æ•°ã®ç•ªå·ã¯æ­£ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "致命的: 引数ã®ç•ªå· %ld ã¯å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸæ•°ã‚ˆã‚Šå¤§ãã„ã§ã™" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "致命的: `$' ã¯æ›¸å¼æŒ‡å®šå†…ã®ãƒ”リオド `.' ã®å¾Œã«ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "致命的: フィールド幅ã€ã¾ãŸã¯ç²¾åº¦ã®æŒ‡å®šå­ã« `$' ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `l' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `l' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `L' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `L' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `h' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `h' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" - -#: builtin.c:1092 +#: builtin.c:1070 #, fuzzy, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1105 +#: builtin.c:1083 #, fuzzy, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1505 +#: builtin.c:1483 #, fuzzy, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "䏿˜Žãªæ›¸å¼æŒ‡å®šæ–‡å­— `%c' を無視ã—ã¦ã„ã¾ã™: 変æ›ã•れる引数ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "致命的: æ›¸å¼æ–‡å­—列を満ãŸã™ååˆ†ãªæ•°ã®å¼•æ•°ãŒã‚りã¾ã›ã‚“" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ ã“ã“ã‹ã‚‰è¶³ã‚Šã¾ã›ã‚“" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: æ›¸å¼æŒ‡å®šå­ã«åˆ¶å¾¡æ–‡å­—ãŒã‚りã¾ã›ã‚“" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "æ›¸å¼æ–‡å­—列ã«ä¸Žãˆã‚‰ã‚Œã¦ã„る引数ãŒå¤šã™ãŽã¾ã™" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: 引数ãŒã‚りã¾ã›ã‚“" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: 引数ãŒã‚りã¾ã›ã‚“" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: é•·ã• %g ㌠1 以上ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: é•·ã• %g ㌠0 以上ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: 文字数 %g ã®å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã¾ã™ã€‚" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: 文字数 %g ã¯æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚%g を使ã„ã¾ã™ã€‚" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: 開始インデックス %g ãŒç„¡åйã§ã™ã€‚1を使用ã—ã¾ã™" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: 開始インデックス %g ãŒéžæ•´æ•°ã®ãŸã‚ã€å€¤ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: 文字列ã®é•·ã•ãŒã‚¼ãƒ­ã§ã™ã€‚" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: 開始インデックス %g ãŒæ–‡å­—列終端ã®å¾Œã«ã‚りã¾ã™" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -836,156 +841,161 @@ "substr: 開始インデックス %2$g ã‹ã‚‰ã®é•·ã• %1$g ã¯ç¬¬ä¸€å¼•æ•°ã®é•·ã•ã‚’è¶…ãˆã¦ã„ã¾ã™ " "(%3$lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: PROCINFO[\"strftime\"] ã®æ›¸å¼ã®å€¤ã¯æ•°å€¤åž‹ã§ã™" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, fuzzy, c-format msgid "%s: received non-numeric second argument" msgstr "or: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:2025 +#: builtin.c:2014 #, fuzzy msgid "strftime: second argument out of range for time_t" msgstr "asorti: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: ç©ºã®æ›¸å¼æ–‡å­—列をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: 一ã¤ä»¥ä¸Šã®å€¤ãŒãƒ‡ãƒ•ォルトã®ç¯„囲を超ãˆã¦ã„ã¾ã™" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "サンドボックスモードã§ã¯ 'system' 関数ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„フィールド `$%d' ã¸ã®å‚ç…§ã§ã™" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, fuzzy, c-format msgid "%s: received non-numeric first argument" msgstr "or: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: 第三引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +msgid "%s: cannot use %s as third argument" +msgstr "asort: 第一引数ã®éƒ¨åˆ†é…列を第二引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" + +#: builtin.c:2916 #, fuzzy, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: 第三引数㌠0 ã§ã™ã€‚1 を代ã‚りã«ä½¿ç”¨ã—ã¾ã™" -#: builtin.c:3246 +#: builtin.c:3267 #, fuzzy, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "and: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: builtin.c:3369 +#: builtin.c:3390 #, fuzzy, c-format msgid "indirect call to %s requires at least two arguments" msgstr "and: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: builtin.c:3444 +#: builtin.c:3465 #, fuzzy, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3483 +#: builtin.c:3504 #, fuzzy, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, fuzzy, c-format msgid "%s: called with less than two arguments" msgstr "or: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, fuzzy, c-format msgid "%s: argument %d is non-numeric" msgstr "or: 引数 %d ãŒéžæ•°å€¤ã§ã™" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3611 +#: builtin.c:3632 #, fuzzy, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' ã¯ç„¡åйãªãƒ­ã‚±ãƒ¼ãƒ«åŒºåˆ†ã§ã™" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 #, fuzzy msgid "intdiv: third argument is not an array" msgstr "match: 第三引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 #, fuzzy msgid "intdiv: division by zero attempted" msgstr "ゼロã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ" -#: builtin.c:4080 +#: builtin.c:4106 #, fuzzy msgid "typeof: second argument is not an array" msgstr "split: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, fuzzy, c-format msgid "typeof: invalid argument type `%s'" msgstr "option: 無効ãªãƒ‘ラメーター - \"%s\"" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "" @@ -995,862 +1005,869 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "無効ãªãƒ•レーム番å·ã§ã™: %d" -#: command.y:297 +#: command.y:298 #, fuzzy, c-format msgid "info: invalid option - `%s'" msgstr "info: 無効ãªã‚ªãƒ—ション - \"%s\"" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "source \"%s\": æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦(source)ã„ã¾ã™ã€‚" -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "save \"%s\": コマンドã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“。" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "ã¾ã ä¸€ã¤ã‚‚ブレークãƒã‚¤ãƒ³ãƒˆ/ウオッãƒãƒã‚¤ãƒ³ãƒˆã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "無効ãªãƒ–レークãƒã‚¤ãƒ³ãƒˆ/ウオッãƒãƒã‚¤ãƒ³ãƒˆç•ªå·ã§ã™" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:375 +#: command.y:376 #, fuzzy, c-format msgid "trace: invalid option - `%s'" msgstr "trace: 無効ãªã‚ªãƒ—ション - \"%s\"" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "å¼•æ•°ãŒæ–‡å­—列ã§ã¯ã‚りã¾ã›ã‚“" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, fuzzy, c-format msgid "option: invalid parameter - `%s'" msgstr "option: 無効ãªãƒ‘ラメーター - \"%s\"" -#: command.y:476 +#: command.y:477 #, fuzzy, c-format msgid "no such function - `%s'" msgstr "ãã®ã‚ˆã†ãªé–¢æ•°ã¯ã‚りã¾ã›ã‚“ - \"%s\"" -#: command.y:533 +#: command.y:534 #, fuzzy, c-format msgid "enable: invalid option - `%s'" msgstr "enable: 無効ãªã‚ªãƒ—ション - \"%s\"" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "無効ãªç¯„囲指定: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "フィールド番å·ã«å¯¾ã—ã¦éžæ•°å€¤ãŒæŒ‡å®šã•れã¦ã„ã¾ã™" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "éžæ•°å€¤ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚数値ãŒäºˆæœŸã•れã¾ã™ã€‚" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "éžã‚¼ãƒ­æ•´æ•°" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" msgstr "" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +msgid "down [N] - move N frames down the stack" msgstr "" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +msgid "end - end a list of commands or awk statements" msgstr "" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" msgstr "" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" msgstr "" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" msgstr "" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" msgstr "" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" msgstr "" -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +msgid "quit - exit debugger" msgstr "" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +msgid "run - start or restart executing program" msgstr "" -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +msgid "save filename - save commands from the session to file" msgstr "" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" msgstr "" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +msgid "source file - execute commands from file" msgstr "" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" msgstr "" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +msgid "trace on|off - print instruction before executing" msgstr "" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "" -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +msgid "up [N] - move N frames up the stack" msgstr "" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" msgstr "" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "エラー: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format msgid "cannot read command: %s\n" msgstr "`%s' ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format msgid "cannot read command: %s" msgstr "`%s' ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: command.y:1125 +#: command.y:1126 #, fuzzy msgid "invalid character in command" msgstr "ç„¡åŠ¹ãªæ–‡å­—クラスåã§ã™" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "ç„¡åŠ¹ãªæ–‡å­—ã§ã™" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" #: debug.c:259 -msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "" #: debug.c:261 -msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "" #: debug.c:263 -msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" #: debug.c:358 -msgid "program not running." -msgstr "" +#, fuzzy +#| msgid "argument not a string" +msgid "program not running" +msgstr "å¼•æ•°ãŒæ–‡å­—列ã§ã¯ã‚りã¾ã›ã‚“" -#: debug.c:466 +#: debug.c:475 #, fuzzy, c-format msgid "source file `%s' is empty.\n" msgstr "ソースファイル `%s' ã¯ç©ºã§ã™" -#: debug.c:493 -msgid "no current source file." -msgstr "" +#: debug.c:502 +#, fuzzy +msgid "no current source file" +msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format msgid "cannot find source file named `%s': %s" msgstr "ソースファイル `%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ (%s)" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:624 +#: debug.c:633 #, fuzzy, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "予期ã—ãªã„改行ã¾ãŸã¯æ–‡å­—列終端ã§ã™" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:745 +#: debug.c:754 #, fuzzy, c-format msgid "Current source file: %s\n" msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:861 +#: debug.c:870 #, fuzzy msgid "No arguments.\n" msgstr "printf: 引数ãŒã‚りã¾ã›ã‚“" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, fuzzy, c-format msgid "`%s' is not an array\n" msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™" -#: debug.c:1068 +#: debug.c:1077 #, fuzzy, c-format msgid "$%ld = uninitialized field\n" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„フィールド `$%d' ã¸ã®å‚ç…§ã§ã™" -#: debug.c:1089 +#: debug.c:1098 #, fuzzy, c-format msgid "array `%s' is empty\n" msgstr "データファイル `%s' ã¯ç©ºã§ã™ã€‚" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, fuzzy, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚りã¾ã›ã‚“" -#: debug.c:1188 +#: debug.c:1197 #, fuzzy, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, fuzzy, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, fuzzy, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "スカラーコンテキスト内ã§é…列 `%s[\"%.*s\"]' ã®ä½¿ç”¨ã®è©¦ã¿ã§ã™" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "スカラー `%s[\"%.*s\"]' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: debug.c:1438 +#: debug.c:1447 #, fuzzy, c-format msgid "`%s' is a function" msgstr "`%s' ã¯é–¢æ•°åã¨ã—ã¦ã¯ç„¡åйã§ã™" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "" -#: debug.c:1543 +#: debug.c:1552 #, fuzzy, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚りã¾ã›ã‚“" -#: debug.c:1782 +#: debug.c:1791 #, fuzzy msgid "attempt to use scalar value as array" msgstr "スカラー値をé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr "" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2034 +#: debug.c:2043 #, fuzzy msgid "invalid frame number" msgstr "無効ãªç¯„囲終了ã§ã™" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "入力ファイル `%s' を読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, fuzzy, c-format -msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format msgid "internal error: cannot find rule\n" msgstr "内部エラー: %s ã® vname ãŒç„¡åйã§ã™ã€‚" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "入力ファイル `%s' を読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, fuzzy, c-format +msgid "line number %d in file `%s' out of range" +msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2558 +#: debug.c:2569 #, fuzzy, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "入力ファイル `%s' を読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." -msgstr "" +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint/watchpoint number" +msgid "invalid breakpoint number %d" +msgstr "無効ãªãƒ–レークãƒã‚¤ãƒ³ãƒˆ/ウオッãƒãƒã‚¤ãƒ³ãƒˆç•ªå·ã§ã™" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "" -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "" -#: debug.c:3394 +#: debug.c:3405 #, fuzzy, c-format msgid "invalid source line %d in file `%s'" msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: debug.c:3441 +#: debug.c:3452 #, fuzzy, c-format msgid "element not in array\n" msgstr "adump: 引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" -#: debug.c:5141 +#: debug.c:5152 #, fuzzy, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚りã¾ã›ã‚“" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" +msgid "no symbol `%s' in current context" msgstr "" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "䏿˜ŽãªãƒŽãƒ¼ãƒ‰åž‹ %d ã§ã™" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "䏿˜Žãªã‚ªãƒšã‚³ãƒ¼ãƒ‰ %d ã§ã™" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "オペコード %s ã¯æ¼”ç®—å­ã¾ãŸã¯äºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "genflags2str 内ã§ãƒãƒƒãƒ•ァオーãƒãƒ¼ãƒ•ローãŒç™ºç”Ÿã—ã¾ã—ãŸ" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1861,71 +1878,71 @@ "\t# 呼出関数スタック:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' 㯠gawk æ‹¡å¼µã§ã™" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' 㯠gawk æ‹¡å¼µã§ã™" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE 値 `%s' ã¯ç„¡åйã§ã™ã€‚代ã‚り㫠3 を使用ã—ã¾ã™" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "誤ã£ãŸ `%sFMT' 指定 `%s' ã§ã™" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "`LINT' ã¸ã®ä»£å…¥ã«å¾“ã„ `--lint' を無効ã«ã—ã¾ã™" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„引数 `%s' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„変数 `%s' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "éžæ•°å€¤ã‚’使用ã—ãŸãƒ•イールドå‚ç…§ã®è©¦ã¿ã§ã™" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "NULL 文字列を使用ã—ã¦ãƒ•ィールドã®å‚照を試ã¿ã¦ã„ã¾ã™" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "フィールド %ld ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®è©¦ã¿ã§ã™" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„フィールド `$%ld' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "宣言ã•れã¦ã„る数より多ã„引数を使ã£ã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: 予期ã—ãªã„åž‹ `%s' ã§ã™" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "`/=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚れã¾ã—ãŸ" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "`%%=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚れã¾ã—ãŸ" @@ -2018,86 +2035,86 @@ msgid "dynamic loading of libraries is not supported" msgstr "" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: first argument is not a string" msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy msgid "stat: second argument is not an array" msgstr "split: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 #, fuzzy msgid "stat: bad parameters" msgstr "%s: 仮引数ã§ã™\n" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 #, fuzzy msgid "fts is not supported on this system" msgstr "å¤ã„ awk 㯠`%s' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "split: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "match: 第三引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" @@ -2237,7 +2254,7 @@ msgid "chr: first argument is not a number" msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2336,171 +2353,176 @@ msgid "sleep: not supported on this platform" msgstr "" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF ãŒè² ã®å€¤ã«è¨­å®šã•れã¦ã„ã¾ã™" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: 第四引数㯠gawk æ‹¡å¼µã§ã™" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: 第四引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "asort: 第二引数ã®éƒ¨åˆ†é…列を第一引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "split: 第二引数ã¨ç¬¬å››å¼•æ•°ã«åŒã˜é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "split: 第四引数ã«ç¬¬äºŒå¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "split: 第二引数ã«ç¬¬å››å¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1038 +#: field.c:1050 #, fuzzy msgid "split: null string for third arg is a non-standard extension" msgstr "split: 第三引数㫠NULL 文字列を使用ã™ã‚‹ã“ã¨ã¯ gawk æ‹¡å¼µã§ã™" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: 第四引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: 第三引数ã¯éž NULL ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: 第二引数ã¨ç¬¬å››å¼•æ•°ã«åŒã˜é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplit: 第四引数ã«ç¬¬äºŒå¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplit: 第二引数ã«ç¬¬å››å¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' 㯠gawk æ‹¡å¼µã§ã™" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, fuzzy, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "`%s' 付近㮠FIELDWIDTHS 値ãŒç„¡åйã§ã™" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "`FS' ã« NULL 文字列を使用ã™ã‚‹ã®ã¯ gawk æ‹¡å¼µã§ã™" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "å¤ã„ awk 㯠`FS' ã®å€¤ã¨ã—ã¦æ­£è¦è¡¨ç¾ã‚’サãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' 㯠gawk æ‹¡å¼µã§ã™" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 #, fuzzy msgid "remove_element: received null array" msgstr "length: é…列引数をå—ã‘å–りã¾ã—ãŸ" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, fuzzy, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "ソースファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" @@ -2510,31 +2532,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "コマンドライン引数 `%s' ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™: スキップã•れã¾ã—ãŸ" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format msgid "cannot open file `%s' for reading: %s" msgstr "ファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "fd %d (`%s') ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "ファイル `%.*s' ã§å¿…è¦ä»¥ä¸Šã« `>' 㨠`>>' を組åˆã›ã¦ã„ã¾ã™ã€‚" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "サンドボックスモード内ã§ã¯ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: io.c:787 +#: io.c:847 #, fuzzy, c-format msgid "expression in `%s' redirection is a number" msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ã«æ•°å€¤ã—ã‹è¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ãŒç©ºåˆ—ã§ã™ã€‚" -#: io.c:796 +#: io.c:856 #, fuzzy, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2542,515 +2619,521 @@ "`%2$s' リダイレクトã«è«–ç†æ¼”ç®—ã®çµæžœã¨æ€ã‚れるファイルå `%1$s' ãŒä½¿ã‚れã¦ã„ã¾" "ã™ã€‚" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "ファイル `%.*s' ã§å¿…è¦ä»¥ä¸Šã« `>' 㨠`>>' を組åˆã›ã¦ã„ã¾ã™ã€‚" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "出力用ã«ãƒ‘イプ `%s' ã‚’é–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "入力用ã«ãƒ‘イプ `%s' ã‚’é–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "入出力用ã®åŒæ–¹å‘パイプ `%s' ãŒé–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format msgid "cannot redirect from `%s': %s" msgstr "`%s' ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format msgid "cannot redirect to `%s': %s" msgstr "`%s' ã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "é–‹ã„ã¦ã„ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã®æ•°ãŒã‚·ã‚¹ãƒ†ãƒ åˆ¶é™ã«é”ã—ã¾ã—ãŸã€‚ファイル記述å­ã‚’多é‡åŒ–ã—ã¾" "ã™ã€‚" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "`%s' ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "é–‹ã„ã¦ã„るパイプã¾ãŸã¯å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®æ•°ãŒå¤šéŽãŽã¾ã™ã€‚" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: 第二引数㯠`to' ã¾ãŸã¯ `from' ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' ã¯é–‹ã„ã¦ã„るファイルã€ãƒ‘イプã€ãƒ—ロセス共有ã§ã¯ã‚りã¾ã›ã‚“" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "é–‹ã„ã¦ãªã„リダイレクトを閉ã˜ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: リダイレクト `%s' 㯠`|&' を使用ã—ã¦é–‹ã‹ã‚Œã¦ã„ã¾ã›ã‚“。第二引数ã¯ç„¡è¦–ã•" "れã¾ã—ãŸ" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "パイプ `%2$s' ã‚’é–‰ã˜ãŸã¨ãã®çŠ¶æ…‹ã‚³ãƒ¼ãƒ‰ãŒå¤±æ•— (%1$d) ã§ã—㟠(%3$s)。" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "パイプ `%2$s' ã‚’é–‰ã˜ãŸã¨ãã®çŠ¶æ…‹ã‚³ãƒ¼ãƒ‰ãŒå¤±æ•— (%1$d) ã§ã—㟠(%3$s)。" + +#: io.c:1405 #, fuzzy, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "ファイル `%2$s' ã‚’é–‰ã˜ãŸã¨ãã®çŠ¶æ…‹ã‚³ãƒ¼ãƒ‰ãŒå¤±æ•— (%1$d) ã§ã—㟠(%3$s)。" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ソケット `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "並行プロセス `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "パイプ `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ファイル `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format msgid "error writing standard output: %s" msgstr "標準出力ã¸ã®æ›¸è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format msgid "error writing standard error: %s" msgstr "標準エラーã¸ã®æ›¸è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "パイプ `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。" -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "`%s' ã¸æŽ¥ç¶šã™ã‚‹ãƒ‘イプを並行プロセスã‹ã‚‰ãƒ•ラッシュã§ãã¾ã›ã‚“ (%s)。" -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "ファイル `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。" -#: io.c:1610 +#: io.c:1670 #, fuzzy, c-format msgid "local port %s invalid in `/inet': %s" msgstr "`/inet' 内ã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒãƒ¼ãƒˆ %s ãŒç„¡åйã§ã™" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "`/inet' 内ã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒãƒ¼ãƒˆ %s ãŒç„¡åйã§ã™" -#: io.c:1636 +#: io.c:1696 #, fuzzy, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "リモートã®ãƒ›ã‚¹ãƒˆãŠã‚ˆã³ãƒãƒ¼ãƒˆæƒ…å ± (%s, %s) ãŒç„¡åйã§ã™" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "リモートã®ãƒ›ã‚¹ãƒˆãŠã‚ˆã³ãƒãƒ¼ãƒˆæƒ…å ± (%s, %s) ãŒç„¡åйã§ã™" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP 通信ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "`%s' をモード `%s' ã§é–‹ã‘ã¾ã›ã‚“" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format msgid "close of master pty failed: %s" msgstr "マスター pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format msgid "close of stdout in child failed: %s" msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–出力を閉ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format msgid "close of stdin in child failed: %s" msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–入力を閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format msgid "close of slave pty failed: %s" msgstr "スレーブ pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:2265 +#: io.c:2325 #, fuzzy msgid "could not create child process or open pty" msgstr "`%s' 用ã®å­ãƒ—ロセスを実行ã§ãã¾ã›ã‚“ (fork: %s)。" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy msgid "restoring stdout in parent process failed" msgstr "è¦ªãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–出力を復旧ã§ãã¾ã›ã‚“。\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy msgid "restoring stdin in parent process failed" msgstr "è¦ªãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–入力を復旧ã§ãã¾ã›ã‚“。\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format msgid "close of pipe failed: %s" msgstr "パイプを閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "`|&' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format msgid "cannot open pipe `%s': %s" msgstr "パイプ `%s' ãŒé–‹ã‘ã¾ã›ã‚“ (%s)。" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "`%s' 用ã®å­ãƒ—ロセスを実行ã§ãã¾ã›ã‚“ (fork: %s)。" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "データファイル `%s' ã¯ç©ºã§ã™ã€‚" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "入力用メモリーをã“れ以上確ä¿ã§ãã¾ã›ã‚“。" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "è¤‡æ•°ã®æ–‡å­—ã‚’ `RS' ã«ä½¿ç”¨ã™ã‚‹ã®ã¯ gawk ç‰¹æœ‰ã®æ‹¡å¼µã§ã™ã€‚" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6 通信ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "環境変数 `POSIXLY_CORRECT' ãŒæŒ‡å®šã•れã¦ã„ã¾ã™ã€‚オプション `--posix' を有効ã«" "ã—ã¾ã™" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "オプション `--posix' 㯠`--traditional' を無効ã«ã—ã¾ã™ã€‚" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "オプション `--posix'/`--traditional' 㯠`--non-decimal-data' を無効ã«ã—ã¾ã™ã€‚" -#: main.c:359 +#: main.c:361 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' 㯠`--binary' を上書ãã—ã¾ã™" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "setuid root ã§ %s を実行ã™ã‚‹ã¨ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®å•題ãŒç™ºç”Ÿã™ã‚‹å ´åˆãŒã‚りã¾" "ã™ã€‚" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format msgid "cannot set binary mode on stdin: %s" msgstr "標準入力をãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format msgid "cannot set binary mode on stdout: %s" msgstr "標準出力をãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format msgid "cannot set binary mode on stderr: %s" msgstr "標準エラーをãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "プログラム文ãŒå…¨ãã‚りã¾ã›ã‚“!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] -f progfile [--] file ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] [--] %cprogram%c file ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (標準)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfile\t\t--file=progfile\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "短ã„オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (æ‹¡å¼µ)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:598 +#: main.c:601 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:610 +#: main.c:614 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 #, fuzzy msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 #, fuzzy msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy msgid "" "\n" @@ -3070,7 +3153,7 @@ "翻訳ã«é–¢ã™ã‚‹ãƒã‚°ã¯ã«å ±å‘Šã—ã¦ãã ã•" "ã„。\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3080,7 +3163,7 @@ "デフォルト設定ã§ã¯ã€æ¨™æº–入力を読ã¿è¾¼ã¿ã€æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã—ã¾ã™ã€‚\n" "\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format msgid "" "Examples:\n" @@ -3091,7 +3174,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3110,7 +3193,7 @@ "(at your option) any later version.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3124,7 +3207,7 @@ "GNU General Public License for more details.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3132,11 +3215,11 @@ "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "POSIX awk ã§ã¯ -Ft 㯠FS をタブã«è¨­å®šã—ã¾ã›ã‚“" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3145,168 +3228,173 @@ "%s: オプション `-v' ã®å¼•æ•° `%s' ㌠`変数=代入値' ã®å½¢å¼ã«ãªã£ã¦ã„ã¾ã›ã‚“。\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' ã¯å¤‰æ•°åã§ã¯ã‚りã¾ã›ã‚“。`%s=%s' ã®ãƒ•ァイルを探ã—ã¾ã™ã€‚" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "gawk ã«çµ„ã¿è¾¼ã¿ã® `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "関数 `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "æµ®å‹•å°æ•°ç‚¹ä¾‹å¤–" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "致命的エラー: 内部エラー" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "致命的エラー: 内部エラー: セグメンテーションé•å" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "致命的エラー: 内部エラー: スタックオーãƒãƒ¼ãƒ•ロー" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "fd %d ãŒäº‹å‰ã«é–‹ã„ã¦ã„ã¾ã›ã‚“。" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "事å‰ã« fd %d 用㫠/dev/null ã‚’é–‹ã‘ã¾ã›ã‚“。" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "`-e/--source' ã¸ã®ç©ºã®å¼•æ•°ã¯ç„¡è¦–ã•れã¾ã—ãŸ" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy msgid "`--profile' overrides `--pretty-print'" msgstr "オプション `--posix' 㯠`--traditional' を無効ã«ã—ã¾ã™ã€‚" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: オプション `-W %s' ã¯èªè­˜ã§ãã¾ã›ã‚“。無視ã•れã¾ã—ãŸ\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: 引数ãŒå¿…è¦ãªã‚ªãƒ—ション -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "BINMODE 値 `%s' ã¯ç„¡åйã§ã™ã€‚代ã‚り㫠3 を使用ã—ã¾ã™" -#: mpfr.c:610 +#: mpfr.c:664 #, fuzzy, c-format -msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "BINMODE 値 `%s' ã¯ç„¡åйã§ã™ã€‚代ã‚り㫠3 を使用ã—ã¾ã™" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +msgid "%s: received negative argument %.*s" +msgstr "log: è² ã®å¼•æ•° %g ã‚’å—ã‘å–りã¾ã—ãŸ" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–りã¾ã—ãŸ" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: mpfr.c:816 +#: mpfr.c:874 #, fuzzy msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: mpfr.c:821 +#: mpfr.c:879 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: mpfr.c:832 +#: mpfr.c:890 #, fuzzy, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: mpfr.c:850 +#: mpfr.c:908 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:871 +#: mpfr.c:929 #, fuzzy msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: mpfr.c:878 +#: mpfr.c:936 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "and(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: mpfr.c:892 +#: mpfr.c:950 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: mpfr.c:1045 +#: mpfr.c:1103 #, fuzzy msgid "xor: called with less than two arguments" msgstr "xor: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: mpfr.c:1211 +#: mpfr.c:1269 #, fuzzy msgid "intdiv: received non-numeric first argument" msgstr "and: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: mpfr.c:1213 +#: mpfr.c:1271 #, fuzzy msgid "intdiv: received non-numeric second argument" msgstr "and: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "コマンドライン:" @@ -3316,20 +3404,20 @@ msgid "could not make typed regex" msgstr "æ­£è¦è¡¨ç¾ãŒçµ‚端ã•れã¦ã„ã¾ã›ã‚“" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "å¤ã„ awk 㯠`\\%c' エスケープシーケンスをサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX ã§ã¯ `\\x' エスケープã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "`\\x' エスケープシーケンスã«å六進数ãŒã‚りã¾ã›ã‚“" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3338,15 +3426,19 @@ "å六進エスケープ \\x%.*s (%d 文字) ã¯ãŠãらã予期ã—ãŸã‚ˆã†ã«ã¯è§£é‡ˆã•れãªã„ã§" "ã—ょã†" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "エスケープシーケンス `\\%c' 㯠`%c' ã¨åŒç­‰ã«æ‰±ã‚れã¾ã™" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "無効ãªãƒžãƒ«ãƒãƒã‚¤ãƒˆãƒ‡ãƒ¼ã‚¿ãŒæ¤œå‡ºã•れã¾ã—ãŸã€‚データã¨ãƒ­ã‚±ãƒ¼ãƒ«ãŒä¸€è‡´ã—ã¦ã„ãªã„よ" "ã†ã§ã™ã€‚" @@ -3392,19 +3484,19 @@ msgid "internal error: %s with null vname" msgstr "内部エラー: %s ã® vname ãŒç„¡åйã§ã™ã€‚" -#: profile.c:662 +#: profile.c:663 #, fuzzy msgid "internal error: builtin with null fname" msgstr "内部エラー: %s ã® vname ãŒç„¡åйã§ã™ã€‚" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3412,12 +3504,12 @@ "\n" msgstr "" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk プロファイルã€ä½œæˆæ—¥æ™‚ %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3426,7 +3518,7 @@ "\n" "\t# 関数一覧(アルファベット順)\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: 䏿˜Žãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆåž‹ %d ã§ã™" @@ -3456,42 +3548,42 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "æ­£è¦è¡¨ç¾ã®è¦ç´  `%.*s' ã¯ãŠãらã `[%.*s]' ã§ã‚ã‚‹ã¹ãã§ã™" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "" -#: support/dfa.c:1071 +#: support/dfa.c:1017 #, fuzzy msgid "invalid character class" msgstr "ç„¡åŠ¹ãªæ–‡å­—クラスåã§ã™" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "" -#: support/dfa.c:1425 +#: support/dfa.c:1371 #, fuzzy msgid "invalid content of \\{\\}" msgstr "\\{\\} ã®ä¸­èº«ãŒç„¡åйã§ã™" -#: support/dfa.c:1428 +#: support/dfa.c:1374 #, fuzzy msgid "regular expression too big" msgstr "æ­£è¦è¡¨ç¾ãŒå¤§ãã™ãŽã¾ã™" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "" @@ -3624,15 +3716,27 @@ msgid "No previous regular expression" msgstr "以å‰ã«æ­£è¦è¡¨ç¾ãŒã‚りã¾ã›ã‚“" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "関数 `%s': 関数åを仮引数åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `L' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `L' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `h' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `h' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" + #, fuzzy #~ msgid "fts: first parameter is not an array" #~ msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" @@ -3995,9 +4099,6 @@ #~ msgid "assignment used in conditional context" #~ msgstr "æ¡ä»¶ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå†…ã§ä»£å…¥ãŒä½¿ç”¨ã•れã¾ã—ãŸ" -#~ msgid "statement has no effect" -#~ msgstr "æ–‡ã«åŠ¹æžœãŒã‚りã¾ã›ã‚“" - #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" diff -urN gawk-5.1.0/po/ko.po gawk-5.1.1/po/ko.po --- gawk-5.1.0/po/ko.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/ko.po 2021-10-27 07:58:42.000000000 +0300 @@ -1,14 +1,14 @@ # Korean translation for the gawk. # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. -# Seong-ho Cho , 2019. +# Seong-ho Cho , 2019-2021. # msgid "" msgstr "" -"Project-Id-Version: gawk 4.2.63\n" +"Project-Id-Version: gawk 5.1.1e\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2019-03-04 16:44+0900\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-09-07 11:55+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko\n" @@ -16,500 +16,513 @@ "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: Poedit 2.2\n" +"X-Generator: Poedit 2.3.1\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "%sì—서" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "ìŠ¤ì¹¼ë¼ ê°’ì„ ë°°ì—´ 값으로 취급하려고 합니다" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "`%s' ìŠ¤ì¹¼ë¼ ë§¤ê°œë³€ìˆ˜ë¥¼ 배열로 취급하려고 합니다" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "`%s' ìŠ¤ì¹¼ë¼ êµ¬ì¡°ë¥¼ ë°°ì—´ 구조로 취급하려고 합니다" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "ìŠ¤ì¹¼ë¼ ì»¨í…ìŠ¤íŠ¸ì˜ `%s' ë°°ì—´ 구조를 취급하려고 합니다" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: `%.*s' ì¸ë±ìŠ¤ëŠ” `%s' ë°°ì—´ì— ì—†ìŠµë‹ˆë‹¤" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "`%s[\"%.*s\"]' ìŠ¤ì¹¼ë¼ êµ¬ì¡°ë¥¼ ë°°ì—´ 구조로 취급하려고 합니다" -#: array.c:783 array.c:831 -#, fuzzy, c-format +#: array.c:784 array.c:834 +#, c-format msgid "%s: first argument is not an array" -msgstr "asort: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +msgstr "%s: 첫번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: array.c:824 -#, fuzzy, c-format +#: array.c:826 +#, c-format msgid "%s: second argument is not an array" -msgstr "split: ë‘번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +msgstr "%s: ë‘번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: array.c:829 field.c:1004 field.c:1096 +#, c-format +msgid "%s: cannot use %s as second argument" +msgstr "%s: %sì„(를) ë‘번째 ì¸ìž 값으로 사용할 수 없습니다" + +#: array.c:837 +#, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%s: 첫번째 ì¸ìž ê°’ì€ ë‘번째 ì¸ìž ê°’ì´ ì—†ìœ¼ë©´ SYMTABì¼ ìˆ˜ 없습니다" -#: array.c:835 -#, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "asort: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" - -#: array.c:838 -#, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "asort: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%s: 첫번째 ì¸ìž ê°’ì€ ë‘번째 ì¸ìž ê°’ì´ ì—†ìœ¼ë©´ FUNCTABì¼ ìˆ˜ 없습니다" -#: array.c:844 -#, fuzzy, c-format +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti: ë™ì¼í•œ ë°°ì—´ì„ ì›ë³¸ê³¼ 대ìƒìœ¼ë¡œ 사용하며 세번째 ì¸ìžê°€ 없는 모양" +"새가 우스ê½ìŠ¤ëŸ½ìŠµë‹ˆë‹¤." + +#: array.c:851 +#, c-format msgid "%s: cannot use a subarray of first argument for second argument" -msgstr "asort: ë‘번째 ì¸ìžì— 대한 첫번째 ì¸ìžë¥¼ 하위 배열로 취급할 수 없습니다" +msgstr "%s: ë‘번째 ì¸ìžì— 대한 첫번째 ì¸ìžë¥¼ 하위 배열로 취급할 수 없습니다" -#: array.c:849 -#, fuzzy, c-format +#: array.c:856 +#, c-format msgid "%s: cannot use a subarray of second argument for first argument" -msgstr "asort: 첫번째 ì¸ìžì— 대한 ë‘번째 ì¸ìžë¥¼ 하위 배열로 취급할 수 없습니다" +msgstr "%s: 첫번째 ì¸ìžì— 대한 ë‘번째 ì¸ìžë¥¼ 하위 배열로 취급할 수 없습니다" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' ëª…ì¹­ì€ í•¨ìˆ˜ ì´ë¦„으로 ì ì ˆì¹˜ 않습니다" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "`%s' ì •ë ¬ ë¹„êµ í•¨ìˆ˜ë¥¼ ì •ì˜í•˜ì§€ 않았습니다" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s 블ë¡ì— ë™ìž‘ ë¶€ë¶„ì´ ìžˆì–´ì•¼ 합니다" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "ê° ê·œì¹™ì—는 패턴 ë˜ëŠ” ë™ìž‘ ë¶€ë¶„ì´ ìžˆì–´ì•¼ 합니다" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "awk ì´ì „ 버전ì—서는 다중 `BEGIN', `END' ê·œì¹™ì„ ì§€ì›í•˜ì§€ 않습니다" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' 함수는 내장 함수ì´ë¯€ë¡œ, 재정ì˜í•  수 없습니다" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "`//' ì •ê·œ í‘œí˜„ì‹ ìƒìˆ˜ëŠ” C++ 주ì„문 표시 같지만, 그렇지 않습니다" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "`/%s/' ì •ê·œ í‘œí˜„ì‹ ìƒìˆ˜ëŠ” C 주ì„문 표시 같지만, 그렇지 않습니다" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "switchë¬¸ì— ì¤‘ë³µëœ case ê°’: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "switchë¬¸ì— ì¤‘ë³µëœ `default' ì ˆ" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' êµ¬ë¬¸ì€ ë£¨í”„ë¬¸ ë˜ëŠ” switch문 ë°–ì—서 사용할 수 없습니다" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "`continue' êµ¬ë¬¸ì€ ë£¨í”„ë¬¸ ë°–ì—서 사용할 수 없습니다" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "`next' êµ¬ë¬¸ì„ %s ë™ìž‘ ë‚´ì—서 취급했습니다" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' êµ¬ë¬¸ì„ %s ë™ìž‘ ë‚´ì—서 취급했습니다" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "`return' êµ¬ë¬¸ì„ í•¨ìˆ˜ ë°– ì˜ì—­ì—서 취급했습니다" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" -"BEGINê³¼ END ì•ˆì— ìžˆëŠ” 순수한 `print' êµ¬ë¬¸ì€ `print \"\"'와 ê°™ì€ ëª¨ì–‘ìƒˆì—¬ì•¼ í•©" -"니다" +"BEGIN ë˜ëŠ” END 규칙 ë‚´ë¶€ì˜ ìˆœìˆ˜í•œ `print' êµ¬ë¬¸ì€ `print \"\"'와 ê°™ì€ ëª¨ì–‘ìƒˆì—¬" +"야 합니다" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' êµ¬ë¬¸ì€ SYMTABê³¼ 함께 취급할 수 없습니다" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' êµ¬ë¬¸ì€ FUNCTABê³¼ 함께 취급할 수 없습니다" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)'는 ì´ì‹ 불가능한 tawk 확장 기능입니다" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "다중 스테ì´ì§€ ì´ì¤‘ 파ì´í”„ë¼ì¸ì´ ë™ìž‘하지 않습니다" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "`>' 입출력 리다ì´ë ‰ì…˜ ê²°í•©ì˜ ëŒ€ìƒì´ 모호합니다" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "í• ë‹¹ë¬¸ì˜ ìš°í•­ì— ì •ê·œ 표현ì‹ì´ 있습니다" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "`~' ë˜ëŠ” `!~' ì—°ì‚°ìž ì¢Œí•­ì— ì •ê·œ 표현ì‹ì´ 있습니다'" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "awk ì´ì „ 버전ì—서는 `for' 다ìŒì„ 제외한 부분ì—서 `in' 키워드를 취급하지 않습" "니다" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "비êµë¬¸ ìš°í•­ì— ì •ê·œ 표현ì‹ì´ 있습니다" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" "`%s' 규칙 ë‚´ì—서 리다ì´ë ‰ì…˜ 처리하지 않는 `getline' ì·¨ê¸‰ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "" "END ë™ìž‘ ë‚´ì—서 리다ì´ë ‰ì…˜ 처리하지 않는 `getline'ì„ ì •ì˜í•˜ì§€ 않았습니다" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "awk ì´ì „ 버전ì—서는 ë‹¤ì°¨ì› ë°°ì—´ì„ ì§€ì›í•˜ì§€ 않습니다" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "괄호를 뺀 `length' í˜¸ì¶œì€ ì´ì‹ 가능하지 않습니다" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "ê°„ì ‘ 함수 호출 ë°©ì‹ì€ gawk 확장 기능입니다" -#: awkgram.y:2010 -#, fuzzy, c-format +#: awkgram.y:2017 +#, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "ê°„ì ‘ 함수 호출시 `%s' 특수 변수를 취급할 수 없습니다" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "함수가 아닌 `%s' ì´ë¦„ì„ í•¨ìˆ˜ 호출 구역 안ì—서 취급하려고 합니다" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "ìž˜ëª»ëœ í•˜ìœ„ìŠ¤í¬ë¦½íЏ ì—°ì‚°ì‹" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "경고: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "실패: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "예ìƒì¹˜ 못한 개행 ë¬¸ìž ë˜ëŠ” 문ìžì—´ ë" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" "ì›ë³¸ íŒŒì¼ / 명령행 ì¸ìžì— 완전한 함수 ì´ë¦„ ë˜ëŠ” ê·œì¹™ì´ ë“¤ì–´ìžˆì–´ì•¼ 합니다" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 -#, fuzzy, c-format +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 +#, c-format msgid "cannot open source file `%s' for reading: %s" -msgstr "ì½ì„ `%s' 파ì¼ì„ ì—´ 수 없습니다(%s)" +msgstr "ì½ì„ `%s' ì›ë³¸ 파ì¼ì„ ì—´ 수 없습니다: %s" -#: awkgram.y:2856 awkgram.y:2993 -#, fuzzy, c-format +#: awkgram.y:2863 awkgram.y:3000 +#, c-format msgid "cannot open shared library `%s' for reading: %s" -msgstr "ì½ì„ `%s' 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì—´ 수 없습니다(%s)" +msgstr "ì½ì„ `%s' 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì—´ 수 없습니다: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "ì›ì¸ì„ 알 수 ì—†ìŒ" -#: awkgram.y:2867 awkgram.y:2891 -#, fuzzy, c-format +#: awkgram.y:2874 awkgram.y:2898 +#, c-format msgid "cannot include `%s' and use it as a program file" -msgstr "`%s' 요소를 프로그램 파ì¼ë¡œ 넣어 쓸 수 없습니다" +msgstr "`%s' 요소를 프로그램 파ì¼ì— 넣어 쓸 수 없습니다" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "ì´ë¯¸ `%s' ì›ë³¸ 파ì¼ì„ 넣었습니다" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "ì´ë¯¸ `%s' 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 불러왔습니다" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include는 gawk 확장 기능입니다" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "@include 다ìŒì— íŒŒì¼ ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load는 gawk 확장 기능입니다" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "@load 다ìŒì— íŒŒì¼ ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "ëª…ë ¹í–‰ì— í”„ë¡œê·¸ëž¨ í…스트가 없습니다" -#: awkgram.y:3239 debug.c:461 debug.c:619 -#, fuzzy, c-format +#: awkgram.y:3246 debug.c:470 debug.c:628 +#, c-format msgid "cannot read source file `%s': %s" -msgstr "`%s' 소스 파ì¼ì„ ì½ì„ 수 없습니다(%s)" +msgstr "`%s' 소스 파ì¼ì„ ì½ì„ 수 없습니다: %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "`%s' ì›ë³¸ 파ì¼ì´ 비었습니다" -#: awkgram.y:3310 -#, fuzzy, c-format +#: awkgram.y:3317 +#, c-format msgid "error: invalid character '\\%03o' in source code" -msgstr "PEBKAC 오류: 소스 ì½”ë“œì— ìž˜ëª»ëœ ë¬¸ìž '\\%03o'" +msgstr "오류: 소스 ì½”ë“œì— ìž˜ëª»ëœ ë¬¸ìž '\\%03o'" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "ì›ë³¸ 파ì¼ì´ 개행 문ìžë¡œ ë나지 않았습니다" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "íŒŒì¼ ëì— `\\' 문ìžë¡œ ë나지 ì•Šì€ ì •ê·œ 표현ì‹ì´ 있습니다" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: gawkì—서는 `/.../%c' tawk ì •ê·œí‘œí˜„ì‹ ìˆ˜ì •ìžê°€ ë™ìž‘하지 않습니다" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "gawkì—서는 `/.../%c' tawk ì •ê·œ í‘œí˜„ì‹ ìˆ˜ì •ìžê°€ ë™ìž‘하지 않습니다" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "ë나지 ì•Šì€ ì •ê·œ 표현ì‹" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "íŒŒì¼ ëì— ë나지 ì•Šì€ ì •ê·œ 표현ì‹" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "`\\ #...' í–‰ ì—°ì† í‘œí˜„ìžëŠ” ì´ì‹ 불가능합니다" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "í–‰ì˜ ë°±ìŠ¬ëž˜ì‹œ 문ìžëŠ” 마지막 문ìžê°€ 아닙니다" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "ë‹¤ì°¨ì› ë°°ì—´ì€ gawk 확장 기능입니다" -#: awkgram.y:3891 awkgram.y:3902 -#, fuzzy, c-format +#: awkgram.y:3898 awkgram.y:3909 +#, c-format msgid "POSIX does not allow operator `%s'" -msgstr "POSIXì—서는 `**' ì—°ì‚°ìžë¥¼ ì§€ì›í•˜ì§€ 않습니다" +msgstr "POSIXì—서는 `%s' ì—°ì‚°ìžë¥¼ ì§€ì›í•˜ì§€ 않습니다" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 -#, fuzzy, c-format +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 +#, c-format msgid "operator `%s' is not supported in old awk" -msgstr "ì˜¤ëž˜ëœ awk 버전ì—서는 `^' ì—°ì‚°ìžë¥¼ ì§€ì›í•˜ì§€ 않습니다" +msgstr "ì˜¤ëž˜ëœ awk 버전ì—서는 `%s' ì—°ì‚°ìžë¥¼ ì§€ì›í•˜ì§€ 않습니다" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "ë나지 ì•Šì€ ë¬¸ìžì—´" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIXì—서는 문ìžì—´ ê°’ì— ë¬¼ë¦¬ 개행 문ìžë¥¼ 허용하지 않습니다" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "백슬래시 문ìžì—´ ì—°ì† í‘œí˜„ìžëŠ” ì´ì‹ 불가능합니다" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "표현ì‹ì— ìž˜ëª»ëœ ë¬¸ìž '%c'" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s'ì€(는) gawk 확장 기능입니다" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIXì—서는 `%s'ì„(를) 허용하지 않습니다" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "ì˜¤ëž˜ëœ awk 버전ì—서는 `%s'ì„(를) ì§€ì›í•˜ì§€ 않습니다" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "`goto' ì‚¬ìš©ì€ ë°”ëžŒì§í•˜ì§€ 않습니다!" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%dì€(는) %sì˜ ìž˜ëª»ëœ ì¸ìž 숫ìžìž…니다" -#: awkgram.y:4604 -#, fuzzy, c-format +#: awkgram.y:4611 +#, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "%s: ì¸ìžì˜ 마지막 부분으로서 문ìžì—´ ê·¸ ìžì²´ëŠ” ë°˜ì˜í•˜ì§€ 않습니다" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "세번째 %s 매개변수는 ê°’ì„ ë°”ê¿€ 수 없는 개체입니다" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: 세번째 ì¸ìžëŠ” gawk 확장 기능입니다" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: ë‘번째 ì¸ìžëŠ” gawk 확장 기능입니다" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcgettext(_\"...\") ì‚¬ìš©ì´ ì˜¬ë°”ë¥´ì§€ 않습니다: 앞서 표기한 ì–¸ë”스코어 문ìžë¥¼ " "제거하십시오" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcngettext(_\"...\") ì‚¬ìš©ì´ ì˜¬ë°”ë¥´ì§€ 않습니다: 앞서 표기한 ì–¸ë”스코어 문ìžë¥¼ " "제거하십시오" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: ë‘번째 ì¸ìž 위치ì—는 ì •ê·œí‘œí˜„ì‹ ìƒìˆ˜ë¥¼ 허용하지 않습니다" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "`%s' 함수: `%s' 매개 변수와 ì „ì—­ 변수가 겹칩니다" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "기ë¡í•  `%s'ì„(를) ì—´ 수 없습니다: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" -msgstr "STDERR로 변수 ëª©ë¡ ë³´ë‚´ëŠ” 중" +msgstr "표준 오류로 변수 ëª©ë¡ ë³´ë‚´ëŠ” 중" -#: awkgram.y:4930 -#, fuzzy, c-format +#: awkgram.y:4937 +#, c-format msgid "%s: close failed: %s" -msgstr "%s: 닫기 실패 (%s)" +msgstr "%s: 닫기 실패: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() 함수를 ë‘번 호출했습니다!" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "중복 변수가 있습니다." +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "중복 변수가 있습니다" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "`%s' 함수 ì´ë¦„ì€ ì´ë¯¸ 앞ì—서 ì •ì˜í–ˆìŠµë‹ˆë‹¤" -#: awkgram.y:5091 -#, fuzzy, c-format +#: awkgram.y:5098 +#, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "`%s' 함수: 함수 ì´ë¦„ì„ ë§¤ê°œë³€ìˆ˜ ì´ë¦„으로 사용할 수 없습니다" -#: awkgram.y:5094 -#, fuzzy, c-format +#: awkgram.y:5101 +#, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "`%s' 함수: `%s' 특수 변수를 함수 ì´ë¦„으로 활용할 수 없습니다" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "`%s' 함수: `%s' ë§¤ê°œë³€ìˆ˜ì— ì´ë¦„ 공간 ëª…ì¹­ì„ ë„£ì„ ìˆ˜ 없습니다" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "`%s' 함수: 매개변수 #%d, `%s'ì´(ê°€) 매개변수 #%d와(ê³¼) 중복ë©ë‹ˆë‹¤" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "`%s' 함수를 호출했지만 ì •ì˜í•˜ì§€ 않았습니다" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "`%s' 함수를 ì •ì˜í–ˆì§€ë§Œ ì§ì ‘ 호출한 ì ì´ 없습니다" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "#%d ë§¤ê°œë³€ìˆ˜ì˜ ì •ê·œí‘œí˜„ì‹ ìƒìˆ˜ì—서 부울린 ê°’ì„ ë„˜ê²¨ì¤ë‹ˆë‹¤" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -518,53 +531,57 @@ "ì´ë¦„ê³¼ `(' 괄호 사ì´ì— ê³µë°±ì„ ë„£ì–´ `%s' 함수를 호출했거나,\n" "변수 ë˜ëŠ” 배열로 사용했습니다" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "0으로 나누기를 시ë„했습니다" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "`%%'ì—서 0으로 나누기를 시ë„했습니다" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "필드 후위 ì¦ê°€ ì—°ì‚°ìžì˜ ê²°ê³¼ì— ê°’ì„ í• ë‹¹í•  수 없습니다" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "할당 대ìƒì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤(opcode %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "구문 실행 ì˜í–¥ì´ 없습니다" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "%s ì‹ë³„ìž: 기존 / POSIX 모드ì—서 한정 ì´ë¦„ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" -msgstr "%s ì‹ë³„ìž: ì´ë¦„ ê³µê°„ì€ ì½œë¡  하나가 아닌 ë‘개로 구분합니다." +msgstr "%s ì‹ë³„ìž: ì´ë¦„ ê³µê°„ì€ ì½œë¡  하나가 아닌 ë‘개로 구분합니다" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "`%s' 한정 ì‹ë³„ìžì˜ êµ¬ì„±ì´ ì˜¬ë°”ë¥´ì§€ 않습니다" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -"`%s' ì‹ë³„ìž: ì´ë¦„ 공간 구분ìžëŠ” 한정 명칭ì—서 한번만 나타내레 수 있습니다" +"`%s' ì‹ë³„ìž: ì´ë¦„ 공간 구분 문ìžëŠ” 한정 명칭ì—서 한번만 나타낼 수 있습니다" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "`%s' 예약 ì‹ë³„ìžëŠ” ì´ë¦„ 공간 명칭으로 허용하지 않습니다" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " @@ -572,19 +589,19 @@ msgstr "" "한정 ëª…ì¹­ì˜ ë‘번째 ìš”ì†Œë¡œì„œì˜ `%s' 예약 ì‹ë³„ìž í™œìš©ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "@namespace는 gawk 확장 기능입니다" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "`%s' ì´ë¦„ 공간 명칭ì—는 ì‹ë³„ìž ì´ë¦„ ê·œì¹™ì„ ë”°ë¼ì•¼í•©ë‹ˆë‹¤" #: builtin.c:144 -#, fuzzy, c-format +#, c-format msgid "%s to \"%s\" failed: %s" -msgstr "%sì„(를) \"%s\"(으)로 실패(%s)" +msgstr "%sì„(를) \"%s\"(으)로 실패: %s" #: builtin.c:148 msgid "standard output" @@ -594,8 +611,8 @@ msgid "standard error" msgstr "표준 오류" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: 숫ìžê°€ 아닌 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" @@ -631,15 +648,15 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: `%.*s'ì€(는) ì—´ì–´ë‘” 파ì¼, 파ì´í”„ ë˜ëŠ” 병행프로세스가 아닙니다" -#: builtin.c:378 builtin.c:2034 -#, fuzzy, c-format +#: builtin.c:378 builtin.c:2023 +#, c-format msgid "%s: received non-string first argument" -msgstr "index: 문ìžì—´ì´ 아닌 첫번째 ì¸ìžê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" +msgstr "%s: 문ìžì—´ì´ 아닌 첫번째 ì¸ìžê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" #: builtin.c:380 -#, fuzzy, c-format +#, c-format msgid "%s: received non-string second argument" -msgstr "index: 문ìžì—´ì´ 아닌 ë‘번째 ì¸ìžê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" +msgstr "%s: 문ìžì—´ì´ 아닌 ë‘번째 ì¸ìžê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" #: builtin.c:532 msgid "length: received array argument" @@ -649,182 +666,167 @@ msgid "`length(array)' is a gawk extension" msgstr "`length(array)'는 gawk 확장 기능입니다" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 -#, fuzzy, c-format +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 +#, c-format msgid "%s: received non-string argument" -msgstr "system: 문ìžì—´ì´ 아닌 ì¸ìžê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" +msgstr "%s: 문ìžì—´ì´ 아닌 ì¸ìžê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: builtin.c:586 builtin.c:1801 -#, fuzzy, c-format +#: builtin.c:586 builtin.c:1790 +#, c-format msgid "%s: received negative argument %g" -msgstr "log: ìŒìˆ˜ì¸ %g ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" +msgstr "%s: ìŒìˆ˜ì¸ %g ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "" "fatal: 모든 형ì‹ì— 대해 `count$'를 쓰거나 아니면 ì•„ì–˜ ì“°ì§€ ë§ì•„야 합니다" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "`%%' 지정ìžì˜ 필드 í­ì€ 무시합니다" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "`%%' 지정ìžì˜ ì •ë°€ë„는 무시합니다" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "`%%' 지정ìžì˜ 필드 í­ê³¼ ì •ë°€ë„는 무시합니다" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: `$'ì€(는) awk 형ì‹ì—서 허용하지 않습니다" -#: builtin.c:927 -#, fuzzy +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" -msgstr "fatal: `$'ì˜ ì¸ìž 갯수는 0보타 커야합니다" +msgstr "fatal: `$'ì˜ ì¸ìž ìƒ‰ì¸ ë²ˆí˜¸ëŠ” 0보타 커야합니다" -#: builtin.c:931 -#, fuzzy, c-format +#: builtin.c:937 +#, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" -msgstr "fatal: ì¸ìž 갯수 %ldì€(는) 지정 ì¸ìž ì „ì²´ 갯수보다 많아야 합니다" +msgstr "fatal: ì¸ìž ìƒ‰ì¸ ë²ˆí˜¸ %ldì€(는) 지정 ì¸ìž ì „ì²´ 갯수보다 많아야 합니다" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: 형ì‹ì— 따르면 구ë‘ì  ë‹¤ìŒì— `$'ì„(를) 허용하지 않습니다" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatal: 위치별 필드 í­ ë˜ëŠ” ì •ë°€ë„ë¡œì„œì˜ `$'ì´(ê°€) 없습니다" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "awk 형ì‹ì—서 `l'ì€ ì˜ë¯¸ê°€ 없습니다. 무시함" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "fatal: `l'ì€ POSIX awk 형ì‹ì—서 허용하지 않습니다" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "awk 형ì‹ì—서 `L'ì€ ì˜ë¯¸ê°€ 없습니다. 무시함" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: `L'ì€ POSIX awk 형ì‹ì—서 허용하지 않습니다" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "awk 형ì‹ì—서 `h'는 ì˜ë¯¸ê°€ 없습니다. 무시함" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: `h'는 POSIX awk 형ì‹ì—서 허용하지 않습니다" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "awk 형ì‹ì—서 `%c'ì€(는) ì˜ë¯¸ê°€ 없습니다. 무시함" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "fatal: `%c'ì€(는) POSIX awk 형ì‹ìœ¼ë¡œ 허용하지 않습니다" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: %%2$c 형ì‹ì— 대해 %1$g ê°’ì´ ë„ˆë¬´ í½ë‹ˆë‹¤" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: %g ê°’ì€ ì˜¬ë°”ë¥¸ ë²”ìœ„ì˜ ë¬¸ìžê°€ 아닙니다" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: `%%%2$c' 형ì‹ì— 대해 %1$g ê°’ì˜ ë²”ìœ„ë¥¼ 넘었습니다" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: `%%%2$c' 형ì‹ì— 대해 %1$s ê°’ì˜ ë²”ìœ„ë¥¼ 넘었습니다" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" -msgstr "%%%c 형ì‹ì€ POSIX 표준ì´ì§€ë§Œ 다른 awk í”„ë¡œê·¸ëž¨ì— ì´ì‹í•  수 없습니다." +msgstr "%%%c 형ì‹ì€ POSIX 표준ì´ì§€ë§Œ 다른 awk í”„ë¡œê·¸ëž¨ì— ì´ì‹í•  수 없습니다" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "알 수 없는 `%c' í˜•ì‹ ì§€ì • ë¬¸ìž ë¬´ì‹œ: 변환한 ì¸ìž ê°’ ì—†ìŒ" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: ì¸ìž ê°’ì´ í˜•ì‹ ë¬¸ìžì—´ì—서 지정한 ë§Œí¼ ì¶©ë¶„í•˜ì§€ 않습니다" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ ì´ ë¶€ë¶„ì— ë§žëŠ” 요소 ë¹ ì§" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: í˜•ì‹ ì§€ì •ìžì— 제어 문ìžê°€ 없습니다" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "í˜•ì‹ ë¬¸ìžì—´ì— 너무나 ë§Žì€ ì¸ìž ê°’ì„ ë„£ì—ˆìŠµë‹ˆë‹¤" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: ì¸ìž ê°’ ì—†ìŒ" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: ì¸ìž ê°’ ì—†ìŒ" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "printf: ì´ë¯¸ 닫힌 ì–‘ë°©í–¥ 파ì´í”„ë¼ì¸ì˜ 쓰기 ë ì§€ì ì—서 쓰기 시ë„" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: %g 길ì´ê°€ 1보다 í¬ê±°ë‚˜ 같지 않습니다" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: %g 길ì´ê°€ 0보다 í¬ê±°ë‚˜ 같지 않습니다" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: 숫ìžê°€ 아닌 %g ê¸¸ì´ ê°’ì„ ìžë¦…니다" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: 문ìžì—´ ì¸ë±ì‹± 번호로는 %g ê¸¸ì´ ê°’ì´ ë„ˆë¬´ 커서 %g 값으로 ìžë¦…니다" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: %g 시작 ì¸ë±ìФ ê°’ì´ ìž˜ëª»ë˜ì–´ 1ì„ ì‚¬ìš©í•©ë‹ˆë‹¤" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: 시작 ì¸ë±ìŠ¤ë¡œ 사용하는 %g 비 ì •ìˆ˜ê°’ì„ ìžë¦…니다" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: ì›ë³¸ 문ìžì—´ 길ì´ê°€ 0입니다" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: %g 시작 ì¸ë±ìФ ê°’ì´ ë¬¸ìžì—´ 길ì´ë³´ë‹¤ í½ë‹ˆë‹¤" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -832,154 +834,158 @@ "substr: %2$g 시작 ì¸ë±ìŠ¤ë¡œë¶€í„°ì˜ %1$g 길ì´ëŠ” 첫번째 ì¸ìž ê°’ì˜ ê¸¸ì´ë¥¼ 초과합니" "다(%3$lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: PROCINFO[\"strftime\"]ì˜ í˜•ì‹ ê°’ì— ìˆ«ìž ê°’ì´ ìžˆìŠµë‹ˆë‹¤" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 -#, fuzzy, c-format +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 +#, c-format msgid "%s: received non-numeric second argument" -msgstr "lshift: 숫ìžê°€ 아닌 ë‘번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" +msgstr "%s: 숫ìžê°€ 아닌 ë‘번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: ë‘번째 ì¸ìž ê°’ì´ 0보다 작거나 time_t보다 í½ë‹ˆë‹¤" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: ë‘번째 ì¸ìž ê°’ì´ time_t 범위를 벗어납니다" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: 빈 í˜•ì‹ ë¬¸ìžì—´ì„ 받았습니다" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: 지정 ê°’ 중 최소 한개 ì´ìƒì´ 기본 범위를 벗어납니다" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "샌드박스 모드ì—서는 'system' 함수 ì‹¤í–‰ì„ í—ˆìš©í•˜ì§€ 않습니다" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "print: ì´ë¯¸ 닫힌 ì–‘ë°©í–¥ 파ì´í”„ë¼ì¸ì˜ 쓰기 ë ì§€ì ì—서 쓰기 시ë„" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "초기화하지 ì•Šì€ `$%d'번 필드 참조" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 -#, fuzzy, c-format +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 +#, c-format msgid "%s: received non-numeric first argument" -msgstr "lshift: 숫ìžê°€ 아닌 첫번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" +msgstr "%s: 숫ìžê°€ 아닌 첫번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: 세번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s: %sì„(를) 세번째 ì¸ìž 값으로 사용할 수 없습니다" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: 세번째 `%.*s' ì¸ìž ê°’ì„ 1로 취급합니다" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: ì¸ìž ê°’ 2ê°œë§Œì„ ì‚¬ìš©í•˜ì—¬ ê°„ì ‘ 호출할 수 있습니다" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "%s ê°„ì ‘ 호출시 최소 ì¸ìž ê°’ 2개가 필요합니다" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): ì†Œìˆ«ì  ì•„ëž˜ ê°’ì€ ìž˜ë¦½ë‹ˆë‹¤" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): 쉬프팅한 ê°’ì´ í¬ë©´ ì´ìƒí•œ 결과를 가져올 수 있습니다" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): ì†Œìˆ«ì  ì•„ëž˜ ê°’ì€ ìž˜ë¦½ë‹ˆë‹¤" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): 쉬프팅한 ê°’ì´ í¬ë©´ ì´ìƒí•œ 결과를 가져올 수 있습니다" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 -#, fuzzy, c-format +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 +#, c-format msgid "%s: called with less than two arguments" -msgstr "or: ì¸ìž 갯수가 둘 미만입니다" +msgstr "%s: ì¸ìž 갯수가 둘 미만입니다" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 -#, fuzzy, c-format +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 +#, c-format msgid "%s: argument %d is non-numeric" -msgstr "or: %d번째 ì¸ìž ê°’ì€ ìˆ«ìžê°€ 아닙니다" +msgstr "%s: %d번째 ì¸ìž ê°’ì€ ìˆ«ìžê°€ 아닙니다" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 -#, fuzzy, c-format +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 +#, c-format msgid "%s: argument %d negative value %g is not allowed" -msgstr "%s: #%d번째 ì¸ìž %Rg ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" +msgstr "%s: %d번째 ì¸ìž %g ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): ì†Œìˆ«ì  ì•„ëž˜ ê°’ì€ ìž˜ë¦½ë‹ˆë‹¤" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s'ì€(는) 유효한 로캘 분류가 아닙니다" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: 세번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: 0으로 나누기를 시ë„했습니다" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof: ë‘번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -"typeofì—서 ìž˜ëª»ëœ `%s' 플래그 ì¡°í•©ì„ ë°œê²¬í–ˆìŠµë‹ˆë‹¤. 오류 보고서를 제출해주십시" -"오." +"typeofì—서 ìž˜ëª»ëœ `%s' 플래그 ì¡°í•©ì„ ë°œê²¬í–ˆìŠµë‹ˆë‹¤. 오류 보고서를 제출하십시오" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: ìž˜ëª»ëœ `%s' ì¸ìž 형ì‹" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: 알 수 없는 `%s' ì¸ìž 형ì‹" @@ -987,437 +993,433 @@ #: cint_array.c:1268 cint_array.c:1296 #, c-format msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" -msgstr "" +msgstr "샌드박스 모드ì—서는 새 파ì¼(%.*s)ì„ ARGVì— ì¶”ê°€í•  수 없습니다" -#: command.y:227 -#, fuzzy, c-format +#: command.y:228 +#, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" -msgstr "(g)awk <구문> ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤. ëª…ë ¹ì˜ ëì€ \"end\"로 ë내십시오\n" +msgstr "(g)awk <구문> ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤. ëª…ë ¹ì˜ ëì€ `end'로 ë내십시오\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "ìž˜ëª»ëœ í”„ë ˆìž„ 번호: %d" -#: command.y:297 -#, fuzzy, c-format +#: command.y:298 +#, c-format msgid "info: invalid option - `%s'" -msgstr "info: ìž˜ëª»ëœ ì˜µì…˜ - \"%s\"" +msgstr "info: ìž˜ëª»ëœ ì˜µì…˜ - `%s'" + +#: command.y:324 +#, c-format +msgid "source: `%s': already sourced" +msgstr "source `%s': ì´ë¯¸ 소스로 ë°˜ì˜í–ˆìŠµë‹ˆë‹¤" -#: command.y:323 -#, fuzzy, c-format -msgid "source: `%s': already sourced." -msgstr "source \"%s\": ì´ë¯¸ 소스로 ë°˜ì˜í–ˆìŠµë‹ˆë‹¤." - -#: command.y:328 -#, fuzzy, c-format -msgid "save: `%s': command not permitted." -msgstr "save \"%s\": ëª…ë ¹ì„ í—ˆìš©í•˜ì§€ 않습니다." +#: command.y:329 +#, c-format +msgid "save: `%s': command not permitted" +msgstr "save: `%s': ëª…ë ¹ì„ í—ˆìš©í•˜ì§€ 않습니다" -#: command.y:341 -#, fuzzy +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "`commands' ëª…ë ¹ì€ breakpoint/watchpoint ëª…ë ¹ì— í™œìš©í•  수 없습니다" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "ì•„ì§ ì¤‘ë‹¨ì /관찰ì ì„ 설정하지 않았습니다" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "ìž˜ëª»ëœ ì¤‘ë‹¨ì /ê´€ì°°ì  ë²ˆí˜¸" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "%s %dì— ë„달 í•˜ì˜€ì„ ë•Œ, 줄 당 하나씩 ëª…ë ¹ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤.\n" -#: command.y:352 -#, fuzzy, c-format +#: command.y:353 +#, c-format msgid "End with the command `end'\n" -msgstr "\"end\" 명령으로 ë내십시오\n" +msgstr "`end' 명령으로 ë내십시오\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end'는 `commands' 명령 ë˜ëŠ” `eval' 명령ì—ë§Œ 유효합니다" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "`silent'는 `commands' 명령ì—ë§Œ 유효합니다" -#: command.y:375 -#, fuzzy, c-format +#: command.y:376 +#, c-format msgid "trace: invalid option - `%s'" -msgstr "trace: ìž˜ëª»ëœ ì˜µì…˜ - \"%s\"" +msgstr "trace: ìž˜ëª»ëœ ì˜µì…˜ - `%s'" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: ìž˜ëª»ëœ ì¤‘ë‹¨ì /ê´€ì°°ì  ë²ˆí˜¸" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "ì¸ìž ê°’ì´ ë¬¸ìžì—´ì´ 아닙니다" -#: command.y:461 command.y:466 -#, fuzzy, c-format +#: command.y:462 command.y:467 +#, c-format msgid "option: invalid parameter - `%s'" -msgstr "option: ìž˜ëª»ëœ ë§¤ê°œ 변수 - \"%s\"" +msgstr "option: ìž˜ëª»ëœ ë§¤ê°œ 변수 - `%s'" -#: command.y:476 -#, fuzzy, c-format +#: command.y:477 +#, c-format msgid "no such function - `%s'" -msgstr "함수 아님 - \"%s\"" +msgstr "함수 아님 - `%s'" -#: command.y:533 -#, fuzzy, c-format +#: command.y:534 +#, c-format msgid "enable: invalid option - `%s'" -msgstr "enable: ìž˜ëª»ëœ ì˜µì…˜ - \"%s\"" +msgstr "enable: ìž˜ëª»ëœ ì˜µì…˜ - `%s'" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "ìž˜ëª»ëœ ë²”ìœ„ 지정: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "필드 번호 ê°’ì´ ìˆ«ìžê°€ 아닙니다" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "ìˆ«ìž ê°’ì´ì–´ì•¼ 하지만, 숫ìžê°€ 아닌 값입니다" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "0ì´ ì•„ë‹Œ 정수값" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - ì „ì²´ ë˜ëŠ” 안쪽 프레임 Nê°œ(Nì´ ìŒìˆ˜ì´ë©´ 바깥 프레임 Nê°œ) ì¶”ì  " -"단계를 출력합니다." +"단계를 출력합니다" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." -msgstr "break [[<íŒŒì¼ ì´ë¦„>:]N|<함수ì´ë¦„>] - 지정 ìœ„ì¹˜ì— ì¤‘ë‹¨ì ì„ 설정합니다." +"break [[filename:]N|function] - set breakpoint at the specified location" +msgstr "break [[<íŒŒì¼ ì´ë¦„>:]N|<함수ì´ë¦„>] - 지정 ìœ„ì¹˜ì— ì¤‘ë‹¨ì ì„ 설정합니다" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[<íŒŒì¼ ì´ë¦„>:]N|<함수ì´ë¦„>] - 앞서 설정한 중단ì ì„ 삭제합니다." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" +msgstr "clear [[<íŒŒì¼ ì´ë¦„>:]N|<함수ì´ë¦„>] - 앞서 설정한 중단ì ì„ 삭제합니다" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" -"commands [<번호>] - 중단ì (관찰ì ) ë„달시 실행할 명령 조회를 시작합니다." +"commands [<번호>] - 중단ì (관찰ì ) ë„달시 실행할 명령 조회를 시작합니다" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -"condition <번호> [<수ì‹>] - ì¤‘ë‹¨ì  ë˜ëŠ” ê´€ì°°ì  ìƒíƒœë¥¼ 설정하거나 소거합니다." +"condition <번호> [<수ì‹>] - ì¤‘ë‹¨ì  ë˜ëŠ” ê´€ì°°ì  ìƒíƒœë¥¼ 설정하거나 소거합니다" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [<갯수>] - 디버깅 ì¤‘ì¸ í”„ë¡œê·¸ëž¨ ì‹¤í–‰ì„ ê³„ì†í•©ë‹ˆë‹¤." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [<갯수>] - 디버깅 ì¤‘ì¸ í”„ë¡œê·¸ëž¨ ì‹¤í–‰ì„ ê³„ì†í•©ë‹ˆë‹¤" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "delete [<중단ì >] [<범위>] - 지정 중단ì ì„ 삭제합니다." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "delete [<중단ì >] [<범위>] - 지정 중단ì ì„ 삭제합니다" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." -msgstr "" -"disable [<중단ì >] [<범위>] - 지정 중단ì ì„ 사용하지 않ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" +msgstr "disable [<중단ì >] [<범위>] - 지정 중단ì ì„ 사용하지 않ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." -msgstr "display [<변수>] - 프로그램 ì‹¤í–‰ì„ ë©ˆì¶œ 때마다 변수 ê°’ì„ ì¶œë ¥í•©ë‹ˆë‹¤." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" +msgstr "display [<변수>] - 프로그램 ì‹¤í–‰ì„ ë©ˆì¶œ 때마다 변수 ê°’ì„ ì¶œë ¥í•©ë‹ˆë‹¤" -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] - N í”„ë ˆìž„ë§Œí¼ ìŠ¤íƒì„ ë”°ë¼ ë‚´ë ¤ê°‘ë‹ˆë‹¤." +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [N] - N í”„ë ˆìž„ë§Œí¼ ìŠ¤íƒì„ ë”°ë¼ ë‚´ë ¤ê°‘ë‹ˆë‹¤" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -"dump [<íŒŒì¼ ì´ë¦„>] - íŒŒì¼ ë˜ëŠ” 표준 ì¶œë ¥ì„ ëŒ€ìƒìœ¼ë¡œ ë‹¤ìˆ˜ì˜ ëª…ë ¹ì„ ì €ìž¥í•©ë‹ˆë‹¤." +"dump [<íŒŒì¼ ì´ë¦„>] - íŒŒì¼ ë˜ëŠ” 표준 ì¶œë ¥ì„ ëŒ€ìƒìœ¼ë¡œ ë‹¤ìˆ˜ì˜ ëª…ë ¹ì„ ì €ìž¥í•©ë‹ˆë‹¤" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -"enable [once|del] [<중단ì >] [<범위>] - 지정 중단ì ì„ 사용하ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤." +"enable [once|del] [<중단ì >] [<범위>] - 지정 중단ì ì„ 사용하ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤" -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end - awk 구문 ë˜ëŠ” ëª…ë ¹ì˜ ì¡°íšŒë¥¼ ë냅니다." +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end - awk 구문 ë˜ëŠ” ëª…ë ¹ì˜ ì¡°íšŒë¥¼ ë냅니다" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "" -"eval <구문>|[<매개변수1>, <매개변수2>, ...] - awk êµ¬ë¬¸ì„ ì—°ì‚° 실행합니다." +"eval <구문>|[<매개변수1>, <매개변수2>, ...] - awk êµ¬ë¬¸ì„ ì—°ì‚° 실행합니다" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." -msgstr "exit - (quit와 ë™ì¼) 디버거를 빠져나갑니다." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit - (quit와 ë™ì¼) 디버거를 빠져나갑니다" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." -msgstr "finish - ì„ íƒí•œ ìŠ¤íƒ í”„ë ˆìž„ì„ ë°˜í™˜í•˜ê¸°ê¹Œì§€ 실행합니다." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" +msgstr "finish - ì„ íƒí•œ ìŠ¤íƒ í”„ë ˆìž„ì„ ë°˜í™˜í•˜ê¸°ê¹Œì§€ 실행합니다" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - N 번 ìŠ¤íƒ í”„ë ˆìž„ì„ ì„ íƒí•˜ê³  출력합니다." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] - N 번 ìŠ¤íƒ í”„ë ˆìž„ì„ ì„ íƒí•˜ê³  출력합니다" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." -msgstr "help [명령] - 명령 목ë¡ê³¼ 명령 ì„¤ëª…ì„ ì¶œë ¥í•©ë‹ˆë‹¤." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" +msgstr "help [명령] - 명령 목ë¡ê³¼ 명령 ì„¤ëª…ì„ ì¶œë ¥í•©ë‹ˆë‹¤" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore N <갯수> - N번부터 <갯수>ë§Œí¼ ì¤‘ë‹¨ì  ë¬´ì‹œ 갯수를 설정합니다." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" +msgstr "ignore N <갯수> - N번부터 <갯수>ë§Œí¼ ì¤‘ë‹¨ì  ë¬´ì‹œ 갯수를 설정합니다" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -"list [-|+|[<íŒŒì¼ ì´ë¦„>:]<행번호>|<함수ì´ë¦„>|<범위>] - 지정 í–‰ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤." +"list [-|+|[<íŒŒì¼ ì´ë¦„>:]<행번호>|<함수ì´ë¦„>|<범위>] - 지정 í–‰ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" "next [<갯수>] - í”„ë¡œê·¸ëž¨ì„ ì§€ì • íšŸìˆ˜ë§Œí¼ ë‹¨ê³„ 실행하며, 하위 루틴 í˜¸ì¶œì€ ë‹¨" -"ì¼ ë‹¨ê³„ë¡œ 간주합니다." +"ì¼ ë‹¨ê³„ë¡œ 간주합니다" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [<갯수>] - 명령 하나를 실행하며, 하위 루틴 í˜¸ì¶œì€ ë‹¨ì¼ ë‹¨ê³„ë¡œ 간주합니" -"다." - -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [<ì´ë¦„>[=<ê°’>]] - 디버거 ì˜µì…˜ì„ ì„¤ì •í•˜ê±°ë‚˜ 표시합니다." - -#: command.y:867 -msgid "print var [var] - print value of a variable or array." -msgstr "print <변수> [<변수>] - 변수 ê°’ ë˜ëŠ” ë°°ì—´ ê°’ì„ ì¶œë ¥í•©ë‹ˆë‹¤." - -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." -msgstr "printf <형ì‹>, [<ì¸ìžê°’>], ... - 지정 형ì‹ëŒ€ë¡œ 출력." - -#: command.y:871 -msgid "quit - exit debugger." -msgstr "quit - 디버거를 빠져나갑니다." - -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." -msgstr "return [<ê°’>] - ì„ íƒí•œ ìŠ¤íƒ í”„ë ˆìž„ì—서 호출ìžë¡œ ê°’ì„ ë°˜í™˜í•˜ë„ë¡í•©ë‹ˆë‹¤." - -#: command.y:875 -msgid "run - start or restart executing program." -msgstr "run - 프로그램 ì‹¤í–‰ì„ ì‹œìž‘í•˜ê±°ë‚˜ 다시 시작합니다." - -#: command.y:878 -msgid "save filename - save commands from the session to file." -msgstr "save <íŒŒì¼ ì´ë¦„> - 세션ì—서 실행한 명령(목ë¡)ì„ íŒŒì¼ì— 저장합니다." +"다" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." -msgstr "set <변수> = <ê°’> - ë³€ìˆ˜ì— ìŠ¤ì¹¼ë¼ ê°’ì„ í• ë‹¹í•©ë‹ˆë‹¤." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [<ì´ë¦„>[=<ê°’>]] - 디버거 ì˜µì…˜ì„ ì„¤ì •í•˜ê±°ë‚˜ 표시합니다" + +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "print <변수> [<변수>] - 변수 ê°’ ë˜ëŠ” ë°°ì—´ ê°’ì„ ì¶œë ¥í•©ë‹ˆë‹¤" + +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf <형ì‹>, [<ì¸ìžê°’>], ... - 지정 형ì‹ìœ¼ë¡œ 출력합니다" + +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit - 디버거를 빠져나갑니다" + +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" +msgstr "return [<ê°’>] - ì„ íƒí•œ ìŠ¤íƒ í”„ë ˆìž„ì—서 호출ìžë¡œ ê°’ì„ ë°˜í™˜í•˜ë„ë¡í•©ë‹ˆë‹¤" + +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run - 프로그램 ì‹¤í–‰ì„ ì‹œìž‘í•˜ê±°ë‚˜ 다시 시작합니다" + +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save <íŒŒì¼ ì´ë¦„> - 세션ì—서 실행한 명령(목ë¡)ì„ íŒŒì¼ì— 저장합니다" + +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" +msgstr "set <변수> = <ê°’> - ë³€ìˆ˜ì— ìŠ¤ì¹¼ë¼ ê°’ì„ í• ë‹¹í•©ë‹ˆë‹¤" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - 중단ì /관찰ì ì— ë„달하여 ë©ˆì·„ì„ ê²½ìš° ì¼ë°˜ì ìœ¼ë¡œ 나타나는 메시지를 숨" -"ê¹ë‹ˆë‹¤." +"ê¹ë‹ˆë‹¤" -#: command.y:885 -msgid "source file - execute commands from file." -msgstr "source <파ì¼> - 파ì¼ì— 들어있는 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤." +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source <파ì¼> - 파ì¼ì— 들어있는 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" "step [<갯수>] - 다른 소스 코드 í–‰ì— ë„달할 때까지 í”„ë¡œê·¸ëž¨ì„ ë‹¨ê³„ 별로 진행합" -"니다." - -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [<갯수>] - 정확하게 명령 한 ê°œ ì‹¤í–‰ì„ ì§„í–‰í•©ë‹ˆë‹¤." - -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[<íŒŒì¼ ì´ë¦„>:]|<함수ì´ë¦„>] - 임시 중단ì ì„ 설정합니다." - -#: command.y:893 -msgid "trace on|off - print instruction before executing." -msgstr "trace on|off - 실행 ì „ ëª…ë ¹ì„ ì¶œë ¥í•©ë‹ˆë‹¤." +"니다" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." -msgstr "undisplay [N] - ìžë™ 표시 목ë¡ì—서 변수를 제거합니다." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [<갯수>] - 정확하게 명령 한 ê°œ ì‹¤í–‰ì„ ì§„í–‰í•©ë‹ˆë‹¤" + +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[<íŒŒì¼ ì´ë¦„>:]|<함수ì´ë¦„>] - 임시 중단ì ì„ 설정합니다" + +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off - 실행 ì „ ëª…ë ¹ì„ ì¶œë ¥í•©ë‹ˆë‹¤" + +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" +msgstr "undisplay [N] - ìžë™ 표시 목ë¡ì—서 변수를 제거합니다" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[<íŒŒì¼ ì´ë¦„>:]|<함수ì´ë¦„>] - 현재 프레임 ì˜ì—­ì—서 다른 í–‰ ë˜ëŠ” N 번" -"째 í–‰ì— ë„달하기까지 í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•©ë‹ˆë‹¤." +"째 í–‰ì— ë„달하기까지 í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•©ë‹ˆë‹¤" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] - 관찰 목ë¡ì—서 변수를 제거합니다." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] - 관찰 목ë¡ì—서 변수를 제거합니다" -#: command.y:901 -msgid "up [N] - move N frames up the stack." -msgstr "up [N] - 스íƒì—서 N 번째 ìƒë‹¨ 프레임으로 ì´ë™í•©ë‹ˆë‹¤." +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [N] - 스íƒì—서 N 번째 ìƒë‹¨ 프레임으로 ì´ë™í•©ë‹ˆë‹¤" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." -msgstr "watch <변수> - 변수를 관찰대ìƒ(관찰ì )으로 설정합니다." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch <변수> - 변수를 관찰대ìƒ(관찰ì )으로 설정합니다" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] - (backtrace와 ë™ì¼) ì „ì²´ ë˜ëŠ” 안쪽 프레임 Nê°œ(Nì´ ìŒìˆ˜ì´ë©´ 바깥 프" -"레임 Nê°œ) ì¶”ì  ë‹¨ê³„ë¥¼ 출력합니다." +"레임 Nê°œ) ì¶”ì  ë‹¨ê³„ë¥¼ 출력합니다" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "오류: " -#: command.y:1060 -#, fuzzy, c-format +#: command.y:1061 +#, c-format msgid "cannot read command: %s\n" -msgstr "ëª…ë ¹ì„ ì½ì„ 수 ì—†ìŒ(%s)\n" +msgstr "ëª…ë ¹ì„ ì½ì„ 수 없습니다: %s\n" -#: command.y:1074 -#, fuzzy, c-format +#: command.y:1075 +#, c-format msgid "cannot read command: %s" -msgstr "ëª…ë ¹ì„ ì½ì„ 수 ì—†ìŒ(%s)" +msgstr "ëª…ë ¹ì„ ì½ì„ 수 없습니다: %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "ëª…ë ¹ì— ìž˜ëª»ëœ ë¬¸ìžê°€ 있습니다" -#: command.y:1161 -#, fuzzy, c-format +#: command.y:1162 +#, c-format msgid "unknown command - `%.*s', try help" -msgstr "알 수 없는 명령 - \"%.*s\", ë„움ë§ì„ 참고하십시오" +msgstr "알 수 없는 명령 - `%.*s', ë„움ë§ì„ 참고하십시오" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "ìž˜ëª»ëœ ë¬¸ìž" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "ì •ì˜í•˜ì§€ ì•Šì€ ëª…ë ¹: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." -msgstr "ê¸°ë¡ íŒŒì¼ì˜ 유지 í–‰ 갯수를 설정하거나 표시합니다." +msgid "set or show the number of lines to keep in history file" +msgstr "ê¸°ë¡ íŒŒì¼ì˜ 유지 í–‰ 갯수를 설정하거나 표시합니다" #: debug.c:259 -msgid "set or show the list command window size." -msgstr "명령 ëª©ë¡ ì°½ í¬ê¸°ë¥¼ 설정하거나 표시합니다." +msgid "set or show the list command window size" +msgstr "명령 ëª©ë¡ ì°½ í¬ê¸°ë¥¼ 설정하거나 표시합니다" #: debug.c:261 -msgid "set or show gawk output file." -msgstr "gawk 출력 파ì¼ì„ 설정하거나 표시합니다." +msgid "set or show gawk output file" +msgstr "gawk 출력 파ì¼ì„ 설정하거나 표시합니다" #: debug.c:263 -msgid "set or show debugger prompt." -msgstr "디버거 프롬프트를 설정하거나 표시합니다." +msgid "set or show debugger prompt" +msgstr "디버거 프롬프트를 설정하거나 표시합니다" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "명령 ê¸°ë¡ ì €ìž¥ì„ ì„¤ì •(í•´ì œ) 하거나 표시합니다(ê°’=on|off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "옵션 ì €ìž¥ì„ ì„¤ì •(í•´ì œ) 하거나 표시합니다(ê°’=on|off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "명령문 ì¶”ì ì„ 설정(í•´ì œ) 하거나 표시합니다(ê°’=on|off)" #: debug.c:358 -msgid "program not running." -msgstr "í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•˜ê³  있지 않습니다." +msgid "program not running" +msgstr "í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•˜ê³  있지 않습니다" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "`%s' 소스 파ì¼ì´ 비었습니다.\n" -#: debug.c:493 -msgid "no current source file." -msgstr "현재 소스 파ì¼ì´ 아닙니다." +#: debug.c:502 +msgid "no current source file" +msgstr "현재 소스 파ì¼ì´ 아닙니다" -#: debug.c:518 -#, fuzzy, c-format +#: debug.c:527 +#, c-format msgid "cannot find source file named `%s': %s" -msgstr "`%s' 소스 파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다(%s)" +msgstr "`%s' 소스 파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다: %s" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "경고: 프로그램 ì»´íŒŒì¼ í›„ `%s' 소스 파ì¼ì„ 수정했습니다.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "í–‰ 번호 %d번 범위 초과 `%s' í–‰ 갯수는 %dê°œ 입니다" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "`%s' 파ì¼, í–‰ 번호 %d번 ì½ëŠ” 중 예ìƒì¹˜ 못한 íŒŒì¼ ë 발견" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "프로그램 시작 후 `%s' 소스 파ì¼ì„ 수정했습니다" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "현재 소스 파ì¼: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "í–‰ 번호: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "소스 파ì¼(í–‰ 갯수): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1425,54 +1427,54 @@ "번호 ë””ìŠ¤í”Œë ˆì´ í™œì„± 위치\n" "\n" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" -msgstr "\të„달횟수 = %ld\n" +msgid "\tnumber of hits = %ld\n" +msgstr "\të„달 횟수 = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\të‹¤ìŒ %ld번 ë„달 무시\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\t중단 ìƒíƒœ: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\t명령:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "현재 프레임: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "프레임ì—서 호출함: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "프레임 호출ìž: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "main()ì— ì—†ìŠµë‹ˆë‹¤.\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "ì¸ìžê°€ 없습니다.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "로컬 요소 아님.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1480,7 +1482,7 @@ "ì •ì˜í•œ 모든 변수:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1488,7 +1490,7 @@ "ì •ì˜í•œ 모든 함수:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1496,7 +1498,7 @@ "ìžë™ 표시 변수:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1504,386 +1506,390 @@ "관찰 변수:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "현재 컨í…ìŠ¤íŠ¸ì— `%s' ì‹¬ë³¼ì´ ì—†ìŠµë‹ˆë‹¤\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "`%s'ì€(는) ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = 초기화 하지 ì•Šì€ í•„ë“œ\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "`%s' ë°°ì—´ì´ ë¹„ì–´ìžˆìŠµë‹ˆë‹¤\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" -msgstr "[\"%.*s\"] ê°’ì€ `%s' ë°°ì—´ì— ì—†ìŠµë‹ˆë‹¤\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "\"%.*s\" 첨ìžëŠ” `%s' ë°°ì—´ì— ì—†ìŠµë‹ˆë‹¤\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s[\"%.*s\"]'ì€(는) ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s'ì€(는) ìŠ¤ì¹¼ë¼ ë³€ìˆ˜ê°€ 아닙니다" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "ìŠ¤ì¹¼ë¼ ì»¨í…스트ì—서 `%s[\"%.*s\"]' ë°°ì—´ì„ ì·¨ê¸‰í•˜ë ¤ê³  합니다" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "`%s[\"%.*s\"]' ìŠ¤ì¹¼ë¼ êµ¬ì¡°ë¥¼ ë°°ì—´ 구조로 취급하려고 합니다" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "`%s'ì€(는) 함수입니다" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "ê´€ì°°ì  %d번 ìƒíƒœ ì •ë³´ê°€ 없습니다\n" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "%ld번 항목 표시 안 함" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "%ld번 항목 관찰 안 함" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" -msgstr "%d: [\"%.*s\"] ì€(는) `%s' ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: \"%.*s\" 첨ìžëŠ” `%s' ë°°ì—´ì— ì—†ìŠµë‹ˆë‹¤\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "ìŠ¤ì¹¼ë¼ ê°’ì„ ë°°ì—´ë¡œ 사용하려고 합니다" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "매개변수가 범위를 벗어나 ê´€ì°°ì  %dë²ˆì„ ì‚­ì œí–ˆìŠµë‹ˆë‹¤.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "매개변수가 범위를 벗어나 %d 디스플레ì´ë¥¼ 삭제했습니다.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" -msgstr "`%s' 파ì¼, í–‰ 번호 %d번\n" +msgstr " `%s' 파ì¼, í–‰ 번호 %d번\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" -msgstr "`%s':%d 위치" +msgstr " `%s':%d 위치" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tin " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "ìŠ¤íƒ í”„ë ˆìž„ ë” ë”°ë¼ê°€ë³´ê¸° ...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "ìž˜ëª»ëœ í”„ë ˆìž„ 번호" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "참고: ì¤‘ë‹¨ì  %d번(활성, ë‹¤ìŒ %ld번 ë„달 무시)ì„ %s:%d 위치ì—ë„ ì„¤ì •í–ˆìŠµë‹ˆë‹¤" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "참고: ì¤‘ë‹¨ì  %d번(활성)ì„ %s:%d 위치ì—ë„ ì„¤ì •í–ˆìŠµë‹ˆë‹¤" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "참고: ì¤‘ë‹¨ì  %d번(비활성, ë‹¤ìŒ %ld번 ë„달 무시)ì„ %s:%d 위치ì—ë„ ì„¤ì •í–ˆìŠµë‹ˆë‹¤" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "참고: ì¤‘ë‹¨ì  %d번(비활성)ì„ %s:%d 위치ì—ë„ ì„¤ì •í–ˆìŠµë‹ˆë‹¤" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" "`%2$s' 파ì¼, %3$d번째 í–‰ì— ì¤‘ë‹¨ì  %1$d번 설정\n" " \n" -#: debug.c:2357 -#, fuzzy, c-format +#: debug.c:2366 +#, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "`%s' 파ì¼ì— 중단ì ì„ 설정할 수 없습니다\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "`%2$s' 파ì¼ì˜ í–‰ 번호 %1$dë²ˆì€ ë²”ìœ„ë¥¼ 벗어납니다" -#: debug.c:2390 -#, fuzzy, c-format +#: debug.c:2399 +#, c-format msgid "internal error: cannot find rule\n" -msgstr "ë‚´ë¶€ 오류: null 변수 ì´ë¦„ê³¼ %s" +msgstr "ë‚´ë¶€ 오류: ê·œì¹™ì„ ì°¾ì„ ìˆ˜ 없습니다\n" -#: debug.c:2392 -#, fuzzy, c-format +#: debug.c:2401 +#, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "`%s'ì— ì¤‘ë‹¨ì ì„ 설정할 수 없습니다: %d\n" -#: debug.c:2404 -#, fuzzy, c-format +#: debug.c:2413 +#, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "`%s' í•¨ìˆ˜ì— ì¤‘ë‹¨ì ì„ 설정할 수 없습니다\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" "`%2$s' 파ì¼, í–‰ 번호 %3$dë²ˆì— ì§€ì •í•œ ì¤‘ë‹¨ì  %1$d번 ìƒíƒœ ì •ë³´ê°€ 없습니다\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "`%2$s' 파ì¼ì˜ í–‰ 번호 %1$dë²ˆì€ ë²”ìœ„ë¥¼ 벗어납니다" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "ì¤‘ë‹¨ì  %dë²ˆì„ ì‚­ì œí–ˆìŠµë‹ˆë‹¤" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "`%s' í•¨ìˆ˜ì— ëŒ€í•œ ì¤‘ë‹¨ì  í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "`%s' 파ì¼, í–‰ 번호 #%d ìœ„ì¹˜ì— ì¤‘ë‹¨ì  ì—†ìŒ\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "ìž˜ëª»ëœ ì¤‘ë‹¨ì  ë²ˆí˜¸" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "모든 중단ì ì„ 삭제하시겠습니까? (y ë˜ëŠ” n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "y" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "ì¤‘ë‹¨ì  %2$dë²ˆì— ë‹¤ìŒ %1$ld회 ë„달시 무시합니다.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "다ìŒì— ì¤‘ë‹¨ì  %dë²ˆì— ë„ë‹¬í–ˆì„ ë•Œ 멈춥니다.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "`-f' ì˜µì…˜ì„ ë¶™ì˜€ì„ ê²½ìš°ì—ë§Œ í”„ë¡œê·¸ëž¨ì„ ë””ë²„ê¹…í•  수 있습니다.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "디버거 다시 ì‹œìž‘ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "í”„ë¡œê·¸ëž¨ì„ ì´ë¯¸ 실행 중입니다. 처ìŒë¶€í„° 다시 시작하시겠습니까(y/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 시작하지 않ìŒ\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "error: 다시 시작할 수 없습니다. ì‹¤í–‰ì„ í—ˆìš©í•˜ì§€ 않ìŒ\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "error (%s): 다시 시작할 수 없습니다. 나머지 명령 무시\n" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" -msgstr "프로그램 시작: \n" +msgid "Starting program:\n" +msgstr "프로그램 시작:\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "ë¹„ì •ìƒ ì¢…ë£Œ ê°’ì„ ë°˜í™˜í•˜ë©° í”„ë¡œê·¸ëž¨ì„ ë¹ ì ¸ë‚˜ì™”ìŠµë‹ˆë‹¤: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "ì •ìƒ ì¢…ë£Œ ê°’ì„ ë°˜í™˜í•˜ë©° í”„ë¡œê·¸ëž¨ì„ ë¹ ì ¸ë‚˜ì™”ìŠµë‹ˆë‹¤: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " -msgstr "í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰ì¤‘ìž…ë‹ˆë‹¤. ê·¸ëž˜ë„ ë¹ ì ¸ë‚˜ê°€ì‹œê² ìŠµë‹ˆê¹Œ(y/n)?" +msgstr "í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰ì¤‘ìž…ë‹ˆë‹¤. ê·¸ëž˜ë„ ë¹ ì ¸ë‚˜ê°€ì‹œê² ìŠµë‹ˆê¹Œ(y/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "ì–´ë–¤ 중단ì ì—ì„œë„ ë©ˆì¶”ì§€ 않았습니다. ì¸ìž ê°’ì„ ë¬´ì‹œí•©ë‹ˆë‹¤.\n" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." -msgstr "ìž˜ëª»ëœ ì¤‘ë‹¨ì  ë²ˆí˜¸ %d번." +msgid "invalid breakpoint number %d" +msgstr "ìž˜ëª»ëœ ì¤‘ë‹¨ì  ë²ˆí˜¸ %d번" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "ì¤‘ë‹¨ì  %2$dì˜ ë‹¤ìŒ %1$ld회 ë„ë‹¬ì„ ë¬´ì‹œí•©ë‹ˆë‹¤.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "main() 프레임 바깥 ìš°ì„  부분ì—서 'finish'는 ì˜ë¯¸ì—†ìŠµë‹ˆë‹¤\n" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "ë‹¤ìŒ ìœ„ì¹˜ì—서 return 문까지 실행 " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" "main() 프레임 바깥 ìš°ì„  부분ì—서 'return'ì€ ì˜ë¯¸ì—†ìŠµë‹ˆë‹¤\n" "\n" -#: debug.c:3386 -#, fuzzy, c-format +#: debug.c:3397 +#, c-format msgid "cannot find specified location in function `%s'\n" msgstr "`%s' í•¨ìˆ˜ì˜ ì§€ì • 위치를 ì°¾ì„ ìˆ˜ 없습니다\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "`%2$s' 파ì¼ì—서 ìž˜ëª»ëœ ì†ŒìŠ¤ í–‰ 번호 %1$d번" -#: debug.c:3409 -#, fuzzy, c-format +#: debug.c:3420 +#, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "`%2$s' 파ì¼ì˜ %1$d번째 지정 위치를 ì°¾ì„ ìˆ˜ 없습니다\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "ë°°ì—´ì— ì›ì†Œê°€ 없습니다\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "형ì‹ì„ 지정하지 ì•Šì€ ë³€ìˆ˜\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "%sì—서 중단 중 ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "ì „ì—­ jump '%s'ì—서 'finish'는 ì˜ë¯¸ì—†ìŠµë‹ˆë‹¤\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "ì „ì—­ jump '%s'ì—서 'until'ì€ ì˜ë¯¸ì—†ìŠµë‹ˆë‹¤\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 -#, fuzzy +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" -"\t------계ì†í•˜ë ¤ë©´ [Enter] 를, ë내려면 q [Enter] 를 입력하십시오------" +"\t------계ì†í•˜ë ¤ë©´ [Enter] 를, ë내려면 [q] + [Enter] 를 입력하십시오------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] ê°’ì€ `%s' ë°°ì—´ì— ì—†ìŠµë‹ˆë‹¤" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "출력 ë‚´ìš©ì„ í‘œì¤€ 출력으로 보내는 중\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "ìž˜ëª»ëœ ìˆ«ìž ê°’" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "현재 컨í…ìŠ¤íŠ¸ì— `%s'ì„(를) 허용하지 않습니다. 구문 무시함" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "현재 컨í…ìŠ¤íŠ¸ì— `return'ì„ í—ˆìš©í•˜ì§€ 않습니다. 구문 무시함" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" +msgid "no symbol `%s' in current context" msgstr "현재 컨í…ìŠ¤íŠ¸ì— `%s' ì‹¬ë³¼ì´ ì—†ìŠµë‹ˆë‹¤" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "알 수 없는 노드 í˜•ì‹ %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "알 수 없는 opcode %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "%s opcode는 ì—°ì‚°ìžë‚˜ 키워드가 아닙니다" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "genflags2strì—서 ë²„í¼ ë„˜ì¹¨" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1894,71 +1900,71 @@ "\t# 함수 콜 스íƒ:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE'는 gawk 확장 기능입니다" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE'는 gawk 확장기능입니다" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "`%s' BINMODE ê°’ì´ ìž˜ëª»ë˜ì–´ 3값으로 취급합니다" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "ìž˜ëª»ëœ `%2$s' `%1$sFMT' ì •ì˜" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "`LINT'ì— ê°’ì„ í• ë‹¹í•˜ì—¬ `--lint' ì˜µì…˜ì„ ë•니다" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "초기화 하지 ì•Šì€ `%s' ì¸ìž 값으로 참조" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "초기화 하지 ì•Šì€ `%s' 값으로 참조" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "숫ìžê°€ 아닌 값으로 필드 참조 시ë„" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "null 문ìžì—´ë¡œ 필드 참조 시ë„" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "%ld번 필드 ì ‘ê·¼ 시ë„" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "초기화하지 ì•Šì€ `$%ld'번 필드를 참조했습니다" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "`%s' 함수를 ì„ ì–¸ 갯수보다 ë” ë§Žì€ ì¸ìž 값으로 호출했습니다" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: 예ìƒì¹˜ 못한 `%s' 형ì‹" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "`/=' ì—°ì‚°ìžë¡œ 0으로 나누기를 시ë„했습니다" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "`%%=' ì—°ì‚°ìžë¡œ 0으로 나누기를 시ë„했습니다" @@ -1976,20 +1982,20 @@ msgstr "load_ext: NULL lib_nameì„ ë°›ì•˜ìŠµë‹ˆë‹¤" #: ext.c:60 -#, fuzzy, c-format +#, c-format msgid "load_ext: cannot open library `%s': %s" -msgstr "load_ext: `%s' ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì—´ 수 ì—†ìŒ(%s)" +msgstr "load_ext: `%s' ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì—´ 수 없습니다: %s" #: ext.c:66 -#, fuzzy, c-format +#, c-format msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible': %s" msgstr "" -"load_ext: `%s' ë¼ì´ë¸ŒëŸ¬ë¦¬: `plugin_is_GPL_compatible'ì„ ì •ì˜í•˜ì§€ 않ìŒ(%s)" +"load_ext: `%s' ë¼ì´ë¸ŒëŸ¬ë¦¬: `plugin_is_GPL_compatible'ì„ ì •ì˜í•˜ì§€ 않ìŒ: %s" #: ext.c:72 -#, fuzzy, c-format +#, c-format msgid "load_ext: library `%s': cannot call function `%s': %s" -msgstr "load_ext: `%s' ë¼ì´ë¸ŒëŸ¬ë¦¬: `%s' 함수를 호출할 수 ì—†ìŒ(%s)" +msgstr "load_ext: `%s' ë¼ì´ë¸ŒëŸ¬ë¦¬: `%s' 함수를 호출할 수 없습니다: %s" #: ext.c:76 #, c-format @@ -2001,18 +2007,18 @@ msgstr "make_builtin: 함수 ì´ë¦„ ë¹ ì§" #: ext.c:100 ext.c:111 -#, fuzzy, c-format +#, c-format msgid "make_builtin: cannot use gawk built-in `%s' as function name" msgstr "make_builtin: `%s' gawk 내장 ëª…ì¹­ì„ í•¨ìˆ˜ 명칭으로 사용할 수 없습니다" #: ext.c:109 -#, fuzzy, c-format +#, c-format msgid "make_builtin: cannot use gawk built-in `%s' as namespace name" msgstr "" "make_builtin: `%s' gawk 내장 ëª…ì¹­ì„ ì´ë¦„ ì˜ì—­ 명칭으로 사용할 수 없습니다" #: ext.c:126 -#, fuzzy, c-format +#, c-format msgid "make_builtin: cannot redefine function `%s'" msgstr "make_builtin: `%s' 함수를 재정ì˜í•  수 없습니다" @@ -2042,88 +2048,81 @@ msgstr "`%s' 함수: ì¸ìž #%d: ë°°ì—´ì„ ìŠ¤ì¹¼ë¼ ê°’ìœ¼ë¡œ 사용 시ë„" #: ext.c:232 -#, fuzzy msgid "dynamic loading of libraries is not supported" -msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ ë™ìž‘ 불러오기를 ì§€ì›í•˜ì§€ 않습니다" +msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ ë™ì  불러오기를 ì§€ì›í•˜ì§€ 않습니다" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: `%s' ì‹¬ë³¼ë§ ë§í¬ë¥¼ ì½ì„ 수 ì—†ìŒ" -#: extension/filefuncs.c:475 -#, fuzzy +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" -msgstr "do_writea: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다\n" +msgstr "stat: 첫번째 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다" -#: extension/filefuncs.c:480 -#, fuzzy +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" -msgstr "split: ë‘번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +msgstr "split: ë‘번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: ìž˜ëª»ëœ ë§¤ê°œë³€ìˆ˜" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: %s 변수를 만들 수 없습니다" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "ì´ ì‹œìŠ¤í…œì—서 fts를 ì§€ì›í•˜ì§€ 않습니다" -#: extension/filefuncs.c:629 -#, fuzzy +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" -msgstr "fill_stat_element: ë°°ì—´ì„ ë§Œë“¤ 수 없습니다" +msgstr "fill_stat_element: 메모리가 부족하여 ë°°ì—´ì„ ë§Œë“¤ 수 없습니다" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: ì›ì†Œë¥¼ 설정할 수 없습니다" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: ì›ì†Œë¥¼ 설정할 수 없습니다" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: ì›ì†Œë¥¼ 설정할 수 없습니다" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: ë°°ì—´ì„ ì„¤ì •í•  수 없습니다" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: ì›ì†Œë¥¼ 설정할 수 없습니다" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: ì¸ìžê°€ 3ê°œ 필요하나, ìž˜ëª»ëœ ì¸ìž 갯수로 호출했습니다" -#: extension/filefuncs.c:848 -#, fuzzy +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" -msgstr "asort: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +msgstr "fts: 첫번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: extension/filefuncs.c:854 -#, fuzzy +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" -msgstr "split: ë‘번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +msgstr "fts: ë‘번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: extension/filefuncs.c:860 -#, fuzzy +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" -msgstr "match: 세번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +msgstr "fts: 세번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: ë°°ì—´ì„ í‰í™œí™”í•  수 없습니다\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ì–삽한 FTS_NOSTAT 플래그를 무시합니다. ë©”ì—ì—ì—ì—롱." @@ -2255,16 +2254,14 @@ msgstr "inplace::end: rename(`%s', `%s') ë™ìž‘ 실패(%s)" #: extension/ordchr.c:72 -#, fuzzy msgid "ord: first argument is not a string" -msgstr "do_reada: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgstr "ord: 첫번째 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다" #: extension/ordchr.c:99 -#, fuzzy msgid "chr: first argument is not a number" -msgstr "asort: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +msgstr "chr: 첫번째 ì¸ìž ê°’ì€ ìˆ«ìžê°€ 아닙니다" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir ë™ìž‘ 실패: %s" @@ -2278,24 +2275,20 @@ msgstr "revoutput: REVOUT 변수를 초기화할 수 없습니다" #: extension/rwarray.c:119 -#, fuzzy msgid "do_writea: first argument is not a string" -msgstr "do_writea: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다\n" +msgstr "do_writea: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다" #: extension/rwarray.c:125 -#, fuzzy msgid "do_writea: second argument is not an array" -msgstr "do_writea: 1번 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgstr "do_writea: ë‘번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" #: extension/rwarray.c:172 extension/rwarray0.c:167 -#, fuzzy msgid "write_array: could not flatten array" -msgstr "write_array: ë°°ì—´ í‰í™œí™” 불가\n" +msgstr "write_array: ë°°ì—´ í‰í™œí™” 불가" #: extension/rwarray.c:188 extension/rwarray0.c:181 -#, fuzzy msgid "write_array: could not release flattened array" -msgstr "write_array: í‰í™œí™” ë°°ì—´ì„ ë¦´ë¦¬ìŠ¤í•  수 ì—†ìŒ\n" +msgstr "write_array: í‰í™œí™” ë°°ì—´ì„ ë¦´ë¦¬ìŠ¤í•  수 ì—†ìŒ" #: extension/rwarray.c:255 #, c-format @@ -2303,24 +2296,20 @@ msgstr "ë°°ì—´ ê°’ì— ì•Œ 수 없는 %d í˜•ì‹ ê°’ì´ ìžˆìŠµë‹ˆë‹¤" #: extension/rwarray.c:292 -#, fuzzy msgid "do_reada: first argument is not a string" -msgstr "do_reada: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgstr "do_reada: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다" #: extension/rwarray.c:298 -#, fuzzy msgid "do_reada: second argument is not an array" -msgstr "do_reada: 1번 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgstr "do_reada: 1번 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" #: extension/rwarray.c:342 extension/rwarray0.c:317 -#, fuzzy msgid "do_reada: clear_array failed" -msgstr "do_reada: clear_array 처리 실패\n" +msgstr "do_reada: clear_array 처리 실패" #: extension/rwarray.c:379 extension/rwarray0.c:353 -#, fuzzy msgid "read_array: set_array_element failed" -msgstr "read_array: set_array_element 처리 실패\n" +msgstr "read_array: set_array_element 처리 실패" #: extension/rwarray.c:489 #, c-format @@ -2328,24 +2317,20 @@ msgstr "ë³µì›í•œ 알 수 없는 %d í˜•ì‹ ì½”ë“œ ê°’ì„ ë¬¸ìžì—´ë¡œ 취급합니다" #: extension/rwarray0.c:114 -#, fuzzy msgid "do_writea: argument 0 is not a string" -msgstr "do_writea: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다\n" +msgstr "do_writea: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다" #: extension/rwarray0.c:120 -#, fuzzy msgid "do_writea: argument 1 is not an array" -msgstr "do_writea: 1번 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgstr "do_writea: 1번 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" #: extension/rwarray0.c:267 -#, fuzzy msgid "do_reada: argument 0 is not a string" -msgstr "do_reada: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgstr "do_reada: 0번 ì¸ìž ê°’ì€ ë¬¸ìžì—´ì´ 아닙니다" #: extension/rwarray0.c:273 -#, fuzzy msgid "do_reada: argument 1 is not an array" -msgstr "do_reada: 1번 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤\n" +msgstr "do_reada: 1번 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" #: extension/time.c:141 msgid "gettimeofday: not supported on this platform" @@ -2363,181 +2348,186 @@ msgid "sleep: not supported on this platform" msgstr "sleep: ì´ í”Œëž«í¼ì—서 ì§€ì›í•˜ì§€ 않습니다" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "ìž…ë ¥ 레코드가 너무 í½ë‹ˆë‹¤" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF ê°’ì„ ìŒìˆ˜ 값으로 설정했습니다" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "ëŒ€ë¶€ë¶„ì˜ awk ë²„ì „ì— NF ê°’ ê°ì†Œ 코드를 ì´ì‹í•  수 없습니다" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "END 규칙ì—ì„œì˜ í•„ë“œ ì ‘ê·¼ 코드는 ì´ì‹ 불가능합니다" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: 네번째 ì¸ìž ëŒ€ìž…ì€ gawk 확장 기능입니다" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: 네번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: %sì„(를) 네번째 ì¸ìž 값으로 사용할 수 없습니다" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: ë‘번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: ë‘번째 ì¸ìžì™€ 네번째 ì¸ìž 값으로 ë™ì¼í•œ ë°°ì—´ì„ ì‚¬ìš©í•  수 없습니다" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: 네번째 ì¸ìžì— 대한 ë‘번째 ì¸ìž 값으로 하위 ë°°ì—´ì„ ì‚¬ìš©í•  수 없습니다" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: ë‘번째 ì¸ìžì— 대한 네번째 ì¸ìž 값으로 하위 ë°°ì—´ì„ ì‚¬ìš©í•  수 없습니다" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "split: 세번째 null 문ìžì—´ ì¸ìž ê°’ì€ ë¹„ 표준 확장 기능입니다" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: 네번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: ë‘번째 ì¸ìž ê°’ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: 세번째 ì¸ìž ê°’ì€ null ê°’ì´ ì•„ë‹ˆì–´ì•¼ 합니다" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: ë‘번째 ì¸ìžì™€ 네번째 ì¸ìž 값으로 ë™ì¼í•œ ë°°ì—´ì„ ì‚¬ìš©í•  수 없습니다" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: 네번째 ì¸ìžì— 대한 ë‘번째 ì¸ìž 값으로 하위 ë°°ì—´ì„ ì‚¬ìš©í•  수 없습니" "다" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: ë‘번째 ì¸ìžì— 대한 네번째 ì¸ìž 값으로 하위 ë°°ì—´ì„ ì‚¬ìš©í•  수 없습니" "다" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS'는 gawk 확장 기능입니다" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "`*'는 FIELDWIDTHSì˜ ë§ˆì§€ë§‰ 지시ìžì—¬ì•¼í•©ë‹ˆë‹¤" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "%d번째 필드 `%s' ë¶€ê·¼ì— ìž˜ëª»ëœ FIELDWIDTHS ê°’" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "`FS'ì— ëŒ€í•œ null 문ìžì—´ ëŒ€ìž…ì€ gawk 확장 기능입니다" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "ì˜¤ëž˜ëœ awk 버전ì—서는 `FS'ì˜ ì •ê·œ 표현ì‹ê°’ ì‚¬ìš©ì„ ì§€ì›í•˜ì§€ 않습니다" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "`FPAT'ì€ gawk 확장 기능입니다" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: received null retval" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: MPFR 모드가 아닙니다" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: MPFRì„ ì§€ì›í•˜ì§€ 않ìŒ" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: ìž˜ëª»ëœ `%d' ìˆ«ìž í˜•ì‹" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func: NULL name_space 매개변수를 받았습니다" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -"node_to_awk_value: ìž˜ëª»ëœ `%s' ìˆ«ìž í”Œëž˜ê·¸ ì¡°í•© 발견. 오류 보고서를 제출해주" -"십시오." +"node_to_awk_value: ìž˜ëª»ëœ `%s' ìˆ«ìž í”Œëž˜ê·¸ ì¡°í•© 발견. 오류 보고서를 제출하십" +"시오" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: null 노드를 받았습니다" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: null ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -"node_to_awk_valueì—서 ìž˜ëª»ëœ `%s' 플래그 ì¡°í•© 발견. 오류 보고서를 제출해주십" -"시오." +"node_to_awk_valueì—서 ìž˜ëª»ëœ `%s' 플래그 ì¡°í•© 발견. 오류 보고서를 제출하십시" +"오" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: null ë°°ì—´ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: null ì¸ë±ìФ 지시ìžë¥¼ 받았습니다" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed: %d ì¸ë±ìŠ¤ë¥¼ %s(으)로 변환할 수 ì—†ìŒ" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: %d ê°’ì„ %s(으)로 변환할 수 ì—†ìŒ" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: MPFRì„ ì§€ì›í•˜ì§€ 않ìŒ" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "BEGINFILE ê·œì¹™ì˜ ëì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "`%2$s'ì˜ ì¸ì‹í•  수 없는 `%1$s' íŒŒì¼ í˜•ì‹ì„ ì—´ 수 ì—†ìŒ" @@ -2547,59 +2537,109 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "`%s' 명령행 ì¸ìž ê°’ì€ ë””ë ‰í„°ë¦¬ìž…ë‹ˆë‹¤. 건너뜀" -#: io.c:429 io.c:546 -#, fuzzy, c-format +#: io.c:429 io.c:543 +#, c-format msgid "cannot open file `%s' for reading: %s" -msgstr "ì½ì„ `%s' 파ì¼ì„ ì—´ 수 ì—†ìŒ(%s)" +msgstr "ì½ì„ `%s' 파ì¼ì„ ì—´ 수 없습니다: %s" -#: io.c:675 -#, fuzzy, c-format +#: io.c:672 +#, c-format msgid "close of fd %d (`%s') failed: %s" -msgstr "%d(`%s') íŒŒì¼ ì„œìˆ ìž ë‹«ê¸° 실패(%s)" +msgstr "%d(`%s') íŒŒì¼ ì„œìˆ ìž ë‹«ê¸° 실패: %s" + +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "`%.*s'ì„(를) 입출력 파ì¼ë¡œ 사용합니다" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "`%.*s'ì„(를) ìž…ë ¥ íŒŒì¼ ë° íŒŒì´í”„로 사용합니다" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "`%.*s'ì„(를) ìž…ë ¥ 파ì¼ê³¼ ì´ì¤‘ 파ì´í”„로 사용합니다" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "`%.*s'ì„(를) ìž…ë ¥ 파ì¼ê³¼ 출력 파ì´í”„로 사용합니다" -#: io.c:753 +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "" +"`%.*s' 파ì¼ì— 대해 `>'와 `>>' 리다ì´ë ‰ì…˜ ì—°ì‚°ìžë¥¼ ì¡°í•©í•  필요가 없습니다" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "`%.*s'ì„(를) ìž…ë ¥ 파ì´í”„와 출력 파ì¼ë¡œ 사용합니다" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "`%.*s'ì„(를) 출력 íŒŒì¼ ë° íŒŒì´í”„로 사용합니다" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "`%.*s'ì„(를) 출력 íŒŒì¼ ë° ì´ì¤‘ 파ì´í”„로 사용합니다" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "`%.*s'ì„(를) 입출력 파ì´í”„로 사용합니다" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "`%.*s'ì„(를) ìž…ë ¥ 파ì´í”„와 ì´ì¤‘ 파ì´í”„로 사용합니다" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "`%.*s'ì„(를) 출력 파ì´í”„와 ì´ì¤‘ 파ì´í”„로 사용합니다" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "샌드박스 모드ì—서는 리다ì´ë ‰ì…˜ì„ 허용하지 않습니다" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "`%s' 리다ì´ë ‰ì…˜ 표현ì‹ì€ 숫ìžìž…니다" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "`%s' 리다ì´ë ‰ì…˜ì˜ 표현ì‹ì— ë„ ë¬¸ìžì—´ ê°’ì´ ìžˆìŠµë‹ˆë‹¤" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" msgstr "" "`%.*s' íŒŒì¼ ì´ë¦„(`%s' 리다ì´ë ‰ì…˜)ì€ ë…¼ë¦¬ 표현ì‹ì˜ ê²°ê³¼ ê°’ì¸ ê²ƒ 같습니다" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "" -"`%.*s' 파ì¼ì— 대해 `>'와 `>>' 리다ì´ë ‰ì…˜ ì—°ì‚°ìžë¥¼ ì¡°í•©í•  필요가 없습니다" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_fileì—서 íŒŒì¼ ì„œìˆ ìž %2$d ë²ˆì— `%1$s' 파ì´í”„를 만들 수 없습니다" -#: io.c:911 -#, fuzzy, c-format +#: io.c:968 +#, c-format msgid "cannot open pipe `%s' for output: %s" -msgstr "출력할 `%s' 파ì´í”„를 ì—´ 수 ì—†ìŒ(%s)" +msgstr "출력할 `%s' 파ì´í”„를 ì—´ 수 없습니다: %s" -#: io.c:926 -#, fuzzy, c-format +#: io.c:983 +#, c-format msgid "cannot open pipe `%s' for input: %s" -msgstr "입력할 `%s' 파ì´í”„를 ì—´ 수 ì—†ìŒ(%s)" +msgstr "입력할 `%s' 파ì´í”„를 ì—´ 수 없습니다: %s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2607,257 +2647,262 @@ "íŒŒì¼ ì„œìˆ ìž %2$dë²ˆì˜ `%1$s'ì— ëŒ€í•´ ì´ í”Œëž«í¼ì—서 get_file socket ìƒì„±ì„ ì§€ì›" "하지 않ìŒ" -#: io.c:961 -#, fuzzy, c-format +#: io.c:1018 +#, c-format msgid "cannot open two way pipe `%s' for input/output: %s" -msgstr "ìž…ì¶œë ¥ì„ ìˆ˜í–‰í•  `%s' ì–‘ë°©í–¥ 파ì´í”„를 ì—´ 수 ì—†ìŒ(%s)" +msgstr "ìž…ì¶œë ¥ì„ ìˆ˜í–‰í•  `%s' ì–‘ë°©í–¥ 파ì´í”„를 ì—´ 수 없습니다: %s" -#: io.c:1048 -#, fuzzy, c-format +#: io.c:1105 +#, c-format msgid "cannot redirect from `%s': %s" -msgstr "`%s'ì—서 리다ì´ë ‰ì…˜ 수행 불가(%s)" +msgstr "`%s'ì—서 리다ì´ë ‰ì…˜ 수행 불가: %s" -#: io.c:1051 -#, fuzzy, c-format +#: io.c:1108 +#, c-format msgid "cannot redirect to `%s': %s" -msgstr "`%s'(으)로 리다ì´ë ‰ì…˜ 수행 불가(%s)" +msgstr "`%s'(으)로 리다ì´ë ‰ì…˜ 수행 불가: %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "íŒŒì¼ ì—´ê¸° ë™ìž‘ì´ ì‹œìŠ¤í…œ í•œê³„ì— ë„달: 다중 íŒŒì¼ ì„œìˆ ìžë¡œ 시작합니다" -#: io.c:1169 -#, fuzzy, c-format -msgid "close of `%s' failed: %s." -msgstr "`%s' 닫기 실패(%s)." +#: io.c:1226 +#, c-format +msgid "close of `%s' failed: %s" +msgstr "`%s' 닫기 실패: %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "ì—´ì–´ë‘” 파ì´í”„ ë˜ëŠ” ìž…ë ¥ 파ì¼ì´ 너무 많습니다" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: ë‘번째 ì¸ìž ê°’ì€ `to' ë˜ëŠ” `from' ì´ì–´ì•¼ 합니다" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s'ì€(는) ì—´ì–´ë‘” 파ì¼, 파ì´í”„ ë˜ëŠ” 병행프로세스가 아닙니다" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "ì—° ì ì´ 없는 리다ì´ë ‰ì…˜ì„ 닫습니다" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: `%s' 리다ì´ë ‰ì…˜ì„ `|&' ì—°ì‚°ìžë¡œ ì—´ì§€ 않아 ë‘번째 ì¸ìž ê°’ì€ ë¬´ì‹œí•©ë‹ˆë‹¤" -#: io.c:1342 -#, fuzzy, c-format +#: io.c:1399 +#, c-format msgid "failure status (%d) on pipe close of `%s': %s" -msgstr "`%2$s'ì˜ íŒŒì´í”„ 닫기 과정ì—서 실패 ìƒíƒœ 반환(%1$d)(%3$s)" +msgstr "`%2$s'ì˜ íŒŒì´í”„ 닫기 과정ì—서 실패 ìƒíƒœ 반환(%1$d): %3$s" + +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "`%2$s'ì˜ ì´ì¤‘ 파ì´í”„ 닫기 중 실패 ìƒíƒœ 반환(%1$d): %3$s" -#: io.c:1345 -#, fuzzy, c-format +#: io.c:1405 +#, c-format msgid "failure status (%d) on file close of `%s': %s" -msgstr "`%2$s'ì˜ íŒŒì¼ ë‹«ê¸° 과정ì—서 실패 ìƒíƒœ 반환(%1$d)(%3$s)" +msgstr "`%2$s'ì˜ íŒŒì¼ ë‹«ê¸° 과정ì—서 실패 ìƒíƒœ 반환(%1$d): %3$s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "`%s' ì†Œì¼“ì˜ ë‹«ê¸° ë™ìž‘ì„ ëª…ì‹œí•˜ì§€ 않았습니다" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "`%s' 병행 í”„ë¡œì„¸ìŠ¤ì˜ ë‹«ê¸° ë™ìž‘ì„ ëª…ì‹œí•˜ì§€ 않았습니다" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "`%s' 파ì´í”„ì˜ ë‹«ê¸° ë™ìž‘ì„ ëª…ì‹œí•˜ì§€ 않았습니다" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "`%s' 파ì¼ì˜ 닫기 ë™ìž‘ì„ ëª…ì‹œí•˜ì§€ 않았습니다" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: 표준 ì¶œë ¥ì„ í”ŒëŸ¬ì‹±í•  수 ì—†ìŒ: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: 표준 오류를 플러싱할 수 ì—†ìŒ: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 -#, fuzzy, c-format +#: io.c:1477 io.c:1568 main.c:666 main.c:713 +#, c-format msgid "error writing standard output: %s" -msgstr "표준 ì¶œë ¥ìœ¼ë¡œì˜ ê¸°ë¡ ì˜¤ë¥˜(%s)" +msgstr "표준 ì¶œë ¥ìœ¼ë¡œì˜ ê¸°ë¡ ì˜¤ë¥˜: %s" -#: io.c:1418 io.c:1521 main.c:664 -#, fuzzy, c-format +#: io.c:1478 io.c:1581 main.c:668 +#, c-format msgid "error writing standard error: %s" -msgstr "표준 ì˜¤ë¥˜ë¡œì˜ ê¸°ë¡ ì˜¤ë¥˜(%s)" +msgstr "표준 ì˜¤ë¥˜ë¡œì˜ ê¸°ë¡ ì˜¤ë¥˜: %s" -#: io.c:1457 -#, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." -msgstr "`%s' 파ì´í”„ 플러싱 실패(%s)." - -#: io.c:1460 -#, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." -msgstr "`%s'(으)ë¡œì˜ ë³‘í–‰í”„ë¡œì„¸ìŠ¤ 파ì´í”„ 플러싱 실패(%s)." - -#: io.c:1463 -#, fuzzy, c-format -msgid "file flush of `%s' failed: %s." -msgstr "`%s'ì˜ íŒŒì¼ í”ŒëŸ¬ì‹± 실패(%s)" +#: io.c:1517 +#, c-format +msgid "pipe flush of `%s' failed: %s" +msgstr "`%s' 파ì´í”„ 플러싱 실패: %s" -#: io.c:1610 +#: io.c:1520 +#, c-format +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "`%s'(으)ë¡œì˜ ë³‘í–‰í”„ë¡œì„¸ìŠ¤ 파ì´í”„ 플러싱 실패: %s" + +#: io.c:1523 +#, c-format +msgid "file flush of `%s' failed: %s" +msgstr "`%s' íŒŒì¼ í”ŒëŸ¬ì‹± 실패: %s" + +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "`/inet'ì˜ ì§€ì—­ í¬íЏ %sì´(ê°€) 올바르지 않습니다: %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "`/inet'ì˜ ì§€ì—­ í¬íЏ %sì´(ê°€) 올바르지 않습니다" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "월격 호스트 ë° í¬íЏ ì •ë³´(%s, %s)ê°€ 올바르지 않습니다: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "ì›ê²© 호스트 ë° í¬íЏ ì •ë³´(%s, %s)ê°€ 올바르지 않습니다" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP í†µì‹ ì€ ì§€ì›í•˜ì§€ 않습니다" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "`%2$s' 모드로 `%1$s'ì„(를) ì—´ 수 없습니다" -#: io.c:2017 io.c:2069 -#, fuzzy, c-format +#: io.c:2077 io.c:2129 +#, c-format msgid "close of master pty failed: %s" -msgstr "주 pty 닫기 실패(%s)" +msgstr "주 pty 닫기 실패: %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 -#, fuzzy, c-format +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 +#, c-format msgid "close of stdout in child failed: %s" -msgstr "하위 프로세스ì—서 표준 출력 닫기 실패(%s)" +msgstr "하위 프로세스ì—서 표준 출력 닫기 실패: %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "하위 프로세스ì—서 표준 ì¶œë ¥ìœ¼ë¡œì˜ ë¶€ pty ì´ë™ 실패(dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 -#, fuzzy, c-format +#: io.c:2084 io.c:2136 io.c:2483 +#, c-format msgid "close of stdin in child failed: %s" -msgstr "하위 프로세스ì—서 표준 ìž…ë ¥ 닫기 실패(%s)" +msgstr "하위 프로세스ì—서 표준 ìž…ë ¥ 닫기 실패: %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "하위 프로세스ì—서 표준 ìž…ë ¥ìœ¼ë¡œì˜ ë¶€ pty ì´ë™ 실패(dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 -#, fuzzy, c-format +#: io.c:2089 io.c:2141 io.c:2163 +#, c-format msgid "close of slave pty failed: %s" -msgstr "ë¶€ pty 닫기 실패(%s)" +msgstr "ë¶€ pty 닫기 실패: %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "하위 프로세스를 만들거나 pty를 개방할 수 없습니다" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "하위 프로세스ì—서 표준 ì¶œë ¥ìœ¼ë¡œì˜ íŒŒì´í”„ ì´ë™ 실패(dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "하위 프로세스ì—서 표준 ìž…ë ¥ìœ¼ë¡œì˜ íŒŒì´í”„ ì´ë™ 실패(dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "ìƒìœ„ í”„ë¡œì„¸ìŠ¤ì˜ í‘œì¤€ 출력 ë³µì› ì‹¤íŒ¨" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "ìƒìœ„ í”„ë¡œì„¸ìŠ¤ì˜ í‘œì¤€ ìž…ë ¥ ë³µì› ì‹¤íŒ¨" -#: io.c:2429 io.c:2667 io.c:2682 -#, fuzzy, c-format +#: io.c:2489 io.c:2727 io.c:2742 +#, c-format msgid "close of pipe failed: %s" -msgstr "파ì´í”„ 닫기 실패(%s)" +msgstr "파ì´í”„ 닫기 실패: %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "`|&' 파ì´í”„는 ì§€ì›í•˜ì§€ 않습니다" -#: io.c:2618 -#, fuzzy, c-format +#: io.c:2678 +#, c-format msgid "cannot open pipe `%s': %s" -msgstr "`%s' 파ì´í”„를 ì—´ 수 ì—†ìŒ(%s)" +msgstr "`%s' 파ì´í”„를 ì—´ 수 없습니다: %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "`%s'ì˜ í•˜ìœ„ 프로세스를 만들 수 ì—†ìŒ(fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "getline: ì´ë¯¸ 닫힌 ì–‘ë°©í–¥ 파ì´í”„ë¼ì¸ì˜ ì½ê¸° ë ì§€ì ì—서 ì½ê¸° 시ë„" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: NULL í¬ì¸í„°ë¥¼ 받았습니다" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "`%s' ìž…ë ¥ 파서가 앞서 설치한 `%s' ìž…ë ¥ 파서와 ë™ì‹œì— ë™ìž‘합니다" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "`%s' ìž…ë ¥ 파서ì—서 `%s' 열기 실패" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: NULL í¬ì¸í„°ë¥¼ 받았습니다" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "`%s' 출력 래í¼ëŠ” ì´ë¯¸ 설치한 `%s' 출력 래í¼ì™€ ë™ì‹œì— ë™ìž‘합니다" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "`%s' 출력 래í¼ì—서 `%s' 열기 실패" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: NULL í¬ì¸í„°ë¥¼ 받았습니다" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2865,217 +2910,219 @@ msgstr "" "`%s' ì–‘ë°©í–¥ 처리ìžëŠ” ì´ë¯¸ 설치한 `%s' ì–‘ë°©í–¥ 처리ìžì™€ ë™ì‹œì— ë™ìž‘합니다" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "`%s' ì–‘ë°©í–¥ 처리ìžì—서 `%s' 열기 실패" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "`%s' ë°ì´í„° 파ì¼ì´ 비어있습니다" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "ë” ë§Žì€ ìž…ë ¥ 메모리를 할당할 수 없습니다" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "`RS'ì˜ ë‹¤ì¤‘ ë¬¸ìž ê°’ì€ gawk 확장 기능입니다" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6 í†µì‹ ì€ ì§€ì›í•˜ì§€ 않습니다" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "`POSIXLY_CORRECT' 환경 변수 설정: `--posix' 활성화" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' ì˜µì…˜ì€ `--traditional' ì˜µì…˜ì— ìš°ì„ í•©ë‹ˆë‹¤" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "`--posix'/`--traditional' ì˜µì…˜ì€ `--non-decimal-data' ì˜µì…˜ì— ìš°ì„ í•©ë‹ˆë‹¤" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' ì˜µì…˜ì€ `--characters-as-bytes' ì˜µì…˜ì— ìš°ì„ í•©ë‹ˆë‹¤" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "root ê³„ì •ìœ¼ë¡œì˜ %s ì‹¤í–‰ì€ ë³´ì•ˆ 문제를 야기할 수 있습니다" -#: main.c:421 -#, fuzzy, c-format +#: main.c:424 +#, c-format msgid "cannot set binary mode on stdin: %s" -msgstr "표준 ì¶œë ¥ì— ì´ì§„ 모드를 설정할 수 ì—†ìŒ(%s)" +msgstr "표준 ì¶œë ¥ì— ì´ì§„ 모드를 설정할 수 없습니다: %s" -#: main.c:424 -#, fuzzy, c-format +#: main.c:427 +#, c-format msgid "cannot set binary mode on stdout: %s" -msgstr "표준 ì¶œë ¥ì— ì´ì§„ 모드를 설정할 수 ì—†ìŒ(%s)" +msgstr "표준 ì¶œë ¥ì— ì´ì§„ 모드를 설정할 수 없습니다: %s" -#: main.c:426 -#, fuzzy, c-format +#: main.c:429 +#, c-format msgid "cannot set binary mode on stderr: %s" -msgstr "표준 ì˜¤ë¥˜ì— ì´ì§„ 모드를 설정할 수 ì—†ìŒ(%s)" +msgstr "표준 ì˜¤ë¥˜ì— ì´ì§„ 모드를 설정할 수 없습니다: %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "ì–´ë–¤ 프로그램 êµ¬ë¬¸ë„ ì—†ìŠµë‹ˆë‹¤!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "사용법: %s [] -f <프로그램파ì¼> [--] <파ì¼> ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "사용법: %s [] [--] %c<프로그램구문>%c <파ì¼> ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX 옵션:\t\tGNU 버전 긴 옵션: (표준)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f <프로그램-파ì¼>\t\t--file=<프로그램-파ì¼>\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" -msgstr "\t-F <필드-구분ìž>\t\t\t--field-separator=<필드-구분ìž>\n" +msgstr "\t-F <필드-구분문ìž>\t\t\t--field-separator=<필드-구분문ìž>\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v <변수>=<ê°’>\t\t--assign=<변수>=<ê°’>\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "ì§§ì€ ì˜µì…˜:\t\tGNU 버전 긴 옵션: (확장 기능)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[<파ì¼>]\t\t--dump-variables[=<파ì¼>]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[<파ì¼>]\t\t--debug[=<파ì¼>]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e '<프로그램-구문>'\t--source='<프로그램-구문>'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E <파ì¼>\t\t\t--exec=<파ì¼>\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i <í¬í•¨íŒŒì¼>\t\t--include=<í¬í•¨íŒŒì¼>\n" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-I\t\t\t--trace\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l <ë¼ì´ë¸ŒëŸ¬ë¦¬>\t\t--load=<ë¼ì´ë¸ŒëŸ¬ë¦¬>\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 -#, fuzzy +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" +msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[<파ì¼>]\t\t--pretty-print[=<파ì¼>]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[<파ì¼>]\t\t--profile[=<파ì¼>]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z <로캘-ì´ë¦„>\t\t--locale=<로캘-ì´ë¦„>\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 -#, fuzzy +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3091,14 +3138,11 @@ "`Reporting Problems and Bugs' ì„¹ì…˜ì˜ `Bugs' 노드를 \n" "참고하십시오. ë™ì¼í•œ 정보는 ë‹¤ìŒ ì£¼ì†Œì—서 찾아보실 수 있습니다.\n" "https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.\n" -"comp.lang.awk \n" -"\n" -"ë˜ëŠ” \n" -"\n" -"스íƒì˜¤ë²„í”Œë¡œìš°ê°™ì€ ì‚¬ìš©ìž í¬ëŸ¼ì— 오류 정보를 게시하지 마십시오.\n" +"comp.lang.awk ë˜ëŠ” 스íƒì˜¤ë²„í”Œë¡œìš°ê°™ì€ ì›¹ í¬ëŸ¼ì—\n" +"오류 보고서를 게시하지 마십시오.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3108,18 +3152,18 @@ "기본ì ìœ¼ë¡œ 표준 ìž…ë ¥ì„ ì½ê³  표준 ì¶œë ¥ì— ê¸°ë¡í•©ë‹ˆë‹¤.\n" "\n" -#: main.c:647 -#, fuzzy, c-format +#: main.c:651 +#, c-format msgid "" "Examples:\n" "\t%s '{ sum += $1 }; END { print sum }' file\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" msgstr "" "예제:\n" -"\tgawk '{ sum += $1 }; END { print sum }' <파ì¼>\n" -"\tgawk -F: '{ print $1 }' /etc/passwd\n" +"\t%s '{ sum += $1 }; END { print sum }' <파ì¼>\n" +"\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3137,7 +3181,7 @@ "ìžìœ ë¡­ê²Œ 수정하고 재배í¬í•  수 있습니다.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3150,7 +3194,7 @@ "ìžì„¸í•œ ë‚´ìš©ì€ GNU ì¼ë°˜ 공중 사용 허가서를 참고하십시오.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3158,11 +3202,11 @@ "ì´ í”„ë¡œê·¸ëž¨ê³¼ 함께 GNU ì¼ë°˜ 공중 사용 허가서를 받으셔야합니다.\n" "사용 허가서가 ì—†ì„ ê²½ìš° http://www.gnu.org/licenses/ 주소를 참고하십시오.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ì˜µì…˜ì— POSIX awkì˜ íƒ­ì— ëŒ€í•œ 필드 구분ìžê°€ 없습니다" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3171,160 +3215,165 @@ "%s: `<변수>=<ê°’>' 형ì‹ì´ 아닌 `-v'ì˜ `%s' ì¸ìžê°’\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s'ì€(는) ì ì ˆí•œ 변수 ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s'ì€(는) 변수 ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤. `%s=%s' 파ì¼ì„ 살펴보는 중" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "`%s' gawk 내장 요소를 변수 ì´ë¦„으로 취급할 수 없습니다" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "`%s' 함수를 변수 ì´ë¦„으로 취급할 수 없습니다" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "ì†Œìˆ«ì  ì˜ˆì™¸" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "ì¹˜ëª…ì  ì˜¤ë¥˜: ë‚´ë¶€ 오류" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "ì¹˜ëª…ì  ì˜¤ë¥˜: ë‚´ë¶€ 오류: 세그먼테ì´ì…˜ 오류" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "ì¹˜ëª…ì  ì˜¤ë¥˜: ë‚´ë¶€ 오류: ìŠ¤íƒ ì˜¤ë²„í”Œë¡œìš°" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "íŒŒì¼ ì„œìˆ ìž %d번 미리 ì—´ì§€ 않ìŒ" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "íŒŒì¼ ì„œìˆ ìž %dë²ˆì— ëŒ€í•´ /dev/nullì„ ë¯¸ë¦¬ ì—´ 수 없습니다" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "`-e/--source'ì˜ ë¹ˆ ì¸ìž ê°’ ëŒ€ìž…ì€ ë¬´ì‹œí•©ë‹ˆë‹¤" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "`--profile' ì˜µì…˜ì€ `--pretty-print' ì˜µì…˜ì— ìš°ì„ í•©ë‹ˆë‹¤" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M 무시함: MPFR/GMP ê¸°ëŠ¥ì„ ë„£ì–´ 컴파ì¼í•˜ì§€ 않았습니다" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: `-W %s' ì˜µì…˜ì€ ì¸ì‹í•  수 없습니다. 무시함\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: ì˜µì…˜ì— ì¸ìž ê°’ì´ í•„ìš”í•©ë‹ˆë‹¤ -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "`%.*s' PREC ê°’ì€ ì˜¬ë°”ë¥´ì§€ 않습니다" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" -msgstr "`%.*s' RNDMODE ê°’ì€ ì˜¬ë°”ë¥´ì§€ 않습니다" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "`%.*s' ROUNDMODE ê°’ì€ ì˜¬ë°”ë¥´ì§€ 않습니다" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: 숫ìžê°€ 아닌 첫번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: 숫ìžê°€ 아닌 ë‘번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s: ìŒìˆ˜ì¸ %.*s ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: 숫ìžê°€ 아닌 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: 숫ìžê°€ 아닌 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "comp(%Rg): ì†Œìˆ«ì  ì•„ëž˜ ê°’ì€ ìžë¦…니다" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: 숫ìžê°€ 아닌 #%d번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: #d번째 ì¸ìž ê°’ì´ ìž˜ëª»ëœ %Rg ê°’ì„ ì·¨í•˜ì—¬ 0 ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: #%d번째 ì¸ìž %Rg ìŒìˆ˜ ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: #%d번째 %Rg ì¸ìž ê°’ì˜ ì†Œìˆ«ì  ì•„ëž˜ ê°’ì€ ìžë¦…니다" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: #%d번째 %Zd ì¸ìž ê°’ì€ í—ˆìš©í•˜ì§€ 않습니다" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: ì¸ìž 갯수가 둘 미만입니다" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: ì¸ìž 갯수가 둘 미만입니다" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: ì¸ìž 갯수가 둘 미만입니다" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: 숫ìžê°€ 아닌 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: 숫ìžê°€ 아닌 첫번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: 숫ìžê°€ 아닌 ë‘번째 ì¸ìž ê°’ì„ ë°›ì•˜ìŠµë‹ˆë‹¤" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "명령행:" @@ -3333,20 +3382,20 @@ msgid "could not make typed regex" msgstr "í˜•ì‹ ì§€ì • 정규표현ì‹ì„ 구성할 수 없습니다" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "awk ì´ì „ 버전ì—서는 `\\%c' ì´ìŠ¤ì¼€ì´í”„ 시퀀스를 ì§€ì›í•˜ì§€ 않습니다" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIXì—서 `\\x' ì´ìŠ¤ì¼€ì´í”„를 허용하지 않습니다" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "`\\x' ì´ìŠ¤ì¼€ì´í”„ ì‹œí€€ìŠ¤ì— 16진수가 없습니다" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3355,18 +3404,18 @@ "\\x%.*s 16진수 ì´ìŠ¤ì¼€ì´í”„(%d번째 문ìž)를 ì›í•˜ëŠ” ë°©ì‹ëŒ€ë¡œ í•´ì„하지 ì•Šì•˜ì„ ìˆ˜" "ë„ ìžˆìŠµë‹ˆë‹¤" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "`\\%c' ì´ìŠ¤ì¼€ì´í”„ 시퀀스는 ì¼ë°˜ `%c' 문ìžì²˜ëŸ¼ 취급합니다" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "ìž˜ëª»ëœ ë©€í‹°ë°”ì´íЏ ë°ì´í„°ë¥¼ 발견했습니다. ë°ì´í„°ì™€ ë¡œìº˜ì˜ ë¶ˆì¼ì¹˜ê°€ ìžˆì„ ìˆ˜ 있" -"습니다." +"습니다" #: posix/gawkmisc.c:177 #, c-format @@ -3384,7 +3433,7 @@ #: profile.c:112 msgid "sending profile to standard error" -msgstr "STDERR로 í”„ë¡œíŒŒì¼ ë³´ë‚´ëŠ” 중" +msgstr "표준 오류로 í”„ë¡œíŒŒì¼ ë³´ë‚´ëŠ” 중" #: profile.c:275 #, c-format @@ -3409,11 +3458,11 @@ msgid "internal error: %s with null vname" msgstr "ë‚´ë¶€ 오류: null 변수 ì´ë¦„ê³¼ %s" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "ë‚´ë¶€ 오류: null 함수 ì´ë¦„ 내장" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3422,7 +3471,7 @@ "%s# 불러온 확장 기능 (-l and/or @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3433,12 +3482,12 @@ "# í¬í•¨í•œ íŒŒì¼ (-i and/or @include)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk 프로파ì¼, created %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3447,7 +3496,7 @@ "\n" "\t# 알파벳 순 함수\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: 알 수 없는 %d 리다ì´ë ‰ì…˜ 형ì‹" @@ -3478,39 +3527,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "ì •ê·œ 표현ì‹ì˜ `%.*s' 구성 요소는 `[%.*s]' ì´ì–´ì•¼ í•  것 같습니다" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "ì§ì´ ë§žì§€ 않는 [ 괄호" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "ìž˜ëª»ëœ ë¬¸ìž í´ëž˜ìФ" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "ë¬¸ìž í´ëž˜ìФ 표기 ë°©ì‹ì€ [:space:]ê°€ 아닌 [[:space:]]입니다" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "ë나지 ì•Šì€ \\ ì´ìŠ¤ì¼€ì´í”„ 문ìž" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "ìž˜ëª»ëœ \\{\\} ë‚´ìš©" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "ì •ê·œ 표현ì‹ì´ 너무 ê¹ë‹ˆë‹¤" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "ì§ì´ ë§žì§€ 않는 ( 괄호" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "êµ¬ë¬¸ì„ ì§€ì •í•˜ì§€ 않았습니다" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "ì§ì´ ë§žì§€ 않는 ) 괄호" @@ -3644,23 +3693,29 @@ msgid "No previous regular expression" msgstr "ì´ì „ ì •ê·œ í‘œí˜„ì‹ ì—†ìŒ" -#: symbol.c:691 -#, fuzzy, c-format +#: symbol.c:698 +#, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "`%s' 함수: `%s' 함수를 매개변수 ì´ë¦„으로 사용할 수 없습니다" -#: symbol.c:821 -#, fuzzy +#: symbol.c:828 msgid "cannot pop main context" -msgstr "주 컨í…스트를 빠져나올 수 없습니다" +msgstr "주 컨í…스트ì—서 빠져나올 수 없습니다" + +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "awk 형ì‹ì—서 `L'ì€ ì˜ë¯¸ê°€ 없습니다. 무시함" -#, fuzzy -#~ msgid "fts: first parameter is not an array" -#~ msgstr "asort: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" - -#, fuzzy -#~ msgid "fts: third parameter is not an array" -#~ msgstr "match: 세번째 ì¸ìž ê°’ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fatal: `L'ì€ POSIX awk 형ì‹ì—서 허용하지 않습니다" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "awk 형ì‹ì—서 `h'는 ì˜ë¯¸ê°€ 없습니다. 무시함" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fatal: `h'는 POSIX awk 형ì‹ì—서 허용하지 않습니다" + +#~ msgid "No symbol `%s' in current context" +#~ msgstr "현재 컨í…ìŠ¤íŠ¸ì— `%s' ì‹¬ë³¼ì´ ì—†ìŠµë‹ˆë‹¤" #~ msgid "adump: first argument not an array" #~ msgstr "adump: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" @@ -3674,14 +3729,6 @@ #~ msgid "asorti: first argument not an array" #~ msgstr "asorti: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" -#, fuzzy -#~ msgid "asorti: first argument cannot be SYMTAB" -#~ msgstr "asorti: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" - -#, fuzzy -#~ msgid "asorti: first argument cannot be FUNCTAB" -#~ msgstr "asorti: 첫번째 ì¸ìžëŠ” ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤" - #~ msgid "asorti: cannot use a subarray of first arg for second arg" #~ msgstr "" #~ "asorti: ë‘번째 ì¸ìžì— 대한 첫번째 ì¸ìžë¥¼ 하위 배열로 취급할 수 없습니다" diff -urN gawk-5.1.0/po/LINGUAS gawk-5.1.1/po/LINGUAS --- gawk-5.1.0/po/LINGUAS 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/po/LINGUAS 2021-03-30 21:27:51.000000000 +0300 @@ -1,3 +1,4 @@ +bg ca da de @@ -13,6 +14,7 @@ pl pt pt_BR +sr sv vi zh_CN diff -urN gawk-5.1.0/po/Makefile.in.in gawk-5.1.1/po/Makefile.in.in --- gawk-5.1.0/po/Makefile.in.in 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/po/Makefile.in.in 2020-08-28 14:48:05.000000000 +0300 @@ -1,13 +1,14 @@ # Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# Copyright (C) 1995-2000 Ulrich Drepper +# Copyright (C) 2000-2020 Free Software Foundation, Inc. # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. This file is offered as-is, # without any warranty. # -# Origin: gettext-0.19.8 -GETTEXT_MACRO_VERSION = 0.19 +# Origin: gettext-0.20.2 +GETTEXT_MACRO_VERSION = 0.20 PACKAGE = @PACKAGE@ VERSION = @VERSION@ @@ -52,16 +53,13 @@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) -MSGFMT_ = @MSGFMT@ -MSGFMT_no = @MSGFMT@ -MSGFMT_yes = @MSGFMT_015@ -MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) -MSGMERGE = msgmerge +MSGMERGE = @MSGMERGE@ MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter @@ -92,27 +90,44 @@ # Makevars gets inserted here. (Don't remove this line!) -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update +all: all-@USE_NLS@ -.po.mo: - @echo "$(MSGFMT) -c -o $@ $<"; \ - $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ +.SUFFIXES: +.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update + +# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs. +# The GNU Coding Standards say in +# : +# "GNU distributions usually contain some files which are not source files +# ... . Since these files normally appear in the source directory, they +# should always appear in the source directory, not in the build directory. +# So Makefile rules to update them should put the updated files in the +# source directory." +# Therefore we put these files in the source directory, not the build directory. + +# During .po -> .gmo conversion, take into account the most recent changes to +# the .pot file. This eliminates the need to update the .po files when the +# .pot file has changed, which would be troublesome if the .po files are put +# under version control. +$(GMOFILES): $(srcdir)/$(DOMAIN).pot .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \ + cd $(srcdir) && \ + rm -f $${lang}.gmo && \ + $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \ + $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \ + mv t-$${lang}.gmo $${lang}.gmo && \ + rm -f $${lang}.1po .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ -all: all-@USE_NLS@ - -all-yes: stamp-po +all-yes: $(srcdir)/stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. @@ -126,24 +141,24 @@ # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. -# In this case, stamp-po is a nop (i.e. a phony target). +# In this case, $(srcdir)/stamp-po is a nop (i.e. a phony target). -# stamp-po is a timestamp denoting the last time at which the CATALOGS have -# been loosely updated. Its purpose is that when a developer or translator -# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, -# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent -# invocations of "make" will do nothing. This timestamp would not be necessary -# if updating the $(CATALOGS) would always touch them; however, the rule for -# $(POFILES) has been designed to not touch files that don't need to be -# changed. -stamp-po: $(srcdir)/$(DOMAIN).pot +# $(srcdir)/stamp-po is a timestamp denoting the last time at which the CATALOGS +# have been loosely updated. Its purpose is that when a developer or translator +# checks out the package from a version control system, and the $(DOMAIN).pot +# file is not under version control, "make" will update the $(DOMAIN).pot and +# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This +# timestamp would not be necessary if updating the $(CATALOGS) would always +# touch them; however, the rule for $(POFILES) has been designed to not touch +# files that don't need to be changed. +$(srcdir)/stamp-po: $(srcdir)/$(DOMAIN).pot @$(CHECK_MACRO_VERSION) test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ - echo "touch stamp-po" && \ - echo timestamp > stamp-poT && \ - mv stamp-poT stamp-po; \ + echo "touch $(srcdir)/stamp-po" && \ + echo timestamp > $(srcdir)/stamp-poT && \ + mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', @@ -159,11 +174,9 @@ package_gnu="$(PACKAGE_GNU)"; \ test -n "$$package_gnu" || { \ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ - LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ - -size -10000000c -exec grep 'GNU @PACKAGE@' \ - /dev/null '{}' ';' 2>/dev/null; \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \ else \ - LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + LC_ALL=C grep -i 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ fi; \ } | grep -v 'libtool:' >/dev/null; then \ package_gnu=yes; \ @@ -184,26 +197,29 @@ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --add-comments=TRANSLATORS: \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --add-comments=TRANSLATORS: \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_prefix}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot-header; then \ sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ - cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \ - rm -f $(DOMAIN).1po; \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \ + rm -f $(DOMAIN).1po \ + || exit 1; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ @@ -228,17 +244,19 @@ # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(POFILESDEPS) + @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ - test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ - && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \ *) \ - $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ @@ -373,28 +391,30 @@ info dvi ps pdf html tags TAGS ctags CTAGS ID: +install-dvi install-ps install-pdf install-html: + mostlyclean: rm -f remove-potcdate.sed - rm -f stamp-poT + rm -f $(srcdir)/stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo + rm -f Makefile Makefile.in POTFILES maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." - rm -f stamp-po $(GMOFILES) + rm -f $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. -dist2: stamp-po $(DISTFILES) +dist2: $(srcdir)/stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ @@ -439,13 +459,15 @@ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ - $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ diff -urN gawk-5.1.0/po/ms.po gawk-5.1.1/po/ms.po --- gawk-5.1.0/po/ms.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/ms.po 2021-10-27 07:58:42.000000000 +0300 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gawk 4.0.75\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2013-04-19 10:45+0800\n" "Last-Translator: Sharuzzaman Ahmat Raslan \n" "Language-Team: Malay \n" @@ -19,548 +19,563 @@ "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-SourceCharset: UTF-8\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "dari %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "cubaan untuk menggunakan nilai skalar sebagai tatasusunan" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "cubaan untuk menggunakan skalar `%s' sebagai tatasusunan" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "cubaan untuk menggunakan tatasusunan `%s' dalam konteks skalar" -#: array.c:575 +#: array.c:576 #, fuzzy, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "padam: indeks `%s' tiada dalam tatasusunan `%s'" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" msgstr "" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "" -#: array.c:844 +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "" -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "" -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +msgid "there were shadowed variables" msgstr "" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -578,8 +593,8 @@ msgid "standard error" msgstr "" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "" @@ -614,7 +629,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "" @@ -632,330 +647,321 @@ msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "" @@ -965,858 +971,861 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" msgstr "" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +msgid "down [N] - move N frames down the stack" msgstr "" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +msgid "end - end a list of commands or awk statements" msgstr "" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" msgstr "" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" msgstr "" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" msgstr "" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" msgstr "" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" msgstr "" -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +msgid "quit - exit debugger" msgstr "" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +msgid "run - start or restart executing program" msgstr "" -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +msgid "save filename - save commands from the session to file" msgstr "" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" msgstr "" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +msgid "source file - execute commands from file" msgstr "" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" msgstr "" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +msgid "trace on|off - print instruction before executing" msgstr "" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "" -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +msgid "up [N] - move N frames up the stack" msgstr "" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" msgstr "" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "" -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" #: debug.c:259 -msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "" #: debug.c:261 -msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "" #: debug.c:263 -msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" #: debug.c:358 -msgid "program not running." +msgid "program not running" msgstr "" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +msgid "no current source file" msgstr "" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" msgstr "" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" msgstr "" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" msgstr "" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, fuzzy, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "padam: indeks `%s' tiada dalam tatasusunan `%s'" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, fuzzy, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "cubaan untuk menggunakan tatasusunan `%s' dalam konteks skalar" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "cubaan untuk menggunakan skalar `%s' sebagai tatasusunan" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "" -#: debug.c:1543 +#: debug.c:1552 #, fuzzy, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "padam: indeks `%s' tiada dalam tatasusunan `%s'" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr "" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr "" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "" -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "" -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "" -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" -#: debug.c:5141 +#: debug.c:5152 #, fuzzy, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "padam: indeks `%s' tiada dalam tatasusunan `%s'" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" +msgid "no symbol `%s' in current context" msgstr "" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1824,71 +1833,71 @@ "\n" msgstr "" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "" @@ -1973,81 +1982,81 @@ msgid "dynamic loading of libraries is not supported" msgstr "" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" @@ -2183,7 +2192,7 @@ msgid "chr: first argument is not a number" msgstr "" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2276,169 +2285,174 @@ msgid "sleep: not supported on this platform" msgstr "" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "" @@ -2448,524 +2462,583 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" msgstr "" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -2977,14 +3050,14 @@ "\n" msgstr "" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -2992,7 +3065,7 @@ "\t%s -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3004,7 +3077,7 @@ "\n" msgstr "" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3013,177 +3086,182 @@ "\n" msgstr "" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "" @@ -3192,35 +3270,35 @@ msgid "could not make typed regex" msgstr "" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" #: posix/gawkmisc.c:177 @@ -3260,18 +3338,18 @@ msgid "internal error: %s with null vname" msgstr "" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3279,19 +3357,19 @@ "\n" msgstr "" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" @@ -3321,39 +3399,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "" @@ -3485,12 +3563,12 @@ msgid "No previous regular expression" msgstr "" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "" diff -urN gawk-5.1.0/po/nl.po gawk-5.1.1/po/nl.po --- gawk-5.1.0/po/nl.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/nl.po 2021-10-27 07:58:42.000000000 +0300 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gawk 5.0.64\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2020-03-20 12:56+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" @@ -21,494 +21,512 @@ "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "van %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "scalaire waarde wordt gebruikt als array" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "scalaire parameter '%s' wordt gebruikt als array" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "scalair '%s' wordt gebruikt als array" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "array '%s' wordt gebruikt in een scalaire context" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: index '%.*s' niet in array '%s'" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "scalair '%s[\"%.*s\"]' wordt gebruikt als array" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "%s: eerste argument is geen array" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "%s: tweede argument is geen array" -#: array.c:835 -#, c-format -msgid "%s: first argument cannot be SYMTAB" +#: array.c:829 field.c:1004 field.c:1096 +#, fuzzy, c-format +#| msgid "%s: cannot use a subarray of first argument for second argument" +msgid "%s: cannot use %s as second argument" +msgstr "" +"%s een subarray van het eerste argument kan niet als tweede argument " +"gebruikt worden" + +#: array.c:837 +#, fuzzy, c-format +#| msgid "%s: first argument cannot be SYMTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "%s: eerste argument kan niet SYMTAB zijn" -#: array.c:838 -#, c-format -msgid "%s: first argument cannot be FUNCTAB" +#: array.c:839 +#, fuzzy, c-format +#| msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "%s: eerste argument kan niet FUNCTAB zijn" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "%s een subarray van het eerste argument kan niet als tweede argument " "gebruikt worden" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "%s: een subarray van het tweede argument kan niet als eerste argument " "gebruikt worden" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' is ongeldig als functienaam" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "sorteervergelijkingsfunctie '%s' is niet gedefinieerd" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s-blokken horen een actiedeel te hebben" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "elke regel hoort een patroon of een actiedeel te hebben" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "oude 'awk' staat meerdere 'BEGIN'- en 'END'-regels niet toe" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "'%s' is een ingebouwde functie en is niet te herdefiniëren" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "regexp-constante '//' lijkt op C-commentaar, maar is het niet" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "regexp-constante '/%s/' lijkt op C-commentaar, maar is het niet" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "dubbele 'case'-waarde in 'switch'-opdracht: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "dubbele 'default' in 'switch'-opdracht" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' buiten een lus of 'switch'-opdracht is niet toegestaan" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "'continue' buiten een lus is niet toegestaan" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "'next' wordt gebruikt in %s-actie" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "'nextfile' wordt gebruikt in %s-actie" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "'return' wordt gebruikt buiten functiecontext" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "kale 'print' in BEGIN- of END-regel moet vermoedelijk 'print \"\"' zijn" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "'delete' is niet toegestaan met SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "'delete' is niet toegestaan met FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "'delete(array)' is een niet-overdraagbare 'tawk'-uitbreiding" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "meerfase-tweerichtings-pijplijnen werken niet" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "reguliere expressie rechts van toewijzing" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "reguliere expressie links van operator '~' of '!~'" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "oude 'awk' kent het sleutelwoord 'in' niet, behalve na 'for'" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "reguliere expressie rechts van vergelijking" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "niet-omgeleide 'getline' is ongeldig binnen een '%s'-regel" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "niet-omgeleide 'getline' is ongedefinieerd binnen een END-actie" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "oude 'awk' kent geen meerdimensionale arrays" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "aanroep van 'length' zonder haakjes is niet overdraagbaar" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "indirecte functieaanroepen zijn een gawk-uitbreiding" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "kan speciale variabele '%s' niet voor indirecte functieaanroep gebruiken" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "niet-functie '%s' wordt gebruikt in functie-aanroep" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "ongeldige index-expressie" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "waarschuwing: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fataal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "onverwacht regeleinde of einde van string" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "kan bronbestand '%s' niet openen om te lezen: %s" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "kan gedeelde bibliotheek '%s' niet openen om te lezen: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "reden onbekend" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "kan '%s' niet invoegen en als programmabestand gebruiken" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "bronbestand '%s' is reeds ingesloten" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "gedeelde bibliotheek '%s' is reeds geladen" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "'@include' is een gawk-uitbreiding" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "lege bestandsnaam na '@include'" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "'@load' is een gawk-uitbreiding" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "lege bestandsnaam na '@load'" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "lege programmatekst op opdrachtregel" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "kan bronbestand '%s' niet lezen: %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "bronbestand '%s' is leeg" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "fout: ongeldig teken '\\%03o' in brontekst" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "bronbestand eindigt niet met een regeleindeteken (LF)" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "onafgesloten reguliere expressie" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "onafgesloten reguliere expressie aan bestandseinde" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "backslash is niet het laatste teken op de regel" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "meerdimensionale arrays zijn een gawk-uitbreiding" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX staat operator '%s' niet toe" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "operator '%s' wordt niet ondersteund in oude 'awk'" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "onafgesloten string" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX staat geen fysieke nieuweregeltekens toe in strings" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "string-voortzetting via backslash is niet overdraagbaar" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "ongeldig teken '%c' in expressie" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' is een gawk-uitbreiding" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX staat '%s' niet toe" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "oude 'awk' kent '%s' niet" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "'goto' wordt als schadelijk beschouwd!" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d is een ongeldig aantal argumenten voor %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "%s: een stringwaarde als laatste vervangingsargument heeft geen effect" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: derde parameter is geen veranderbaar object" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: derde argument is een gawk-uitbreiding" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: tweede argument is een gawk-uitbreiding" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index: een reguliere-expressie-constante als tweede argument is niet " "toegestaan" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "functie '%s': parameter '%s' schaduwt een globale variabele" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kan '%s' niet openen om te schrijven: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "variabelenlijst gaat naar standaardfoutuitvoer" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "%s: sluiten is mislukt: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() twee keer aangeroepen!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "er waren geschaduwde variabelen." -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "functienaam '%s' is al eerder gedefinieerd" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "functie '%s': kan speciale variabele '%s' niet als functieparameter gebruiken" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "functie '%s': parameter '%s' mag geen naamsruimte bevatten" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "functie '%s' wordt aangeroepen maar is nergens gedefinieerd" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "functie '%s' is gedefinieerd maar wordt nergens direct aangeroepen" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "regexp-constante als parameter #%d levert booleanwaarde op" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -517,65 +535,69 @@ "functie '%s' wordt aangeroepen met een spatie tussen naam en '(',\n" "of wordt gebruikt als variabele of array" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "deling door nul" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "deling door nul in '%%'" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "kan geen waarde toewijzen aan het resultaat van een post-increment-expressie " "van een veld" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ongeldig doel van toewijzing (opcode %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "opdracht heeft geen effect" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "'@namespace' is een gawk-uitbreiding" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -593,8 +615,8 @@ msgid "standard error" msgstr "standaardfoutuitvoer" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: niet-numeriek argument ontvangen" @@ -635,7 +657,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: '%.*s' is geen open bestand, pijp, of co-proces" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "%s: eerste argument is geen string" @@ -653,181 +675,169 @@ msgid "`length(array)' is a gawk extension" msgstr "'length(array)' is een gawk-uitbreiding" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "%s: argument is geen string" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "%s: argument %g is negatief" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fataal: 'count$' hoort in alle opmaken gebruikt te worden, of in geen" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "veldbreedte wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "veldprecisie wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "veldbreedte en -precisie worden genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fataal: '$' is niet toegestaan in awk-opmaak" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "fataal: argumentindex bij '$' moet > 0 zijn" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "fataal: argumentindex %ld is groter dan het gegeven aantal argumenten" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fataal: '$' is niet toegestaan na een punt in de opmaak" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fataal: geen '$' opgegeven bij positionele veldbreedte of -precisie" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "'l' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "fataal: 'l' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "'L' is betekenisloos in awk-opmaak; genegeerd" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "'h' is betekenisloos in awk-opmaak; genegeerd" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak" - -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: waarde %g is te groot voor opmaak %%c" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: waarde %g is geen geldig breed teken" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: waarde %g ligt buiten toegestaan bereik voor opmaak '%%%c'" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: waarde %s ligt buiten toegestaan bereik voor opmaak '%%%c'" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "'%%%c'-opmaak is POSIX maar niet overdraagbaar naar andere awks" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "fataal: niet genoeg argumenten voor opmaakstring" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "niet genoeg ^ voor deze" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: opmaakaanduiding mist een stuurletter" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "te veel argumenten voor opmaakstring" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: geen argumenten" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: geen argumenten" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "printf: poging tot schrijven naar gesloten schrijfkant van tweewegpijp" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lengte %g is niet >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lengte %g is niet >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lengte %g is geen integer; wordt afgekapt" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: lengte %g is te groot voor stringindexering; wordt verkort tot %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g is ongeldig; 1 wordt gebruikt" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g is geen integer; wordt afgekapt" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: bronstring heeft lengte nul" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindex %g ligt voorbij het einde van de string" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -835,154 +845,160 @@ "substr: lengte %g bij startindex %g is groter dan de lengte van het eerste " "argument (%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: opmaakwaarde in PROCINFO[\"strftime\"] is numeriek" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "%s: tweede argument is geen getal" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: tweede argument is kleiner dan nul of te groot voor 'time_t'" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: tweede argument ligt buiten toegestaan bereik voor 'time_t'" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: opmaakstring is leeg" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: minstens één van waarden valt buiten het standaardbereik" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-functie is niet toegestaan in sandbox-modus" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "print: poging tot schrijven naar gesloten schrijfkant van tweewegpijp" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%d'" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "%s: eerste argument is geen getal" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: derde argument is geen array" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: kan derde argument niet verkrijgen" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: derde argument is '%.*s'; wordt beschouwd als 1" # FIXME: ambiguous -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kan alleen indirect aangeroepen worden met twee argumenten" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "indirecte aanroep van %s vereist minstens twee argumenten" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): negatieve waarden zijn niet toegestaan" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): te grote opschuifwaarden geven rare resultaten" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): negatieve waarden zijn niet toegestaan" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): te grote opschuifwaarden geven rare resultaten" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "%s: aangeroepen met minder dan twee argumenten" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "%s: argument %d is niet-numeriek" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%1$s: negatieve waarde %3$g van argument %2$d is niet toegestaan" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): negatieve waarde is niet toegestaan" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): cijfers na de komma worden afgekapt" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' is geen geldige taalregio-deelcategorie" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: derde argument is geen array" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 #, fuzzy msgid "intdiv: division by zero attempted" msgstr "intdiv: deling door nul" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof: tweede argument is geen array" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: ongeldig argumenttype '%s'" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: onbekend argumenttype '%s'" @@ -992,448 +1008,571 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Typ (g)awk statement(s). Eindig met het commando 'end'.\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "ongeldig framenummer: %d" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "info: ongeldige optie -- '%s'" -#: command.y:323 -#, c-format -msgid "source: `%s': already sourced." +#: command.y:324 +#, fuzzy, c-format +#| msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "source: '%s': is reeds ingelezen." -#: command.y:328 -#, c-format -msgid "save: `%s': command not permitted." +#: command.y:329 +#, fuzzy, c-format +#| msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "save: '%s': commando is niet toegestaan." -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "Kan commando 'commands' niet vóór breekpunt-/kijkpunt-commando's gebruiken" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "er is nog geen breekpunt/kijkpunt gezet" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "ongeldig nummer van breekpunt/kijkpunt" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Typ de commando's voor wanneer %s %d getroffen wordt, één per regel.\n" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "Eindig met het commando 'end'.\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "'end' is alleen geldig bij de commando's 'commands' en 'eval'" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "'silent' is alleen geldig bij het commando 'commands'" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "trace: ongeldige optie -- '%s'" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: ongeldig nummer van breekpunt/kijkpunt" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "argument is geen string" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "option: ongeldige parameter -- '%s'" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "functie '%s' bestaat niet" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "enable: ongeldige optie -- '%s'" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "ongeldig bereik: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "niet-numerieke waarde voor veldnummer" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "niet-numerieke waarde gevonden, numerieke wordt verwacht" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "niet-nul geheel getal" -#: command.y:819 +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - een trace weergeven van alle of N binnenste frames (of " "buitenste als N < 0)" -#: command.y:821 +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" "break [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - breekpunt zetten op gegeven " "positie" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" "clear [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - eerder gezet breekpunt " "verwijderen" -#: command.y:825 +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [NUMMER] - een lijst van commando's beginnen die uitgevoerd moeten " "worden wanneer een breekpunt/kijkpunt getroffen wordt" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" "condition NUMMER [EXPRESSIE] - de conditie van een breekpunt/kijkpunt zetten " "of wissen" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" msgstr "continue [AANTAL] - doorgaan met het programma in de debugger" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "delete [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten verwijderen" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "disable [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten uitschakelen" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" msgstr "" "display [VAR] - waarde van variabele weergeven elke keer dat het programma " "stopt" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" msgstr "down [AANTAL] - dit aantal frames naar beneden in de stack gaan" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" "dump [BESTANDSNAAM] - instructies dumpen op standaarduitvoer (of naar " "bestand)" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" "enable [once|del] [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten inschakelen" -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" msgstr "end - een lijst van commando's of awk-statements beëindigen" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "eval STATEMENT|[p1, p2, ...] - awk-statement(s) evalueren" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +#, fuzzy +#| msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" msgstr "exit - (hetzelfde als 'quit') de debugger verlaten" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" msgstr "finish - uitvoeren totdat het geselecteerde stack-frame terugkeert" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" msgstr "frame [NUMMER] - stack-frame met dit nummer selecteren en weergeven" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" msgstr "" "help [COMMANDO] - lijst van beschikbare commando's (of uitleg van commando) " "tonen" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" "ignore NUMMER AANTAL - het aantal keren dat dit breekpuntnummer genegeerd " "moet worden" -#: command.y:857 +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info THEMA - source|sources|variables|functions|break|frame|args|locals|" "display|watch" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" "list [-|+|[BESTANDSNAAM:]REGELNUMMER|FUNCTIE|BEREIK] - aangegeven regels " "tonen" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" "next [AANTAL] - programma uitvoeren tot de volgende bronregel bereikt is" -#: command.y:863 +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [AANTAL] - één instructie (of dit aantal) uitvoeren, waarbij een " "functie-aanroep als één telt" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "option [NAAM[=WAARDE]] - opties van debugger tonen of instellen" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" msgstr "print VAR [VAR] - waarde van variabele of array weergeven" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" msgstr "printf OPMAAK [, ARGUMENT...] - opgemaakte uitvoer" -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" msgstr "quit - de debugger verlaten" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" msgstr "return [WAARDE] - gekozen stack-frame terug laten keren naar aanroeper" -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" msgstr "run - programma starten of herstarten" -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" msgstr "save BESTANDSNAAM - commando's van de sessie opslaan in bestand" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" msgstr "set VAR = WAARDE - een waarde aan een scalaire variabele toekennen" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - de gewone meldingen bij het stoppen bij een breekpunt/kijkpunt " "onderdrukken" -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" msgstr "source BESTANDSNAAM - commando's uit dit bestand uitvoeren" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" "step [AANTAL] - programma uitvoeren tot een andere bronregel bereikt is" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" msgstr "stepi [AANTAL] - precies één (of dit aantal) instructies uitvoeren" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" "tbreak [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - een tijdelijk breekpunt zetten" -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" msgstr "trace on|off - instructie weergeven alvorens deze uit te voeren" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" "undisplay [AANTAL] - variabele(n) van automatische weergavelijst verwijderen" -#: command.y:897 +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[BESTANDSNAAM:]N|FUNCTIE] - programma uitvoeren totdat deze een " "andere regel bereikt of regel N binnen het huidige frame" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "unwatch [AANTAL] - variabele(n) van de kijklijst verwijderen" -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" msgstr "up [AANTAL] - dit aantal frames naar boven in de stack gaan" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" msgstr "watch VAR - een kijkpunt voor een variabele zetten" -#: command.y:905 +#: command.y:906 +#, fuzzy +#| msgid "" +#| "where [N] - (same as backtrace) print trace of all or N innermost " +#| "(outermost if N < 0) frames." msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where[N] - (zelfde als backtrace) een trace weergeven van alle of N " "binnenste frames (of buitenste als N < 0)" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "fout: " -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "kan commando niet lezen: %s\n" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "kan commando niet lezen: %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "ongeldig teken in commando" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "onbekend commando -- '%.*s'; probeer help" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "ongeldig teken" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "ongedefinieerd commando: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "zetten of tonen van maximum aantal regels in geschiedenisbestand" #: debug.c:259 -msgid "set or show the list command window size." +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "zetten of tonen van venstergrootte van list-commando" #: debug.c:261 -msgid "set or show gawk output file." +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "zetten of tonen van gawk-uitvoerbestand" #: debug.c:263 -msgid "set or show debugger prompt." +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "zetten of tonen van debugger-prompt" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "zetten of tonen van opslaan van commandogeschiedenis (waarde=on|off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "zetten of tonen van opslaan van opties (waarde=on|off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "zetten of tonen van instructie-tracing (waarde=on|off)" #: debug.c:358 -msgid "program not running." +#, fuzzy +#| msgid "program not running." +msgid "program not running" msgstr "programma draait niet." -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "bronbestand '%s' is leeg\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "geen huidig bronbestand" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "kan geen bronbestand met naam '%s' vinden: %s" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" "Waarschuwing: bronbestand '%s' is gewijzigd sinds programmacompilatie.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "regelnummer %d valt buiten bereik; '%s' heeft %d regels" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "onverwacht einde-van-bestand tijdens lezen van bestand '%s', regel %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "bronbestand '%s' is gewijzigd sinds start van programma-uitvoering" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Huidig bronbestand: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Aantal regels: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Bronbestand (regels): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1441,54 +1580,55 @@ "Nummer Toon Actief Locatie\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\taantal treffers = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tvolgende %ld treffer(s) negeren\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tstopconditie: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tcommando's:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Huidig frame: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Aangeroepen door frame: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Aanroeper van frame: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Geen in main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Geen argumenten.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Geen lokalen.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1496,7 +1636,7 @@ "Alle gedefinieerde variabelen:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1504,7 +1644,7 @@ "Alle gedefinieerde functies:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1512,7 +1652,7 @@ "Automatisch weer te geven variabelen:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1520,383 +1660,397 @@ "Kijkvariabelen:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "geen symbool '%s' in huidige context\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "'%s' is geen array\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = ongeïnitialiseerd veld\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "array '%s' is leeg\n" -#: debug.c:1132 debug.c:1184 -#, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +#: debug.c:1141 debug.c:1193 +#, fuzzy, c-format +#| msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[\"%.*s\"] niet in array '%s'\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "'%s[\"%.*s\"]' is geen array\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "'%s' is geen scalaire variabele" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "array '%s[\"%.*s\"]' wordt gebruikt in een scalaire context" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "scalair '%s[\"%.*s\"]' wordt gebruikt als array" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "'%s' is een functie" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "kijkpunt %d is zonder conditie\n" -#: debug.c:1514 -#, c-format -msgid "No display item numbered %ld" +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "Er is geen weergave-item met nummer %ld" -#: debug.c:1517 -#, c-format -msgid "No watch item numbered %ld" +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "Er is geen kijk-item met nummer %ld" -#: debug.c:1543 -#, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +#: debug.c:1552 +#, fuzzy, c-format +#| msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d: [\"%.*s\"] niet in array '%s'\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "scalaire waarde wordt gebruikt als array" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Kijkpunt %d is verwijderd omdat parameter buiten bereik is.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Weergave %d is verwijderd omdat parameter buiten bereik is.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " in bestand '%s', regel %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " op '%s':%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tin " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Er volgen meer stack-frames...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "ongeldig framenummer" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Opmerking: breekpunt %d (ingeschakeld, volgende %ld passages genegeerd), ook " "gezet op %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Opmerking: breekpunt %d (ingeschakeld), ook gezet op %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Opmerking: breekpunt %d (uitgeschakeld, volgende %ld passages genegeerd), " "ook gezet op %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Opmerking: breekpunt %d (uitgeschakeld), ook gezet op %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breekpunt %d is gezet in bestand '%s', op regel %d\n" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "kan geen breekpunt zetten in bestand '%s'\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "regelnummer %d in bestand '%s' valt buiten bereik" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "**interne fout**: kan regel niet vinden\n" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "kan geen breekpunt zetten op '%s':%d\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "kan geen breekpunt zetten in functie '%s'\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "breekpunt %d (gezet in bestand '%s', op regel %d) is onconditioneel\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "regelnummer %d in bestand '%s' valt buiten bereik" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Breekpunt %d is verwijderd" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Geen breekpunt(en) bij binnengaan van functie '%s'\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Geen breekpunt in bestand '%s', op regel #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "ongeldig breekpuntnummer" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Alle breekpunten verwijderen? (j of n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "j" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Zal de volgende %ld passage(s) van breekpunt %d negeren.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Zal de volgende keer dat breekpunt %d wordt bereikt stoppen.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Kan alleen programma's debuggen die met optie '-f' gegeven zijn.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Herstarten van debugger is mislukt" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Programma draait al. Herstarten vanaf begin (j/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Programma is niet herstart\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "fout: kan niet herstarten; operatie is niet toegestaan\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" "fout(%s): kan niet herstarten; de resterende commando's worden genegeerd\n" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Starten van programma: \n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Programma is abnormaal afgesloten, met afsluitwaarde %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Programma is normaal afgesloten, met afsluitwaarde %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "Het programma draait. Toch afsluiten (j/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Niet gestopt op een breekpunt; argument is genegeerd.\n" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "ongeldig breekpuntnummer %d." -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Zal de volgende %ld passages van breekpunt %d negeren.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "'finish' is niet zinvol in het buitenste frame van main()\n" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "Draaien tot terugkeer uit " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "'return' is niet zinvol in het buitenste frame van main()\n" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "kan gegeven locatie in functie '%s' niet vinden\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "ongeldige bronregel %d in bestand '%s'" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "kan gegeven locatie %d in bestand '%s' niet vinden\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "element niet in array\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "ongetypeerde variabele\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Stoppend in %s...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "'finish' is niet zinvol met een niet-lokale sprong '%s'\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' is niet zinvol met een niet-lokale sprong '%s'\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" "\t------[Enter] om verder te gaan, of [q] [Enter] om af te sluiten------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] niet in array '%s'" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "uitvoer wordt naar standaarduitvoer gestuurd\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "ongeldig nummer" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "'%s' is niet toegestaan in huidige context; statement is genegeerd" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "'return' is niet toegestaan in huidige context; statement is genegeerd" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "Geen symbool '%s' in huidige context" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "geen symbool '%s' in huidige context\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "onbekend knooptype %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "onbekende opcode %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s is geen operator noch sleutelwoord" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "bufferoverloop in genflags2str()" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1907,71 +2061,71 @@ "\t# Functieaanroepen-stack:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "'IGNORECASE' is een gawk-uitbreiding" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "'BINMODE' is een gawk-uitbreiding" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-waarde '%s' is ongeldig, wordt behandeld als 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "onjuiste opgave van '%sFMT': '%s'" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "'--lint' wordt uitgeschakeld wegens toewijzing aan 'LINT'" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "verwijzing naar ongeïnitialiseerd argument '%s'" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "verwijzing naar ongeïnitialiseerde variabele '%s'" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "veldverwijzingspoging via een waarde die geen getal is" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "veldverwijzingspoging via een lege string" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "toegangspoging tot veld %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%ld'" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "functie '%s' aangeroepen met meer argumenten dan gedeclareerd" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack(): onverwacht type '%s'" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "deling door nul in '/='" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "deling door nul in '%%='" @@ -2059,79 +2213,79 @@ msgid "dynamic loading of libraries is not supported" msgstr "het dynamisch laden van bibliotheken wordt niet ondersteund" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: kan symbolische koppeling '%s' niet lezen" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "stat: eerste argument is geen string" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "stat: tweede argument is geen array" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: onjuiste parameters" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts-initialisatie: kan variabele %s niet aanmaken" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "'fts' wordt op dit systeem niet ondersteund" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: kan array niet aanmaken -- onvoldoende geheugen" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: kan element niet instellen" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: kan element niet instellen" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: kan element niet instellen" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-verwerking: kan array niet aanmaken" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-verwerking: kan element niet instellen" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "" "fts: aangeroepen met onjuist aantal argumenten; drie worden er verwacht" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "fts: eerste argument is geen array" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "fts: tweede argument is geen getal" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "fts: derde argument is geen array" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: kan array niet pletten\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: listige FTS_NOSTAT-vlag wordt genegeerd -- lekker puh :)" @@ -2270,7 +2424,7 @@ msgid "chr: first argument is not a number" msgstr "chr: eerste argument is geen getal" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of(): opendir()/fdopendir() is mislukt: %s" @@ -2357,181 +2511,189 @@ msgid "sleep: not supported on this platform" msgstr "sleep: wordt op dit platform niet ondersteund" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF is op een negatieve waarde gezet" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: vierde argument is een gawk-uitbreiding" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: vierde argument is geen array" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +#| msgid "%s: cannot use a subarray of second argument for first argument" +msgid "%s: cannot use %s as fourth argument" +msgstr "" +"%s: een subarray van het tweede argument kan niet als eerste argument " +"gebruikt worden" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: tweede argument is geen array" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: hetzelfde array kan niet zowel als tweede als als vierde argument " "gebruikt worden" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: een subarray van het tweede argument kan niet als vierde argument " "gebruikt worden" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: een subarray van het vierde argument kan niet als tweede argument " "gebruikt worden" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "split: lege string als derde argument is geen standaard-uitbreiding" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: vierde argument is geen array" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: tweede argument is geen array" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: derde argument moet niet-nil zijn" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: hetzelfde array kan niet zowel als tweede als als vierde argument " "gebruikt worden" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: een subarray van het tweede argument kan niet als vierde argument " "gebruikt worden" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: een subarray van het vierde argument kan niet als tweede argument " "gebruikt worden" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "'FIELDWIDTHS' is een gawk-uitbreiding" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "ongeldige waarde voor FIELDWIDTHS, voor veld %d, nabij '%s'" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "een lege string als 'FS' is een gawk-uitbreiding" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "oude 'awk' staat geen reguliere expressies toe als waarde van 'FS'" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "'FPAT' is een gawk-uitbreiding" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node(): lege returnwaarde ontvangen" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node(): niet in MPFR-modus" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node(): MPFR wordt niet ondersteund" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node(): ongeldig getaltype '%d'" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func: NULL als naamsruimte-parameter ontvangen" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value(): lege knoop ontvangen" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value(): lege waarde ontvangen" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element(): leeg array ontvangen" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element(): lege index ontvangen" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed(): kan index %d niet naar %s converteren" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed(): kan waarde %d niet naar %s converteren" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr(): MPFR wordt niet ondersteund" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "kan einde van BEGINFILE-regel niet vinden" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "kan onbekende bestandssoort '%s' niet openen voor '%s'" @@ -2541,31 +2703,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "opdrachtregelargument '%s' is een map -- overgeslagen" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "kan bestand '%s' niet openen om te lezen: %s" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "sluiten van bestandsdescriptor %d ('%s') is mislukt: %s" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "onnodige mix van '>' en '>>' voor bestand '%.*s'" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "omleiding is niet toegestaan in sandbox-modus" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "expressie in omleiding '%s' is een getal" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "expressie voor omleiding '%s' heeft een lege string als waarde" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2573,292 +2790,297 @@ "bestandsnaam '%.*s' voor omleiding '%s' kan het resultaat zijn van een " "logische expressie" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "onnodige mix van '>' en '>>' voor bestand '%.*s'" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "kan pijp '%s' niet openen voor uitvoer: %s" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "kan pijp '%s' niet openen voor invoer: %s" -#: io.c:950 +#: io.c:1007 #, fuzzy, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "gettimeofday: wordt op dit platform niet ondersteund" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "kan tweerichtings-pijp '%s' niet openen voor in- en uitvoer: %s" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "kan niet omleiden van '%s': %s" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "kan niet omleiden naar '%s': %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "systeemgrens voor aantal open bestanden is bereikt: begonnen met multiplexen" -#: io.c:1169 -#, c-format -msgid "close of `%s' failed: %s." +#: io.c:1226 +#, fuzzy, c-format +#| msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "sluiten van '%s' is mislukt: %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "te veel pijpen of invoerbestanden geopend" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: tweede argument moet 'to' of 'from' zijn" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: '%.*s' is geen open bestand, pijp, of co-proces" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "sluiten van een nooit-geopende omleiding" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omleiding '%s' is niet geopend met '|&'; tweede argument wordt " "genegeerd" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "afsluitwaarde %d bij mislukte sluiting van pijp '%s': %s" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +#| msgid "failure status (%d) on pipe close of `%s': %s" +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "afsluitwaarde %d bij mislukte sluiting van pijp '%s': %s" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "afsluitwaarde %d bij mislukte sluiting van bestand '%s': %s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "geen expliciete sluiting van socket '%s' aangegeven" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "geen expliciete sluiting van co-proces '%s' aangegeven" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "geen expliciete sluiting van pijp '%s' aangegeven" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "geen expliciete sluiting van bestand '%s' aangegeven" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: kan buffer voor standaarduitvoer niet leegmaken: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: kan buffer voor standaardfoutuitvoer niet leegmaken: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "fout tijdens schrijven van standaarduitvoer: %s" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "fout tijdens schrijven van standaardfoutuitvoer: %s" -#: io.c:1457 -#, c-format -msgid "pipe flush of `%s' failed: %s." +#: io.c:1517 +#, fuzzy, c-format +#| msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "leegmaken van pijp '%s' is mislukt: %s" -#: io.c:1460 -#, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +#: io.c:1520 +#, fuzzy, c-format +#| msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "leegmaken door co-proces van pijp naar '%s' is mislukt: %s" -#: io.c:1463 -#, c-format -msgid "file flush of `%s' failed: %s." +#: io.c:1523 +#, fuzzy, c-format +#| msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "leegmaken van buffer voor bestand '%s' is mislukt: %s" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "lokale poort %s is ongeldig in '/inet': %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokale poort %s is ongeldig in '/inet'" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "host- en poortinformatie (%s, %s) zijn ongeldig: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "host- en poortinformatie (%s, %s) zijn ongeldig" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-communicatie wordt niet ondersteund" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kan '%s' niet openen -- modus '%s'" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "sluiten van meester-pty is mislukt: %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "sluiten van standaarduitvoer van dochterproces is mislukt: %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "kan slaaf-pty niet overzetten naar standaarduitvoer van dochterproces (dup: " "%s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "sluiten van standaardinvoer van dochterproces is mislukt: %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "kan slaaf-pty niet overzetten naar standaardinvoer van dochterproces (dup: " "%s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "sluiten van slaaf-pty is mislukt: %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "kan geen dochterproces starten of geen pty openen" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "kan pijp niet overzetten naar standaarduitvoer van dochterproces (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "kan pijp niet overzetten naar standaardinvoer van dochterproces (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "herstellen van standaarduitvoer van moederproces is mislukt" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "herstellen van standaardinvoer van moederproces is mislukt" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "sluiten van pijp is mislukt: %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "'|&' wordt niet ondersteund" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "kan pijp '%s' niet openen: %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan voor '%s' geen dochterproces starten (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "getline: poging tot lezen uit gesloten leeskant van tweewegpijp" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser(): NULL-pointer gekregen" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "invoer-parser '%s' botst met eerder geïnstalleerde invoer-parser '%s'" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "invoer-parser '%s' kan '%s' niet openen" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper(): NULL-pointer gekregen" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "uitvoer-wrapper '%s' botst met eerder geïnstalleerde uitvoer-wrapper '%s'" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "uitvoer-wrapper '%s' kan '%s' niet openen" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor(): NULL-pointer gekregen" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2866,143 +3088,149 @@ msgstr "" "tweeweg-processor '%s' botst met eerder geïnstalleerde tweeweg-processor '%s'" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "tweeweg-processor '%s' kan '%s' niet openen" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "databestand '%s' is leeg" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "kan geen extra invoergeheugen meer toewijzen" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "een 'RS' van meerdere tekens is een gawk-uitbreiding" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6-communicatie wordt niet ondersteund" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "omgevingsvariabele 'POSIXLY_CORRECT' is gezet: '--posix' ingeschakeld" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "'--posix' overstijgt '--traditional'" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "'--posix'/'--traditional' overstijgen '--non-decimal-data'" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' overstijgt '--characters-as-bytes'" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "het uitvoeren van %s als 'setuid root' kan een veiligheidsrisico zijn" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "kan standaardinvoer niet in binaire modus zetten: %s" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "kan standaarduitvoer niet in binaire modus zetten: %s" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "kan standaardfoutuitvoer niet in binaire modus zetten: %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "helemaal geen programmatekst!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Gebruik: %s [opties] -f programmabestand [--] bestand...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" " of: %s [opties] [--] %cprogrammatekst%c bestand...\n" "\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "\tPOSIX-opties:\t\tEquivalente GNU-opties: (standaard)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f programmabestand\t--file=programmabestand\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F veldscheidingsteken\t--field-separator=veldscheidingsteken\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" "\t-v var=waarde\t\t--assign=var=waarde\n" "\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "\tKorte opties:\t\tEquivalente GNU-opties: (uitbreidingen)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[bestand]\t\t--dump-variables[=bestand]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[bestand]\t\t--debug[=bestand]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programmatekst'\t--source='programmatekst'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E bestand\t\t--exec=bestand\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include-bestand\t\t--include=include-bestand\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliotheek\t\t--load=bibliotheek\n" @@ -3010,73 +3238,73 @@ #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[bestand]\t\t--pretty-print[=bestand]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[bestand]\t\t--profile[=bestand]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z taalregionaam\t\t--locale=taalregionaam\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3088,7 +3316,7 @@ "\n" msgstr "" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3098,7 +3326,7 @@ "Standaard leest het van standaardinvoer en schrijft naar standaarduitvoer.\n" "\n" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -3109,7 +3337,7 @@ "\t%s '{ som += $1 }; END { print som }' bestand\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3127,7 +3355,7 @@ "uitgegeven door de Free Software Foundation, naar keuze ofwel onder\n" "versie 3 of onder een nieuwere versie van die licentie.\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3141,7 +3369,7 @@ "Zie de GNU General Public License voor meer details.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3150,11 +3378,11 @@ "ontvangen te hebben; is dit niet het geval, dan kunt u deze licentie\n" "ook vinden op http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft maakt van FS geen tab in POSIX-awk" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3163,162 +3391,169 @@ "%s: argument '%s' van '-v' is niet van de vorm 'var=waarde'\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' is geen geldige variabelenaam" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "'%s' is geen variabelenaam; zoekend naar bestand '%s=%s'" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan in gawk ingebouwde '%s' niet als variabelenaam gebruiken" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan functie '%s' niet als variabelenaam gebruiken" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "drijvendekomma-berekeningsfout" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "fatale fout: **interne fout**" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "fatale fout: **interne fout**: segmentatiefout" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "fatale fout: **interne fout**: stack is vol" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "geen reeds-geopende bestandsdescriptor %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kan /dev/null niet openen voor bestandsdescriptor %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "argument van '-e/--source' is leeg; genegeerd" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "'--profile' overstijgt '--pretty-print'" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" "optie '-M' is genegeerd; ondersteuning voor MPFR/GMP is niet meegecompileerd" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: optie '-W %s' is onbekend; genegeerd\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: optie vereist een argument -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-waarde '%.*s' is ongeldig" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "RNDMODE-waarde '%.*s' is ongeldig" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: eerste argument is geen getal" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: tweede argument is geen getal" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +#| msgid "%s: received negative argument %g" +msgid "%s: received negative argument %.*s" +msgstr "%s: argument %g is negatief" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: argument is geen getal" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: argument is geen getal" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): negatieve waarde is niet toegestaan" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): cijfers na de komma worden afgekapt" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): negatieve waarden zijn niet toegestaan" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: niet-numeriek argument #%d ontvangen" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d heeft ongeldige waarde %Rg; 0 wordt gebruikt" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%1$s: negatieve waarde %3$Rg van argument #%2$d is niet toegestaan" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" "%1$s: cijfers na de komma van waarde %3$Rg van argument #%2$d worden afgekapt" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%1$s: negatieve waarde %3$Zd van argument #%2$d is niet toegestaan" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: aangeroepen met minder dan twee argumenten" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: aangeroepen met minder dan twee argumenten" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: aangeroepen met minder dan twee argumenten" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: argument is geen getal" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: eerste argument is geen getal" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: tweede argument is geen getal" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "commandoregel:" @@ -3328,20 +3563,20 @@ msgid "could not make typed regex" msgstr "onafgesloten reguliere expressie" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "oude 'awk' kent de stuurcodereeks '\\%c' niet" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX staat stuurcode '\\x' niet toe" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "geen hex cijfers in stuurcodereeks '\\x'" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3350,15 +3585,19 @@ "hexadecimale stuurcode \\x%.*s van %d tekens wordt waarschijnlijk niet " "afgehandeld zoals u verwacht" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "stuurcodereeks '\\%c' behandeld als normale '%c'" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Ongeldige multibyte-gegevens gevonden.\n" "Uw gegevens passen vermoedelijk niet bij uw taalregio." @@ -3406,11 +3645,11 @@ msgid "internal error: %s with null vname" msgstr "**interne fout**: %s met lege 'vname'" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "**interne fout**: ingebouwde functie met lege 'fname'" -#: profile.c:1317 +#: profile.c:1318 #, fuzzy, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3419,7 +3658,7 @@ "\t# Geladen uitbreidingen ('-l' en/of '@load')\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, fuzzy, c-format msgid "" "\n" @@ -3429,12 +3668,12 @@ "\t# Geladen uitbreidingen ('-l' en/of '@load')\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiel, gemaakt op %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3443,7 +3682,7 @@ "\n" "\t# Functies, alfabetisch geordend\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str(): onbekend omleidingstype %d" @@ -3474,39 +3713,39 @@ msgstr "" "component '%.*s' van reguliere expressie moet vermoedelijk '[%.*s]' zijn" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "ongepaarde [" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "ongeldige tekenklasse" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntax van tekenklasse is [[:space:]], niet [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "onafgemaakte \\-stuurcode" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "ongeldige inhoud van \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "reguliere expressie is te groot" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "ongepaarde (" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "geen syntax opgegeven" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "ongepaarde )" @@ -3638,16 +3877,32 @@ msgid "No previous regular expression" msgstr "Geen eerdere reguliere expressie" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "functie '%s': kan functie '%s' niet als parameternaam gebruiken" -#: symbol.c:821 +#: symbol.c:828 #, fuzzy msgid "cannot pop main context" msgstr "kan hoofdcontext niet poppen" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "'L' is betekenisloos in awk-opmaak; genegeerd" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "'h' is betekenisloos in awk-opmaak; genegeerd" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Geen symbool '%s' in huidige context" + #~ msgid "asorti: cannot use a subarray of first arg for second arg" #~ msgstr "" #~ "asorti: een subarray van het eerste argument kan niet als tweede argument " @@ -3843,9 +4098,6 @@ #~ msgid "assignment used in conditional context" #~ msgstr "toewijzing wordt gebruikt in een conditionele context" -#~ msgid "statement has no effect" -#~ msgstr "opdracht heeft geen effect" - #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" diff -urN gawk-5.1.0/po/pl.po gawk-5.1.1/po/pl.po --- gawk-5.1.0/po/pl.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/pl.po 2021-10-27 07:58:42.000000000 +0300 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2014-03-22 17:49+0100\n" "Last-Translator: Wojciech Polak \n" "Language-Team: Polish \n" @@ -20,508 +20,522 @@ "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "od %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "próba użycia wartoÅ›ci skalarnej jako tablicy" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "próba użycia parametru `%s' skalaru jako tablicy" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "próba użycia skalaru `%s' jako tablicy" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "próba użycia tablicy `%s' w kontekÅ›cie skalaru" -#: array.c:575 +#: array.c:576 #, fuzzy, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: indeks `%s' nie jest w tablicy `%s'" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "próba użycia skalaru `%s[\"%.*s\"]' jako tablicy" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, fuzzy, c-format msgid "%s: first argument is not an array" msgstr "asort: pierwszy argument nie jest tablicÄ…" -#: array.c:824 +#: array.c:826 #, fuzzy, c-format msgid "%s: second argument is not an array" msgstr "split: drugi argument nie jest tablicÄ…" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "" +"asort: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu" + +#: array.c:837 +#, fuzzy, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "asort: pierwszy argument nie jest tablicÄ…" -#: array.c:838 +#: array.c:839 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "asort: pierwszy argument nie jest tablicÄ…" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, fuzzy, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "asort: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu" -#: array.c:849 +#: array.c:856 #, fuzzy, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "asort: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "nieprawidÅ‚owa nazwa funkcji `%s'" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funkcja porównujÄ…ca w sortowaniu `%s' nie zostaÅ‚a zdefiniowna" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s bloków musi posiadać część dotyczÄ…cÄ… akcji" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "każda reguÅ‚a musi posiadać wzorzec lub część dotyczÄ…cÄ… akcji" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "stary awk nie wspiera wielokrotnych reguÅ‚ `BEGIN' lub `END'" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "" "`%s' jest funkcjÄ… wbudowanÄ…, wiÄ™c nie może zostać ponownie zdefiniowana" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "staÅ‚e wyrażenie regularne `//' wyglÄ…da jak komentarz C++, ale nim nie jest" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "staÅ‚e wyrażenie regularne `/%s/' wyglÄ…da jak komentarz C, ale nim nie jest" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "powielone wartoÅ›ci case w ciele switch: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "wykryto powielony `default' w ciele switch" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "instrukcja `break' poza pÄ™tlÄ… lub switch'em jest niedozwolona" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "instrukcja `continue' poza pÄ™tlÄ… jest niedozwolona" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "`next' użyty w akcji %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' użyty w akcji %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "`return' użyty poza kontekstem funkcji" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "zwykÅ‚y `print' w reguÅ‚ach BEGIN lub END powinien prawdopodobnie być jako " "`print \"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' nie jest dozwolony z SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' nie jest dozwolony z FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(tablica)' jest nieprzenoÅ›nym rozszerzeniem tawk" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "wieloetapowe dwukierunkowe linie potokowe nie dziaÅ‚ajÄ…" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "wyrażanie regularne po prawej stronie przypisania" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "wyrażenie regularne po lewej stronie operatora `~' lub `!~'" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "stary awk nie wspiera sÅ‚owa kluczowego `in', z wyjÄ…tkiem po sÅ‚owie `for'" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "wyrażenie regularne po prawej stronie porównania" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" "komenda `getline' bez przekierowania jest nieprawidÅ‚owa wewnÄ…trz reguÅ‚y `%s'" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "" "komenda `getline' bez przekierowania nie jest zdefiniowana wewnÄ…trz akcji END" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "stary awk nie wspiera wielowymiarowych tablic" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "wywoÅ‚anie `length' bez nawiasów jest nieprzenoÅ›ne" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "poÅ›rednie wywoÅ‚ania funkcji sÄ… rozszerzeniem gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, fuzzy, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "nie można użyć specjalnej zmiennej `%s' do poÅ›redniego wywoÅ‚ania funkcji" -#: awkgram.y:2043 +#: awkgram.y:2050 #, fuzzy, c-format msgid "attempt to use non-function `%s' in function call" msgstr "próba użycia funkcji `%s' jako tablicy" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "nieprawidÅ‚owe wyrażenie indeksowe" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "ostrzeżenie: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatalny błąd: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "niespodziewany znak nowego wiersza lub koÅ„ca Å‚aÅ„cucha" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, fuzzy, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "nie można otworzyć pliku źródÅ‚owego `%s' do czytania (%s)" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, fuzzy, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "nie można otworzyć współdzielonej biblioteki `%s' do czytania (%s)" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "nieznany powód" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, fuzzy, c-format msgid "cannot include `%s' and use it as a program file" msgstr "nie można dołączyć `%s' i używać go jako pliku programu" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "plik źródÅ‚owy `%s' jest już załączony" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "biblioteka współdzielona jest już zaÅ‚adowana `%s'" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include jest rozszerzeniem gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "pusta nazwa pliku po @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load jest rozszerzeniem gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "pusta nazwa pliku po @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "pusty tekst programu w linii poleceÅ„" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, fuzzy, c-format msgid "cannot read source file `%s': %s" msgstr "nie można odczytać pliku źródÅ‚owego `%s' (%s)" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "plik źródÅ‚owy `%s' jest pusty" -#: awkgram.y:3310 +#: awkgram.y:3317 #, fuzzy, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "nieprawidÅ‚owy znak w komendzie" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "plik źródÅ‚owy nie posiada na koÅ„cu znaku nowego wiersza" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "niezakoÅ„czone prawidÅ‚owo wyrażenie regularne koÅ„czy siÄ™ znakiem `\\' na " "koÅ„cu pliku" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: modyfikator wyrażenia regularnego `/.../%c' tawk nie dziaÅ‚a w gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "modyfikator wyrażenia regularnego `/.../%c' tawk nie dziaÅ‚a w gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "niezakoÅ„czone wyrażenie regularne" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "niezakoÅ„czone wyrażenie regularne na koÅ„cu pliku" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "użycie `\\ #...' kontynuacji linii nie jest przenoÅ›ne" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "backslash nie jest ostatnim znakiem w wierszu" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 #, fuzzy msgid "multidimensional arrays are a gawk extension" msgstr "poÅ›rednie wywoÅ‚ania funkcji sÄ… rozszerzeniem gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, fuzzy, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX nie zezwala na operator `**'" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, fuzzy, c-format msgid "operator `%s' is not supported in old awk" msgstr "operator `^' nie jest wspierany w starym awk" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "niezakoÅ„czony Å‚aÅ„cuch" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 #, fuzzy msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX nie zezwala na sekwencjÄ™ ucieczki `\\x'" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 #, fuzzy msgid "backslash string continuation is not portable" msgstr "użycie `\\ #...' kontynuacji linii nie jest przenoÅ›ne" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "nieprawidÅ‚owy znak '%c' w wyrażeniu" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' jest rozszerzeniem gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX nie zezwala na `%s'" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' nie jest wspierany w starym awk" -#: awkgram.y:4500 +#: awkgram.y:4507 #, fuzzy msgid "`goto' considered harmful!" msgstr "`goto' uważane za szkodliwe!\n" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d jest nieprawidÅ‚owe jako liczba argumentów dla %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, fuzzy, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: literaÅ‚ Å‚aÅ„cuchowy jako ostatni argument podstawienia nie ma żadnego " "efektu" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s trzeci parametr nie jest zmiennym obiektem" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: trzeci argument jest rozszerzeniem gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: drugi argument jest rozszerzeniem gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidÅ‚owe użycie dcgettext(_\"...\"): usuÅ„ znak podkreÅ›lenia" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidÅ‚owe użycie dcngettext(_\"...\"): usuÅ„ znak podkreÅ›lenia" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: staÅ‚y regexp jako drugi argument nie jest dozwolony" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funkcja `%s': parametr `%s' zasÅ‚ania globalnÄ… zmiennÄ…" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "nie można otworzyć `%s' do zapisu: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "wysyÅ‚anie listy zmiennych na standardowe wyjÅ›cie diagnostyczne" -#: awkgram.y:4930 +#: awkgram.y:4937 #, fuzzy, c-format msgid "%s: close failed: %s" msgstr "%s: zamkniÄ™cie nie powiodÅ‚o siÄ™ (%s)" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() wywoÅ‚ana podwójnie!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "wystÄ…piÅ‚y przykryte zmienne." -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "nazwa funkcji `%s' zostaÅ‚a zdefiniowana poprzednio" -#: awkgram.y:5091 +#: awkgram.y:5098 #, fuzzy, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "funkcja `%s': nie można użyć nazwy funkcji jako nazwy parametru" -#: awkgram.y:5094 +#: awkgram.y:5101 #, fuzzy, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "funkcja `%s': nie można użyć specjalnej zmiennej `%s' jako parametru funkcji" -#: awkgram.y:5098 +#: awkgram.y:5105 #, fuzzy, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "funkcja `%s': parametr `%s' zasÅ‚ania globalnÄ… zmiennÄ…" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "funkcja `%s' zostaÅ‚a wywoÅ‚ana, ale nigdy nie zostaÅ‚a zdefiniowana" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "" "funkcja `%s' zostaÅ‚a zdefiniowana, ale nigdy nie zostaÅ‚a wywoÅ‚ana " "bezpoÅ›rednio" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "staÅ‚e wyrażenie regularne dla parametru #%d daje wartość logicznÄ…" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -531,64 +545,68 @@ "`(',\n" "lub użyta jako zmienna lub jako tablica" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "próba dzielenia przez zero" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "próba dzielenia przez zero w `%%'" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "nie można przypisać wartoÅ›ci do wyniku tego wyrażenia" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "nieprawidÅ‚owy cel przypisania (opcode %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "instrukcja nie ma żadnego efektu" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 #, fuzzy msgid "@namespace is a gawk extension" msgstr "@include jest rozszerzeniem gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -607,8 +625,8 @@ msgid "standard error" msgstr "standardowe wyjÅ›cie" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: otrzymano argument, który nie jest liczbÄ…" @@ -647,7 +665,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: `%s' nie jest ani otwartym plikiem, ani potokiem, ani procesem" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, fuzzy, c-format msgid "%s: received non-string first argument" msgstr "index: otrzymano pierwszy argument, który nie jest Å‚aÅ„cuchem" @@ -665,187 +683,175 @@ msgid "`length(array)' is a gawk extension" msgstr "`length(tablica)' jest rozszerzeniem gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, fuzzy, c-format msgid "%s: received non-string argument" msgstr "system: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, fuzzy, c-format msgid "%s: received negative argument %g" msgstr "log: otrzymano ujemny argument %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: należy użyć `count$' we wszystkich formatach lub nic" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "szerokość pola jest ignorowana dla specyfikatora `%%'" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precyzja jest ignorowana dla specyfikatora `%%'" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "szerokość pola i precyzja sÄ… ignorowane dla specyfikatora `%%'" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: `$' jest niedozwolony w formatach awk" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy msgid "fatal: argument index with `$' must be > 0" msgstr "fatal: argument count z `$' musi być > 0" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" "fatal: argument count %ld wiÄ™kszy niż caÅ‚kowita suma argumentów dostarczonych" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: `$' jest niedozwolony po kropce w formacie" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatal: brak `$' dla pozycyjnej szerokoÅ›ci pola lub precyzji" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "`l' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "fatal: `l' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "`L' jest bezsensowny w formatach awk; zignorowany" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "`h' jest bezsensowny w formatach awk; zignorowany" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk" - -#: builtin.c:1092 +#: builtin.c:1070 #, fuzzy, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: wartość %g jest poza zasiÄ™giem dla formatu `%%%c'" -#: builtin.c:1105 +#: builtin.c:1083 #, fuzzy, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: wartość %g jest poza zasiÄ™giem dla formatu `%%%c'" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: wartość %g jest poza zasiÄ™giem dla formatu `%%%c'" -#: builtin.c:1505 +#: builtin.c:1483 #, fuzzy, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: wartość %g jest poza zasiÄ™giem dla formatu `%%%c'" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "pominiÄ™cie nieznanego formatu specyfikatora znaku `%c': nie skonwertowano " "argumentu" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: brak wystarczajÄ…cej liczby argumentów, aby zaspokoić Å‚aÅ„cuch " "formatujÄ…cy" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "zabrakÅ‚o ^" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "zbyt dużo podanych argumentów w Å‚aÅ„cuchu formatujÄ…cym" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: brak argumentów" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: brak argumentów" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: dÅ‚ugość %g nie jest >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: dÅ‚ugość %g nie jest >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: dÅ‚ugość %g, która nie jest liczbÄ… caÅ‚kowitÄ…, zostanie obciÄ™ta" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: dÅ‚ugość %g zbyt duża dla indeksu Å‚aÅ„cucha, obcinanie do %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: poczÄ…tkowy indeks %g jest nieprawidÅ‚owy, nastÄ…pi użycie 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" "substr: poczÄ…tkowy indeks %g, który nie jest liczbÄ… caÅ‚kowitÄ…, zostanie " "obciÄ™ty" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: Å‚aÅ„cuch źródÅ‚owy ma zerowÄ… dÅ‚ugość" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: poczÄ…tkowy indeks %g leży poza koÅ„cem Å‚aÅ„cucha" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -853,157 +859,163 @@ "substr: dÅ‚ugość %g zaczynajÄ…c od %g przekracza dÅ‚ugość pierwszego argumentu " "(%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: wartość formatu w PROCINFO[\"strftime\"] posiada typ numeryczny" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, fuzzy, c-format msgid "%s: received non-numeric second argument" msgstr "or: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: drugi argument mniejszy od 0 lub zbyt duży dla time_t" -#: builtin.c:2025 +#: builtin.c:2014 #, fuzzy msgid "strftime: second argument out of range for time_t" msgstr "strftime: drugi argument mniejszy od 0 lub zbyt duży dla time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: otrzymano pusty Å‚aÅ„cuch formatujÄ…cy" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: przynajmniej jedna z wartoÅ›ci jest poza domyÅ›lnym zakresem" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "funkcja 'system' nie jest dozwolona w trybie piaskownicy" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "odwoÅ‚anie do niezainicjowanego pola `$%d'" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, fuzzy, c-format msgid "%s: received non-numeric first argument" msgstr "or: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: otrzymano trzeci argument, który nie jest tablicÄ…" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: nie można pobrać trzeciego argumentu" + +#: builtin.c:2916 #, fuzzy, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: trzeci argument 0 potraktowany jako 1" -#: builtin.c:3246 +#: builtin.c:3267 #, fuzzy, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "and: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3369 +#: builtin.c:3390 #, fuzzy, c-format msgid "indirect call to %s requires at least two arguments" msgstr "and: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3444 +#: builtin.c:3465 #, fuzzy, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): zbyt duża wartość przesuniÄ™cia spowoduje dziwne wyniki" -#: builtin.c:3483 +#: builtin.c:3504 #, fuzzy, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): zbyt duża wartość przesuniÄ™cia spowoduje dziwne wyniki" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, fuzzy, c-format msgid "%s: called with less than two arguments" msgstr "or: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, fuzzy, c-format msgid "%s: argument %d is non-numeric" msgstr "or: argument %d nie jest liczbÄ…" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: argument #%d ujemna wartość %Rg spowoduje dziwne wyniki" -#: builtin.c:3611 +#: builtin.c:3632 #, fuzzy, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' nie jest prawidÅ‚owÄ… kategoriÄ… lokalizacji" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 #, fuzzy msgid "intdiv: third argument is not an array" msgstr "match: otrzymano trzeci argument, który nie jest tablicÄ…" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 #, fuzzy msgid "intdiv: division by zero attempted" msgstr "próba dzielenia przez zero" -#: builtin.c:4080 +#: builtin.c:4106 #, fuzzy msgid "typeof: second argument is not an array" msgstr "split: drugi argument nie jest tablicÄ…" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -#: builtin.c:4172 +#: builtin.c:4198 #, fuzzy, c-format msgid "typeof: invalid argument type `%s'" msgstr "option: nieprawidÅ‚owy parametr - \"%s\"" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "" @@ -1013,412 +1025,415 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, fuzzy, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Podaj komendy (g)awk. ZakoÅ„cz poleceniem \"end\"\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "nieprawidÅ‚owy numer ramki: %d" -#: command.y:297 +#: command.y:298 #, fuzzy, c-format msgid "info: invalid option - `%s'" msgstr "info: nieprawidÅ‚owa opcja - \"%s\"" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "source \"%s\": stanowi już źródÅ‚o." -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "save \"%s\": niedozwolona komenda." -#: command.y:341 +#: command.y:342 #, fuzzy msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "Nie można użyć polecenia `commands' dla komend breakpoint/watchpoint." -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "nie ustawiono jeszcze breakpoint/watchpoint" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "nieprawidÅ‚owy numer breakpoint/watchpoint" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:352 +#: command.y:353 #, fuzzy, c-format msgid "End with the command `end'\n" msgstr "ZakoÅ„cz komendÄ… \"end\"\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' dozwolony jedynie dla komendy `commands' lub `eval'" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "polecenie `silent' dozwolone jedynie w komendzie `commands'" -#: command.y:375 +#: command.y:376 #, fuzzy, c-format msgid "trace: invalid option - `%s'" msgstr "trace: nieprawidÅ‚owa opcja - \"%s\"" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: nieprawidÅ‚owy numer breakpoint/watchpoint" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "argument nie jest Å‚aÅ„cuchem tekstowym" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, fuzzy, c-format msgid "option: invalid parameter - `%s'" msgstr "option: nieprawidÅ‚owy parametr - \"%s\"" -#: command.y:476 +#: command.y:477 #, fuzzy, c-format msgid "no such function - `%s'" msgstr "brak takiej funkcji - \"%s\"" -#: command.y:533 +#: command.y:534 #, fuzzy, c-format msgid "enable: invalid option - `%s'" msgstr "enable: nieprawidÅ‚owa opcja - \"%s\"" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "nieprawidÅ‚owy zakres specyfikacji: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "nienumeryczna wartość dla numeru pola" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "znaleziono nienumerycznÄ… wartość, spodziewano siÄ™ numerycznej" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "niezerowa wartość" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" msgstr "" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +msgid "down [N] - move N frames down the stack" msgstr "" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +msgid "end - end a list of commands or awk statements" msgstr "" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" msgstr "" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" msgstr "" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" msgstr "" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" msgstr "" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" msgstr "" -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +msgid "quit - exit debugger" msgstr "" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +msgid "run - start or restart executing program" msgstr "" -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +msgid "save filename - save commands from the session to file" msgstr "" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" msgstr "" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +msgid "source file - execute commands from file" msgstr "" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" msgstr "" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "" -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +msgid "trace on|off - print instruction before executing" msgstr "" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "" -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +msgid "up [N] - move N frames up the stack" msgstr "" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" msgstr "" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "błąd: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format msgid "cannot read command: %s\n" msgstr "nie można odczytać komendy (%s)\n" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format msgid "cannot read command: %s" msgstr "nie można odczytać komendy (%s)" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "nieprawidÅ‚owy znak w komendzie" -#: command.y:1161 +#: command.y:1162 #, fuzzy, c-format msgid "unknown command - `%.*s', try help" msgstr "nieznana komenda - \"%.*s\", spróbuj pomoc" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "nieprawidÅ‚owy znak" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "niezdefiniowana komenda: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" #: debug.c:259 -msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "" #: debug.c:261 -msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "" #: debug.c:263 -msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" #: debug.c:358 -msgid "program not running." -msgstr "" +#, fuzzy +#| msgid "argument not a string" +msgid "program not running" +msgstr "argument nie jest Å‚aÅ„cuchem tekstowym" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "plik źródÅ‚owy `%s' jest pusty.\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "brak aktualnego pliku źródÅ‚owego." -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format msgid "cannot find source file named `%s': %s" msgstr "nie można znaleźć pliku źródÅ‚owego `%s' (%s)" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "UWAGA: plik źródÅ‚owy `%s' ulegÅ‚ zmianie od kompilacji programu.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "niespodziewany koniec pliku podczas czytania `%s', linia %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "plik źródÅ‚owy `%s' ulegÅ‚ zmianie od rozpoczÄ™cia dziaÅ‚ania programu" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Aktualny plik źródÅ‚owy: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Ilość linii: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Plik źródÅ‚owy (linie): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1426,54 +1441,55 @@ "Numer Disp Enabled Lokacja\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" -msgstr "" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "Number of lines: %d\n" +msgid "\tnumber of hits = %ld\n" +msgstr "Ilość linii: %d\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tkoniec warunku: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tkomendy:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Aktualna ramka: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "" -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "" -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Brak argumentów.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1481,7 +1497,7 @@ "Wszystkie zdefiniowane zmienne:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1489,13 +1505,13 @@ "Wszystkie zdefiniowane funkcje:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" msgstr "" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1503,378 +1519,387 @@ "Obserwowane zmienne:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "brak symbolu `%s' w bieżącym kontekÅ›cie\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "`%s' nie jest tablicÄ…\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = niezainicjowane pole\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "tablica `%s' jest pusta\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, fuzzy, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[\"%s\"] nie ma w tablicy `%s'\n" -#: debug.c:1188 +#: debug.c:1197 #, fuzzy, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "`%s[\"%s\"]' nie jest tablicÄ…\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' nie jest zmiennÄ… skalarnÄ…" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, fuzzy, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "próba użycia tablicy `%s[\"%s\"]' w kontekÅ›cie skalaru" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "próba użycia skalaru `%s[\"%s\"]' jako tablicy" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "`%s' jest funkcjÄ…" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "" -#: debug.c:1543 +#: debug.c:1552 #, fuzzy, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d: [\"%s\"] nie ma w tablicy `%s'\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "próba użycia wartoÅ›ci skalarnej jako tablicy" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " w pliku `%s', linia %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " w `%s':%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tw " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "nieprawidÅ‚owy numer ramki" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpoint %d ustawiony w pliku `%s', linia %d\n" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "Brak breakpointa w pliku `%s', linii #%d\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "numer linii %d w pliku `%s' jest poza zasiÄ™giem" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format msgid "internal error: cannot find rule\n" msgstr "wewnÄ™trzny błąd: %s z zerowym vname" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "Brak breakpointa w pliku `%s', linii #%d\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "numer linii %d w pliku `%s' jest poza zasiÄ™giem" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Skasowany breakpoint %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Brak breakpointa w pliku `%s', linii #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Czy skasować wszystkie breakpointy? (y lub n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "t" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "" -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Uruchamianie programu: \n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "" -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." -msgstr "" +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint/watchpoint number" +msgid "invalid breakpoint number %d" +msgstr "nieprawidÅ‚owy numer breakpoint/watchpoint" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "" -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "nieprawidÅ‚owa linia źródÅ‚owa %d w pliku `%s'" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "nieprawidÅ‚owa linia źródÅ‚owa %d w pliku `%s'" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "brak elementu w tablicy\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "zmienna bez typu\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" -#: debug.c:5141 +#: debug.c:5152 #, fuzzy, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%s\"] nie ma w tablicy `%s'" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "wysyÅ‚anie wyjÅ›cia na stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "nieprawidÅ‚owa liczba" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "polecenie `%s' nie może być wywoÅ‚ane w tym kontekÅ›cie; zignorowano" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "" "instrukcja `return' nie może być wywoÅ‚ana w tym kontekÅ›cie; zignorowano" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "Brak symbolu `%s' w bieżącym kontekÅ›cie" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "brak symbolu `%s' w bieżącym kontekÅ›cie\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "nieznany typ wÄ™zÅ‚a %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "nieznany opcode %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s nie jest operatorem ani sÅ‚owem kluczowym" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "przepeÅ‚nienie bufora w genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1885,73 +1910,73 @@ "\t# Stos WywoÅ‚awczy Funkcji:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' jest rozszerzeniem gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' jest rozszerzeniem gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "wartość BINMODE `%s' jest nieprawidÅ‚owa, przyjÄ™to jÄ… jako 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "zÅ‚a specyfikacja `%sFMT' `%s'" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "wyłączenie `--lint' z powodu przypisania do `LINT'" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "odwoÅ‚anie do niezainicjowanego argumentu `%s'" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "odwoÅ‚anie do niezainicjowanej zmiennej `%s'" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "próba odwoÅ‚ania do pola poprzez nienumerycznÄ… wartość" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "próba odwoÅ‚ania z zerowego Å‚aÅ„cucha" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "próba dostÄ™pu do pola %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "odwoÅ‚anie do niezainicjowanego pola `$%ld'" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" "funkcja `%s' zostaÅ‚a wywoÅ‚ana z wiÄ™kszÄ… iloÅ›ciÄ… argumentów niż zostaÅ‚o to " "zadeklarowane" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: niespodziewany typ `%s'" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "próba dzielenia przez zero w `/='" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "próba dzielenia przez zero w `%%='" @@ -2039,84 +2064,84 @@ msgid "dynamic loading of libraries is not supported" msgstr "dynamiczne Å‚adowanie biblioteki nie jest wspierane" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: nie można odczytać dowiÄ…zania symbolicznego `%s'" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: first argument is not a string" msgstr "do_writea: argument 0 nie jest tekstem\n" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy msgid "stat: second argument is not an array" msgstr "split: drugi argument nie jest tablicÄ…" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: zÅ‚e parametry" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: nie można utworzyć zmiennej %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "funkcja fts nie jest wspierana w tym systemie" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 #, fuzzy msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: nie można utworzyć tablicy" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: nie można ustawić elementu" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: nie można ustawić elementu" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: nie można ustawić elementu" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: nie można utworzyć tablicy" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: nie można ustawić elementu" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: wywoÅ‚ano z nieprawidÅ‚owÄ… iloÅ›ciÄ… argumentów, powinny być 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "asort: pierwszy argument nie jest tablicÄ…" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "split: drugi argument nie jest tablicÄ…" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "match: otrzymano trzeci argument, który nie jest tablicÄ…" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: nie można spÅ‚aszczyć tablicy\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: zignorowano flagÄ™ FTS_NOSTAT. nyah, nyah, nyah." @@ -2260,7 +2285,7 @@ msgid "chr: first argument is not a number" msgstr "asort: pierwszy argument nie jest tablicÄ…" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: wywoÅ‚anie opendir/fdopendir nie powiodÅ‚o siÄ™: %s" @@ -2360,182 +2385,188 @@ msgid "sleep: not supported on this platform" msgstr "sleep: funkcja nie jest wspierana na tej platformie" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF ustawiony na wartość ujemnÄ…" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: czwarty argument jest rozszerzeniem gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: czwarty argument nie jest tablicÄ…" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "" +"asort: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: drugi argument nie jest tablicÄ…" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: nie można użyć tej samej tablicy dla drugiego i czwartego argumentu" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: nie można użyć podtablicy drugiego argumentu dla czwartego argumentu" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: nie można użyć podtablicy czwartego argumentu dla drugiego argumentu" -#: field.c:1038 +#: field.c:1050 #, fuzzy msgid "split: null string for third arg is a non-standard extension" msgstr "split: zerowy Å‚aÅ„cuch dla trzeciego argumentu jest rozszerzeniem gawk" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: czwarty argument nie jest tablicÄ…" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: drugi argument nie jest tablicÄ…" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: trzeci argument nie może być pusty" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: nie można użyć tej samej tablicy dla drugiego i czwartego argumentu" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: nie można użyć podtablicy drugiego argumentu dla czwartego " "argumentu" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: nie można użyć podtablicy czwartego argumentu dla drugiego " "argumentu" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' jest rozszerzeniem gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "" -#: field.c:1241 +#: field.c:1257 #, fuzzy, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "nieprawidÅ‚owa wartość FIELDWIDTHS, w pobliżu `%s'" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "zerowy Å‚aÅ„cuch dla `FS' jest rozszerzeniem gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "stary awk nie wspiera wyrażeÅ„ regularnych jako wartoÅ›ci `FS'" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' jest rozszerzeniem gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: otrzymano null retval" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 #, fuzzy msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: otrzymano null retval" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 #, fuzzy msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: otrzymano null retval" -#: gawkapi.c:198 +#: gawkapi.c:190 #, fuzzy, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: otrzymano null retval" -#: gawkapi.c:385 +#: gawkapi.c:377 #, fuzzy msgid "add_ext_func: received NULL name_space parameter" msgstr "load_ext: otrzymano NULL lib_name" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: otrzymano null node" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: otrzymano null val" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: otrzymano tablicÄ™ null" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: otrzymano null subscript" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array: nie można byÅ‚o skonwertować indeksu %d\n" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array: nie można byÅ‚o skonwertować wartoÅ›ci %d\n" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "" -#: gawkapi.c:1365 +#: gawkapi.c:1358 #, fuzzy msgid "cannot find end of BEGINFILE rule" msgstr "instrukcja `next' nie może być wywoÅ‚ana z wnÄ™trza reguÅ‚y BEGIN" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, fuzzy, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "nie można otworzyć pliku źródÅ‚owego `%s' do czytania (%s)" @@ -2545,31 +2576,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "argument linii poleceÅ„ `%s' jest katalogiem: pominiÄ™to" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format msgid "cannot open file `%s' for reading: %s" msgstr "nie można otworzyć pliku `%s' do czytania (%s)" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "zamkniÄ™cie fd %d (`%s') nie powiodÅ‚o siÄ™ (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "przekierowanie nie jest dozwolone w trybie piaskownicy" -#: io.c:787 +#: io.c:847 #, fuzzy, c-format msgid "expression in `%s' redirection is a number" msgstr "wyrażenie w przekierowaniu `%s' ma tylko wartość numerycznÄ…" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "wyrażenie dla przekierowania `%s' ma zerowÄ… wartość Å‚aÅ„cucha" -#: io.c:796 +#: io.c:856 #, fuzzy, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2577,306 +2663,306 @@ "nazwa pliku `%s' dla przekierowania `%s' może być rezultatem logicznego " "wyrażenia" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "nie można otworzyć potoku `%s' jako wyjÅ›cia (%s)" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "nie można otworzyć potoku `%s' jako wejÅ›cia (%s)" -#: io.c:950 +#: io.c:1007 #, fuzzy, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "gettimeofday: funkcja nie jest wspierana na tej platformie" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "" "nie można otworzyć dwukierunkowego potoku `%s' jako wejÅ›cia/wyjÅ›cia (%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format msgid "cannot redirect from `%s': %s" msgstr "nie można przekierować z `%s' (%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format msgid "cannot redirect to `%s': %s" msgstr "nie można przekierować do `%s' (%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "osiÄ…gniÄ™to systemowy limit otwartych plików: rozpoczÄ™cie multipleksowania " "deskryptorów plików" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "zamkniÄ™cie `%s' nie powiodÅ‚o siÄ™ (%s)." -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "zbyt dużo otwartych potoków lub plików wejÅ›ciowych" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: drugim argumentem musi być `to' lub `from'" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" "close: `%.*s' nie jest ani otwartym plikiem, ani potokiem, ani procesem" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "zamkniÄ™cie przekierowania, które nigdy nie zostaÅ‚o otwarte" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: przekierowanie `%s' nie zostaÅ‚o otwarte z `|&', drugi argument " "zignorowany" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)" + +#: io.c:1405 #, fuzzy, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "status awarii (%d) podczas zamykania pliku `%s' (%s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "brak jawnego zamkniÄ™cia gniazdka `%s'" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "brak jawnego zamkniÄ™cia procesu pomocniczego `%s'" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "brak jawnego zamkniÄ™cia potoku `%s'" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "brak jawnego zamkniÄ™cia pliku `%s'" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format msgid "error writing standard output: %s" msgstr "błąd podczas zapisu na standardowe wyjÅ›cie (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format msgid "error writing standard error: %s" msgstr "błąd podczas zapisu na standardowe wyjÅ›cie diagnostyczne (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "opróżnienie potoku `%s' nie powiodÅ‚o siÄ™ (%s)." -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "" "opróżnienie potoku do `%s' przez proces pomocniczy nie powiodÅ‚o siÄ™ (%s)." -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "opróżnienie pliku `%s' nie powiodÅ‚o siÄ™ (%s)." -#: io.c:1610 +#: io.c:1670 #, fuzzy, c-format msgid "local port %s invalid in `/inet': %s" msgstr "nieprawidÅ‚owy lokalny port %s w `/inet'" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "nieprawidÅ‚owy lokalny port %s w `/inet'" -#: io.c:1636 +#: io.c:1696 #, fuzzy, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "informacje o zdalnym hoÅ›cie i porcie sÄ… nieprawidÅ‚owe (%s, %s)" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "informacje o zdalnym hoÅ›cie i porcie sÄ… nieprawidÅ‚owe (%s, %s)" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "Komunikacja TCP/IP nie jest wspierana" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "nie można otworzyć `%s', tryb `%s'" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format msgid "close of master pty failed: %s" msgstr "zamkniÄ™cie nadrzÄ™dnego pty nie powiodÅ‚o siÄ™ (%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format msgid "close of stdout in child failed: %s" msgstr "" "zamkniÄ™cie standardowego wyjÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™ (%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "przesuniÄ™cie podlegÅ‚ego pty na standardowe wyjÅ›cie w procesie potomnym nie " "powiodÅ‚o siÄ™ (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format msgid "close of stdin in child failed: %s" msgstr "" "zamkniÄ™cie standardowego wejÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™ (%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "przesuniÄ™cie podlegÅ‚ego pty na standardowe wejÅ›cie w procesie potomnym nie " "powiodÅ‚o siÄ™ (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format msgid "close of slave pty failed: %s" msgstr "zamkniÄ™cie podlegÅ‚ego pty nie powiodÅ‚o siÄ™ (%s)" -#: io.c:2265 +#: io.c:2325 #, fuzzy msgid "could not create child process or open pty" msgstr "nie można utworzyć procesu potomnego dla `%s' (fork: %s)" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "przesuniÄ™cie potoku na standardowe wyjÅ›cie w procesie potomnym nie powiodÅ‚o " "siÄ™ (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "przesuniÄ™cie potoku na standardowe wejÅ›cie w procesie potomnym nie powiodÅ‚o " "siÄ™ (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy msgid "restoring stdout in parent process failed" msgstr "" "odzyskanie standardowego wyjÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy msgid "restoring stdin in parent process failed" msgstr "" "odzyskanie standardowego wejÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format msgid "close of pipe failed: %s" msgstr "zamkniÄ™cie potoku nie powiodÅ‚o siÄ™ (%s)" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "`|&' nie jest wspierany" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format msgid "cannot open pipe `%s': %s" msgstr "nie można otworzyć potoku `%s' (%s)" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "nie można utworzyć procesu potomnego dla `%s' (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: otrzymano wskaźnik NULL" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "parser wejÅ›cia `%s' konfliktuje z poprzednio zainstalowanym parserem `%s'" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "parser wejÅ›cia `%s': nie powiodÅ‚o siÄ™ otwarcie `%s'" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: otrzymano wskaźnik NULL" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "otoczka wyjÅ›cia `%s' konfliktuje z poprzednio zainstalowanÄ… otoczkÄ… `%s'" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "otoczka wyjÅ›cia `%s': nie powiodÅ‚o siÄ™ otwarcie `%s'" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: otrzymano wskaźnik NULL" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2885,218 +2971,224 @@ "dwukierunkowy procesor `%s' konfliktuje z poprzednio zainstalowanym " "procesorem `%s'" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "dwukierunkowy procesor `%s' zawiódÅ‚ w otwarciu `%s'" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "plik danych `%s' jest pusty" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "nie można zarezerwować wiÄ™cej pamiÄ™ci wejÅ›ciowej" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "wieloznakowa wartość `RS' jest rozszerzeniem gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "Komunikacja IPv6 nie jest wspierana" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "zmienna Å›rodowiskowa `POSIXLY_CORRECT' ustawiona: `--posix' zostaÅ‚ włączony" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "opcja `--posix' zostanie użyta nad `--traditional'" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' użyte nad opcjÄ… `--non-decimal-data'" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "opcja `--posix' zostanie użyta nad `--characters-as-bytes'" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "uruchamianie %s setuid root może być problemem pod wzglÄ™dem bezpieczeÅ„stwa" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format msgid "cannot set binary mode on stdin: %s" msgstr "nie można ustawić trybu binarnego na standardowym wejÅ›ciu (%s)" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format msgid "cannot set binary mode on stdout: %s" msgstr "nie można ustawić trybu binarnego na standardowym wyjÅ›ciu (%s)" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format msgid "cannot set binary mode on stderr: %s" msgstr "nie można ustawić trybu binarnego na wyjÅ›ciu diagnostycznym (%s)" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "brak tekstu programu!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Użycie: %s [styl opcji POSIX lub GNU] -f plik_z_programem [--] plik ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Użycie: %s [styl opcji POSIX lub GNU] [--] %cprogram%c plik ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcje POSIX:\t\tDÅ‚ugie opcje GNU (standard):\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f program\t\t--file=program\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v zmienna=wartość\t--assign=zmienna=wartość\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Krótkie opcje:\t\tDÅ‚ugie opcje GNU: (rozszerzenia)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[plik]\t\t--dump-variables[=plik]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[plik]\t\t--debug[=plik]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'tekst-programu'\t--source='tekst-programu'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E plik\t\t\t--exec=plik\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i plikinclude\t\t--include=plikinclude\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l biblioteka\t\t--load=biblioteka\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[plik]\t\t--pretty-print[=plik]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[plik]\t\t--profile[=plik]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 #, fuzzy msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 #, fuzzy msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy msgid "" "\n" @@ -3114,7 +3206,7 @@ "dokumentacji.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3124,7 +3216,7 @@ "Program domyÅ›lnie czyta standardowe wejÅ›cie i zapisuje standardowe wyjÅ›cie.\n" "\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format msgid "" "Examples:\n" @@ -3135,7 +3227,7 @@ "\tgawk '{ suma += $1 }; END { print suma }' plik\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3154,7 +3246,7 @@ "tej Licencji lub którejÅ› z późniejszych wersji.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3169,7 +3261,7 @@ "PowszechnÄ… LicencjÄ™ PublicznÄ… GNU.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3178,11 +3270,11 @@ "Powszechnej Licencji Publicznej GNU (GNU General Public License);\n" "jeÅ›li zaÅ› nie - odwiedź stronÄ™ http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3191,165 +3283,171 @@ "%s: argument `%s' dla `-v' nie jest zgodny ze skÅ‚adniÄ… `zmienna=wartość'\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' nie jest dozwolonÄ… nazwÄ… zmiennej" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' nie jest nazwÄ… zmiennej, szukanie pliku `%s=%s'" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "nie można użyć wbudowanej w gawk `%s' jako nazwy zmiennej" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "nie można użyć funkcji `%s' jako nazwy zmiennej" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "wyjÄ…tek zmiennopozycyjny" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "fatalny błąd: wewnÄ™trzny błąd" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "fatalny błąd: wewnÄ™trzny błąd: błąd segmentacji" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "fatalny błąd: wewnÄ™trzny błąd: przepeÅ‚nienie stosu" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "brak już otwartego fd %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "nie można otworzyć zawczasu /dev/null dla fd %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "pusty argument dla opcji `-e/--source' zostaÅ‚ zignorowany" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy msgid "`--profile' overrides `--pretty-print'" msgstr "opcja `--posix' zostanie użyta nad `--traditional'" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcja musi mieć argument -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "wartość PREC `%.*s' jest nieprawidÅ‚owa" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "wartość RNDMODE `%.*s' jest nieprawidÅ‚owa" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: otrzymano drugi argument, który nie jest liczbÄ…" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +msgid "%s: received negative argument %.*s" +msgstr "log: otrzymano ujemny argument %g" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: otrzymano argument, który nie jest liczbÄ…" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: otrzymano argument, który nie jest liczbÄ…" -#: mpfr.c:816 +#: mpfr.c:874 #, fuzzy msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: mpfr.c:832 +#: mpfr.c:890 #, fuzzy, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "cmpl(%Zd): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: otrzymano argument #%d, który nie jest liczbÄ…" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d ma nieprawidÅ‚owÄ… wartość %Rg, użyto 0" -#: mpfr.c:871 +#: mpfr.c:929 #, fuzzy msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: argument #%d ujemna wartość %Rg spowoduje dziwne wyniki" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argument #%d uÅ‚amkowa wartość %Rg zostanie obciÄ™ta" -#: mpfr.c:892 +#: mpfr.c:950 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: argument #%d ujemna wartość %Zd spowoduje dziwne wyniki" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: wywoÅ‚ano z mniej niż dwoma argumentami" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: wywoÅ‚ano z mniej niż dwoma argumentami" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: wywoÅ‚ano z mniej niż dwoma argumentami" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: otrzymano argument, który nie jest liczbÄ…" -#: mpfr.c:1211 +#: mpfr.c:1269 #, fuzzy msgid "intdiv: received non-numeric first argument" msgstr "and: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: mpfr.c:1213 +#: mpfr.c:1271 #, fuzzy msgid "intdiv: received non-numeric second argument" msgstr "and: otrzymano drugi argument, który nie jest liczbÄ…" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "linia poleceÅ„:" @@ -3359,20 +3457,20 @@ msgid "could not make typed regex" msgstr "niezakoÅ„czone wyrażenie regularne" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "stary awk nie wspiera sekwencji ucieczki `\\%c'" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX nie zezwala na sekwencjÄ™ ucieczki `\\x'" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "brak liczb szesnastkowych w sekwencji ucieczki `\\x'" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3381,15 +3479,19 @@ "szesnastkowa sekwencja ucieczki \\x%.*s %d znaków prawdopodobnie nie zostaÅ‚a " "zinterpretowana jak tego oczekujesz" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sekwencja ucieczki `\\%c' potraktowana jako zwykÅ‚e `%c'" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Wykryto nieprawidÅ‚owe dane. Możliwe jest niedopasowanie pomiÄ™dzy Twoimi " "danymi a ustawieniami regionalnymi." @@ -3435,11 +3537,11 @@ msgid "internal error: %s with null vname" msgstr "wewnÄ™trzny błąd: %s z zerowym vname" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "wewnÄ™trzny błąd: builtin z fname null" -#: profile.c:1317 +#: profile.c:1318 #, fuzzy, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3448,7 +3550,7 @@ "\t# ZaÅ‚adowane rozszerzenia (-l i/lub @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, fuzzy, c-format msgid "" "\n" @@ -3458,12 +3560,12 @@ "\t# ZaÅ‚adowane rozszerzenia (-l i/lub @load)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil programu gawk, utworzony %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3472,7 +3574,7 @@ "\n" "\t# Funkcje, spis alfabetyczny\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: nieznany typ przekierowania %d" @@ -3502,41 +3604,41 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "komponent regexp `%.*s' powinien być prawdopodobnie `[%.*s]'" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "[ nie do pary" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "nieprawidÅ‚owa klasa znaku" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "skÅ‚adnia klasy znaku to [[:space:]], a nie [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "niedokoÅ„czona sekwencja ucieczki \\" -#: support/dfa.c:1425 +#: support/dfa.c:1371 #, fuzzy msgid "invalid content of \\{\\}" msgstr "NieprawidÅ‚owa zawartość \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 #, fuzzy msgid "regular expression too big" msgstr "Wyrażenie regularne jest zbyt duże" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "( nie do pary" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "nie podano skÅ‚adni" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") nie do pary" @@ -3669,16 +3771,32 @@ msgid "No previous regular expression" msgstr "Brak poprzedniego wyrażenia regularnego" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "funkcja `%s': nie można użyć nazwy funkcji jako nazwy parametru" -#: symbol.c:821 +#: symbol.c:828 #, fuzzy msgid "cannot pop main context" msgstr "nie można zdjąć głównego kontekstu" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "`L' jest bezsensowny w formatach awk; zignorowany" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "`h' jest bezsensowny w formatach awk; zignorowany" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Brak symbolu `%s' w bieżącym kontekÅ›cie" + #, fuzzy #~ msgid "fts: first parameter is not an array" #~ msgstr "asort: pierwszy argument nie jest tablicÄ…" @@ -4027,9 +4145,6 @@ #~ msgid "assignment used in conditional context" #~ msgstr "przypisanie użyte w kontekÅ›cie warunkowym" -#~ msgid "statement has no effect" -#~ msgstr "instrukcja nie ma żadnego efektu" - #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" diff -urN gawk-5.1.0/po/pt_BR.po gawk-5.1.1/po/pt_BR.po --- gawk-5.1.0/po/pt_BR.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/pt_BR.po 2021-10-27 07:58:42.000000000 +0300 @@ -1,15 +1,16 @@ # Brazilian Portuguese translation for gawk package # Traduções em português brasileiro para o pacote gawk -# Copyright (C) 2020 Free Software Foundation, Inc. +# Copyright (C) 2021 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # Juan Carlos Castro y Castro , 2003. -# Rafael Fontenelle , 2017-2020. +# Rafael Fontenelle , 2017-2021. +# msgid "" msgstr "" -"Project-Id-Version: gawk 5.0.64\n" +"Project-Id-Version: gawk 5.1.1e\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2020-03-15 16:34-0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-09-04 11:38-0300\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Brazilian Portuguese \n" @@ -17,242 +18,255 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Virtaal 1.0.0-beta1\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"X-Generator: Gtranslator 40.0\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "de %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "tentativa de usar valor escalar como vetor" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "tentativa de usar parâmetro escalar \"%s\" como um vetor" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "tentativa de usar escalar \"%s\" como um vetor" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentativa de usar vetor \"%s\" em um contexto escalar" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: índice \"%.*s\" não está no vetor \"%s\"" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentativa de usar escalar '%s[\"%.*s\"]' em um vetor" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "%s: primeiro argumento não é um vetor" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "%s: segundo argumento não é um vetor" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "%s: primeiro argumento não pode ser SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "%s: não é possível usar %s como segundo argumento" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "%s: primeiro argumento não pode ser FUNCTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%s: primeiro argumento não pode ser SYMTAB sem um segundo argumento" -#: array.c:844 +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%s: primeiro argumento não pode ser FUNCTAB sem um segundo argumento" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti: usar o mesmo vetor como origem e destino sem um terceiro " +"argumento é uma tolice." + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "%s: não é possível usar um subvetor do primeiro argumento para o segundo" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "%s: não é possível usar um subvetor do segundo argumento para o primeiro" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "\"%s\" é inválido como um nome de função" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "a função de comparação de ordem \"%s\" não está definida" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "blocos %s devem ter uma parte de ação" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "cada regra deve ter um padrão ou uma parte de ação" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" "o velho awk não oferece suporte regras múltiplas de \"BEGIN\" ou \"END\"" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "\"%s\" é uma função intrínseca, não pode ser redefinida" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "a constante de expr. reg. \"//\" parece ser um comentário C++, mas não é" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "a constante de expr. reg. \"/%s/\" parece ser um comentário C, mas não é" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valores de case duplicados no corpo do switch: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "\"default\" duplicados detectados no corpo do switch" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "\"break\" não é permitido fora um loop ou switch" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "\"continue\" não é permitido fora de um loop" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "\"next\" usado na ação %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "\"nextfile\" usado na ação %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "\"return\" usado fora do contexto de função" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "\"print\" sozinho em regra BEGIN ou END provavelmente deveria ser 'print " "\"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "\"delete\" não é permitido com SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "\"delete\" não é permitido com FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "\"delete(array)\" é uma extensão não portável do tawk" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "pipelines bidirecionais de múltiplos estágios não funcionam" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "concatenação como alvo de redirecionamento de E/S \">\" é ambíguo" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "expressão regular à direita de atribuição" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "expressão regular à esquerda de operador \"~\" ou \"!~\"" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "o velho awk não oferece suporte à palavra-chave \"in\", exceto após \"for\"" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "expressão regular à direita de comparação" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "\"getline\" não redirecionado inválido dentro da regra \"%s\"" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "\"getline\" não redirecionado indefinido dentro da ação END" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "o velho awk não oferece suporte a vetores multidimensionais" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "chamada de \"length\" sem parênteses não é portável" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "chamadas indiretas de função são uma extensão do gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "não é possível usar a variável especial \"%s\" para chamada indireta de " "função" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "tentativa de usar não função \"%s\" em chamada de função" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "expressão de índice inválida" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "aviso: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "nova linha ou fim de string inesperado" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" @@ -260,264 +274,264 @@ "arquivos-fonte/argumentos de linha de comando devem conter funções ou regras " "completas" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "não foi possível abrir arquivo-fonte \"%s\" para leitura: %s" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "" "não foi possível abrir a biblioteca compartilhada \"%s\" para leitura: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "motivo desconhecido" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "não é possível incluir \"%s\" e usá-lo como um arquivo de programa" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "arquivo-fonte \"%s\" já incluso" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "biblioteca compartilhada \"%s\" já carregada" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include é uma extensão do gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "nome de arquivo vazio após @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load é uma extensão do gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "nome de arquivo vazio após @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "texto de programa vazio na linha de comando" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "não foi possível ler arquivo-fonte \"%s\": %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "arquivo-fonte \"%s\" está vazio" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "erro: caractere inválido \"\\%03o\" no código-fonte" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "arquivo-fonte não termina em nova linha" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expressão regular inacabada termina com \"\\\" no fim do arquivo" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: modificador tawk regex \"/../%c\" não funciona no gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "modificador tawk regex \"/../%c\" não funciona no gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "expressão regular inacabada" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "expressão regular inacabada no fim do arquivo" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "uso da continuação de linha \"\\ #...\" não é portável" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "barra invertida não é o último caractere da linha" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "vetores multidimensionais são é uma extensão do gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX não permite o operador \"%s\"" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "não há suporte ao operador \"%s\" no awk antigo" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "string inacabada" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX não permite novas linhas físicas em valores de string" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "continuação de string com barra invertida não é portável" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "caractere inválido \"%c\" em expressão" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "\"%s\" é uma extensão do gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX não permite \"%s\"" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "não há suporte a \"%s\" no awk antigo" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "\"goto\" é considerado danoso!" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d é inválido como número de argumentos para %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: string literal como último argumento de substituição não tem efeito" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "terceiro parâmetro %s não é um objeto modificável" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: terceiro argumento é uma extensão do gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: segundo argumento é uma extensão do gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "uso de dcgettext(_\"...\") é incorreto: remova o sublinhado precedente" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso de dcngettext(_\"...\") é incorreto: remova o sublinhado precedente" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: constante de exp. reg. como segundo argumento não é permitido" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "função \"%s\": parâmetro \"%s\" encobre variável global" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "não foi possível abrir \"%s\" para escrita: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "enviando lista de variáveis para saída de erro padrão" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "%s: \"close\" falhou: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() chamada duas vezes!" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "houve variáveis encobertas." +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "houve variáveis encobertas" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "nome de função \"%s\" definido anteriormente" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "" "função \"%s\": não é possível usar o nome da função como nome de parâmetro" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "função \"%s\": não é possível usar a variável especial \"%s\" como um " "parâmetro de função" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "função \"%s\": parâmetro \"%s\" não pode conter um espaço de nome" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "função \"%s\": parâmetro nº %d, \"%s\", duplica parâmetro nº %d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "função \"%s\" chamada, mas nunca definida" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "função \"%s\" definida, mas nunca chamada diretamente" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "constante com expr. reg. para parâmetro nº %d retorna valor booleano" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -526,47 +540,51 @@ "função \"%s\" chamada com espaço entre o nome e o \"(\",\n" "ou usada como uma variável ou um vetor" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "tentativa de divisão por zero" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentativa de divisão por zero em \"%%\"" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "não é possível atribuir um valor ao resultado de uma expressão de campo pós-" "incremento" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "alvo de atribuição inválido (código de operação %s)o" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "declaração não tem efeito" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" "identificador %s: nomes qualificados não são permitidos no modo POSIX / " "tradicional" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" "identificador %s: separador de espaço de nome é dois caracteres de dois " "pontos, e não um" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "identificador qualificado \"%s\" está malformado" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" @@ -574,14 +592,14 @@ "identificador \"%s\": separador de espaço de nome só pode aparecer uma vez " "em um nome qualificado" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" "o uso de identificador reservado \"%s\" como um espaço de nome não é " "permitido" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " @@ -590,11 +608,11 @@ "o uso de identificador reservado \"%s\" como segundo componente de um nome " "qualificado não é permitido" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "@namespace é uma extensão do gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -614,8 +632,8 @@ msgid "standard error" msgstr "saída padrão de erro" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: recebeu argumento não numérico" @@ -654,7 +672,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: \"%.*s\" não é um arquivo aberto, pipe ou coprocesso" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "%s: recebeu primeiro argumento não string" @@ -672,44 +690,44 @@ msgid "`length(array)' is a gawk extension" msgstr "\"length(array)\" é uma extensão do gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "%s: recebeu argumento não string" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "%s: recebeu argumento negativo %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: deve usar \"count$\" em todos os formatos ou nenhum" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "largura de campo é ignorada para o especificador \"%%\"" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precisão é ignorada para o especificador \"%%\"" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "largura de campo e precisão são ignorados para o especificador \"%%\"" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: \"$\" não é permitido formatos awk" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "fatal: índice de argumento com \"$\" deve ser > 0" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" @@ -717,141 +735,127 @@ "fatal: índice de argumento %ld maior que número total de argumentos " "fornecidos" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: \"$\" não é permitido depois de ponto no formato" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: nenhum \"$\" fornecido para tamanho ou precisão de campo posicional" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "\"l\" não faz sentido em formatos awk; ignorado" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "fatal: \"l\" não é permitido em formatos POSIX awk" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "\"L\" não faz sentido em formatos awk; ignorado" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: \"L\" não é permitido em formatos POSIX awk" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "\"h\" não faz sentido em formatos awk; ignorado" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: \"h\" não é permitido em formatos POSIX awk" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "\"%c\" não faz sentido em formatos awk; ignorado" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "fatal: \"%c\" não é permitido em formatos POSIX awk" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: valor %g é grande demais para formato \"%%c\"" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: valor %g não é um caractere amplamente válido" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: valor %g está fora da faixa para formato \"%%%c\"" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: valor %s está fora da faixa para formato \"%%%c\"" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "formato %%%c é de padrão POSIX, mas não portável para outros awks" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorando caractere especificador de formato \"%c\" desconhecido: nenhum " "argumento convertido" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: argumentos insuficientes para satisfazer a string de formato" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ acabou para este aqui" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: especificador de formato não tem letra de controle" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "excesso de argumentos fornecidos para a string de formato" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: nenhum argumento" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: nenhum argumento" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf: tentativa de escrever para lado de escrita fechado de pipe " "bidirecional" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: comprimento %g não é >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: comprimento %g não é >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: comprimento não inteiro %g será truncado" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: comprimento %g grande demais para indexação, truncando para %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: posição inicial %g é inválida, usando 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: posição inicial não inteira %g será truncada" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: string origem tem comprimento zero" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: posição inicial %g está além do fim da string" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -859,157 +863,162 @@ "substr: comprimento %g a partir da posição inicial %g excede tamanho do 1º " "argumento (%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: valor de formato em PROCINFO[\"strftime\"] possui tipo numérico" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "%s: recebeu segundo argumento não numérico" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: segundo argumento menor que 0 ou grande demais para time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: segundo argumento não é um vetor para time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: recebeu string de formato vazia" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: pelo menos um dos valores está fora da faixa padrão" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "função \"system\" não é permitido no modo sandbox" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print: tentativa de escrever para lado de escrita fechado de pipe " "bidirecional" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referência a campo não inicializado \"$%d\"" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "%s: recebeu primeiro argumento não numérico" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: terceiro argumento não é um vetor" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s: não é possível usar %s como terceiro argumento" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: terceiro argumento \"%.*s\" tratado como 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: pode ser chamado indiretamente somente com dois argumentos" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "chamada indireta para %s requer pelo menos dois argumentos" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): valores negativos não são permitidos" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f) valores fracionários serão truncados" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): deslocamento excessivo dará resultados estranhos" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): valores negativos não são permitidos" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): valores fracionários serão truncados" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): deslocamento excessivo dará resultados estranhos" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "%s: chamada com menos de dois argumentos" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "%s: argumento %d é não numérico" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: o argumento %d com valor negativo %g não é permitido" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): valor negativo não é permitida" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): valores fracionários serão truncados" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" -msgstr "dcgettext: \"%s\" não é uma categoria de \"locale\" válida" +msgstr "dcgettext: \"%s\" não é uma categoria de localidade válida" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: terceiro argumento não é um vetor" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: tentativa de divisão por zero" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof: segundo argumento não é um vetor" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" "typeof detectou combinação inválida de flags \"%s\"; por favor, faça um " -"relato de erro." +"relato de erro" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: tipo de argumento inválido \"%s\"" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: tipo de argumento desconhecido \"%s\"" @@ -1019,451 +1028,447 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "não é possível adicionar um novo arquivo (%.*s) a ARGV no modo sandbox" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Digite instruções do (g)awk. Termine-as com o comando \"end\"\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "número de quadro inválido: %d" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "info: opção inválida - \"%s\"" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." -msgstr "source \"%s\": já carregado." +msgid "source: `%s': already sourced" +msgstr "source \"%s\": já carregado" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." -msgstr "save \"%s\": comando não permitido." +msgid "save: `%s': command not permitted" +msgstr "save \"%s\": comando não permitido" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "Não foi possível usar o comando \"commands\" para comandos de breakpoint/" "watchpoint" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "nenhum breakpoint/watchpoint foi definido ainda" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "número de breakpoint/watchpoint inválido" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Digite comandos para quando %s %d for atingido, um por linha.\n" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "Termine com o comando \"end\"\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "\"end\" válido apenas no comando \"commands\" ou \"eval\"" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "\"silent\" válido apenas no comando \"commands\"" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "trace: opção inválida - \"%s\"" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: número de breakpoint/watchpoint inválido" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "argumentos não é uma string" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "option: parâmetro inválido - \"%s\"" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "função inexistente - \"%s\"" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "enable: opção inválida - \"%s\"" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "especificação de faixa inválida: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "valor não numérico para o número de campo" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "valor não numérico localizado, numérico esperado" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "valor inteiro não zero" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - exibe rastro de todos quadros ou os N mais internos (mais " -"externos, se N < 0)." +"externos, se N < 0)" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -"break [[arquivo:]N|função] - define o breakpoint na localização especificada." +"break [[arquivo:]N|função] - define o breakpoint na localização especificada" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -"clear [[arquivo:]N|função] - exclui breakpoints definidos anteriormente." +"clear [[arquivo:]N|função] - exclui breakpoints definidos anteriormente" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [núm] - inicia uma lista de comandos para serem executados em um " -"breakpoint(watchpoint) atingido." +"breakpoint(watchpoint) atingido" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -"condition núm [expr] - deinfe ou limpa condição de breakpoint ou watchpoint." +"condition núm [expr] - define ou limpa condição de breakpoint ou watchpoint" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [QTDE] - continua o programa sendo depurado." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [QTDE] - continua o programa sendo depurado" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "" -"delete [breakpoints] [intervalo] - exclui os breakpoints especificados." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "delete [breakpoints] [intervalo] - exclui os breakpoints especificados" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -"disable [breakpoints] [intervalo] - desabilita os breakpoints especificados." +"disable [breakpoints] [intervalo] - desabilita os breakpoints especificados" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" "display [var] - exibe o valor da variável toda vez em que o programa é " -"interrompido." +"interrompido" -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] - move N quadros para baixo na pilha." +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [N] - move N quadros para baixo na pilha" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" -"dump [arquivo] - despeja instruções para arquivo ou saída padrão (stdout)." +"dump [arquivo] - despeja instruções para arquivo ou saída padrão (stdout)" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" "enable [once|del] [breakpoints] [intervalo] - habilita breakpoints " -"especificados." - -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end - termina uma lista de comandos ou instruções do awk." - -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval stmt|[p1, p2, ...] - avalia instruções do awk." - -#: command.y:847 -msgid "exit - (same as quit) exit debugger." -msgstr "exit - (igual a \"quit\") sai do depurador." - -#: command.y:849 -msgid "finish - execute until selected stack frame returns." -msgstr "finish - executa até o quadro de pilha selecionado ser retornado." +"especificados" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - seleciona ou exibe o quadro número N." +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end - termina uma lista de comandos ou instruções do awk" + +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval stmt|[p1, p2, ...] - avalia instruções do awk" + +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit - (igual a \"quit\") sai do depurador" + +#: command.y:850 +msgid "finish - execute until selected stack frame returns" +msgstr "finish - executa até o quadro de pilha selecionado ser retornado" + +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] - seleciona ou exibe o quadro número N" + +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" +msgstr "help [comando] - exibe a lista de comandos ou explicação de um comando" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." -msgstr "" -"help [comando] - exibe a lista de comandos ou explicação de um comando." - -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" "ignore N QTDE - define quantidade a ser ignorada do breakpoint número N para " -"QTDE." +"QTDE" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" "list [-|+|[arquivo:]nº linha|função|intervalo] - lista de linha(s) " -"especificada." +"especificada" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." -msgstr "next [QTDE] - avança programa, seguindo pelas chamadas de sub-rotinas." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" +msgstr "next [QTDE] - avança programa, seguindo pelas chamadas de sub-rotinas" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -"nexti [QTDE] - avança uma instrução, mas segue pelas chamadas de sub-rotinas." +"nexti [QTDE] - avança uma instrução, mas segue pelas chamadas de sub-rotinas" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [nome[=valor]] - define ou exibe opções de depuração." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [nome[=valor]] - define ou exibe opções de depuração" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." -msgstr "print var [var] - exibe valor de uma variável ou vetor." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "print var [var] - exibe valor de uma variável ou vetor" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." -msgstr "printf formato, [arg], ... - saída formatada." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf formato, [arg], ... - saída formatada" -#: command.y:871 -msgid "quit - exit debugger." -msgstr "quit - sai do depurador." +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit - sai do depurador" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" -"return [valor] - faz o quadro da pilha selecionado retornar seu chamador." +"return [valor] - faz o quadro da pilha selecionado retornar seu chamador" -#: command.y:875 -msgid "run - start or restart executing program." -msgstr "run - inicia ou reinicia execução do programa." +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run - inicia ou reinicia execução do programa" -#: command.y:878 -msgid "save filename - save commands from the session to file." -msgstr "save arquivo - salva comandos a partir da sessão para o arquivo." +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save arquivo - salva comandos a partir da sessão para o arquivo" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." -msgstr "set var = valor - atribui valor para uma variável escalar." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" +msgstr "set var = valor - atribui valor para uma variável escalar" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - suspende mensagem usual quando interrompido em um breakpoint/" -"watchpoint." +"watchpoint" -#: command.y:885 -msgid "source file - execute commands from file." -msgstr "source arquivo - executa comandos a partir do arquivo." +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source arquivo - executa comandos a partir do arquivo" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -"step [QTDE] - avança programa até ele atingir uma linha fonte diferente." +"step [QTDE] - avança programa até ele atingir uma linha fonte diferente" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [QTDE] - avança exatamente uma instrução." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [QTDE] - avança exatamente uma instrução" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[arquivo:]N|função] - define um breakpoint temporário." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[arquivo:]N|função] - define um breakpoint temporário" -#: command.y:893 -msgid "trace on|off - print instruction before executing." -msgstr "trace on|off - exibe instrução antes da execução." +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off - exibe instrução antes da execução" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "" -"undisplay [N] - remove variáveis a partir da lista automática de exibição." +"undisplay [N] - remove variáveis a partir da lista automática de exibição" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[arquivo:]N|função] - executa até o programa atingir uma linha " -"diferente ou linha N dentro do quadro atual." +"diferente ou linha N dentro do quadro atual" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] - remove variáveis da lista de monitoramento." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] - remove variáveis da lista de monitoramento" -#: command.y:901 -msgid "up [N] - move N frames up the stack." -msgstr "up [N] - move N quadros para cima na pilha." +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [N] - move N quadros para cima na pilha" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." -msgstr "watch var - define um watchpoint para uma variável." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch var - define um watchpoint para uma variável" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] - (igual a \"backtrace\") exibe rastro de todos quadros ou os N " -"mais internos (mais externos, se N < 0)." +"mais internos (mais externos, se N < 0)" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "erro: " -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "não foi possível ler o comando: %s\n" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "não foi possível ler: %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "caractere inválido no comando" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "comando desconhecido - \"%.*s\", tente \"help\"" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "caractere inválido" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "comando indefinido: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "" -"define ou mostra o número de linhas para manter no arquivo de histórico." +"define ou mostra o número de linhas para manter no arquivo de histórico" #: debug.c:259 -msgid "set or show the list command window size." -msgstr "define ou mostra o tamanho da janela do comando \"list\"." +msgid "set or show the list command window size" +msgstr "define ou mostra o tamanho da janela do comando \"list\"" #: debug.c:261 -msgid "set or show gawk output file." -msgstr "define ou mostra o arquivo de saída do gawk." +msgid "set or show gawk output file" +msgstr "define ou mostra o arquivo de saída do gawk" #: debug.c:263 -msgid "set or show debugger prompt." -msgstr "define ou mostra o prompt de depuração." +msgid "set or show debugger prompt" +msgstr "define ou mostra o prompt de depuração" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" "define/remove definição ou mostra o salvamento do comando \"history" -"\" (valor=on|off)." +"\" (valor=on|off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "" -"define/remove definição ou mostra o salvamento de opções (valor=on|off)." +"define/remove definição ou mostra o salvamento de opções (valor=on|off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "" -"define/remove definição ou mostra o rastreamento de instrução (valor=on|off)." +"define/remove definição ou mostra o rastreamento de instrução (valor=on|off)" #: debug.c:358 -msgid "program not running." -msgstr "o programa não está em execução." +msgid "program not running" +msgstr "o programa não está em execução" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "arquivo-fonte \"%s\" está vazio.\n" -#: debug.c:493 -msgid "no current source file." -msgstr "nenhum arquivo-fonte atual." +#: debug.c:502 +msgid "no current source file" +msgstr "nenhum arquivo-fonte atual" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "não foi possível localizar o arquivo-fonte \"%s\": %s" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -"AVISO: o arquivo-fonte \"%s\" foi modificado após a compilação do programa.\n" +"aviso: o arquivo-fonte \"%s\" foi modificado após a compilação do programa.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "número de linha %d fora da faixa; \"%s\" possui %d linhas" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "fim de arquivo inesperado enquanto lia o arquivo \"%s\", linha %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" "o arquivo fonte \"%s\" foi modificado após o início da execução do programa" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Arquivo-fonte atual: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Número de linhas: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Arquivo-fonte (linhas): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1471,54 +1476,54 @@ "Número Exib Habilit Localização\n" "\n" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tnº de acertos = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignorar próximos %ld acertos(s)\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tcondição de parada: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tcomandos:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Quadro atual: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Chamado pelo quadro: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Chamador do quadro: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Nenhum em main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Nenhum argumento.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Nenhum local.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1526,7 +1531,7 @@ "Todas as variáveis definidas:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1534,7 +1539,7 @@ "Todas as funções definidas:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1542,7 +1547,7 @@ "Variáveis exibidas automaticamente:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1550,389 +1555,394 @@ "Variáveis monitoradas:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "nenhum símbolo \"%s\" no contexto atual\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "\"%s\" não é um vetor\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = campo não inicializado\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "o vetor \"%s\" está vazio\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" -msgstr "[\"%.*s\"] não está no vetor \"%s\"\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "O índice \"%.*s\" não está no vetor \"%s\"\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "'%s[\"%.*s\"]' não está no vetor\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "\"%s\" não é uma variável escalar" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "tentativa de usar vetor '%s[\"%.*s\"]' em um contexto escalar" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "tentativa de usar vetor '%s[\"%.*s\"]' como um vetor" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "\"%s\" é uma função" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "o watchpoint %d é incondicional\n" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" -msgstr "Nenhum item de exibição com número %ld" +msgid "no display item numbered %ld" +msgstr "nenhum item de exibição com número %ld" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" -msgstr "Nenhum item monitorado com número %ld" +msgid "no watch item numbered %ld" +msgstr "nenhum item monitorado com número %ld" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" -msgstr "%d: [\"%.*s\"] não está no vetor \"%s\"\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: índice \"%.*s\" não está no vetor \"%s\"\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "tentativa de usar valor escalar como vetor" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Watchpoint %d excluído porque parâmetro está fora do escopo.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Exibição %d excluída porque parâmetro está fora do escopo.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " no arquivo \"%s\" na linha %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " em \"%s\":%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tem " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Mais quadros de pilhas a seguir ...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "número de quadro inválido" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: breakpoint %d (habilitado, ignora próximos %ld acertos), também " "definido em %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Nota: breakpoint %d (habilitado), também definido em %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: breakpoint %d (desabilitado, ignora próximos %ld acertos), também " "definido em %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Nota: breakpoint %d (desabilitado), também definido em %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpoint %d definido no arquivo \"%s\", linha %d\n" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "Não foi possível definir breakpoint no arquivo \"%s\"\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" -msgstr "número de linha %d no arquivo \"%s\" fora do intervalo" +msgid "line number %d in file `%s' is out of range" +msgstr "número de linha %d no arquivo \"%s\" está fora do intervalo" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "erro interno: não foi possível localizar regra\n" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "não foi possível definir breakpoint em \"%s\":%d\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "não foi possível definir breakpoint na função \"%s\"\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "breakpoint %d definido no arquivo \"%s\", linha %d é incondicional\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "número de linha %d no arquivo \"%s\" fora do intervalo" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Excluído breakpoint %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Nenhum breakpoint(s) na entrada para a função \"%s\"\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Nenhum breakpoint no arquivo \"%s\", linha nº %d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "número de breakpoint inválido" # o código-fonte aceita tradução da opção 'y'; vide msgid de "y" -- Rafael -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Excluir todos breakpoints? (s ou n) " # referente à resposta yes/sim em um prompt interativo -- Rafael -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "s" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Vai ignorar próximos %ld encontro(s) de breakpoint %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Vai parar na próxima vez que o breakpoint %d for atingido.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Só é possível depurar programas fornecidos com a opção \"-f\".\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Falha ao reiniciar o depurador" # o código-fonte aceita tradução da opção 'y'; vide msgid "y" -- Rafael -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Programa já está em execução. Reiniciar desde o começo (s/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Programa não reiniciado\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "erro: não foi possível reiniciar, operação não permitida\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "" "erro (%s): não foi possível reiniciar, ignorando o resto dos comandos\n" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" -msgstr "Iniciando programa: \n" +msgid "Starting program:\n" +msgstr "Iniciando programa:\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Programa foi terminado abnormalmente com valor de saída: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Programa foi terminado normalmente com valor de saída: %d\n" # o código-fonte aceita tradução da opção 'y'; vide msgid "y" -- Rafael -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "O programa está em execução. Sair mesmo assim (s/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Não parado em qualquer breakpoint; argumento ignorado.\n" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." -msgstr "número de breakpoint inválido %d." +msgid "invalid breakpoint number %d" +msgstr "número de breakpoint inválido %d" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Vai ignorar próximos %ld encontros de breakpoint %d.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "\"finish\" não tem sentido no arquivo mais externo do main()\n" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "Executa até retornar de " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "\"return\" não tem sentido no arquivo mais externo do main()\n" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "" "não foi possível encontrar a localização especificada na função \"%s\"\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "linha fonte inválida %d no arquivo \"%s\"" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "" "não foi possível encontrar a localização %d especificada no arquivo \"%s\"\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "elemento não está no vetor\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "variável sem tipo\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Parando em %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "\"finish\" não tem sentido com pulo não local \"%s\"\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "\"until\" não tem sentido com pulo não local \"%s\"\n" # o código-fonte aceita tradução da opção 'q'; vide msgid "q" -- Rafael #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t----[Enter] para continuar ou [q] + [Enter] para sair---" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] não está no vetor \"%s\"" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "enviando a saída para stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "número inválido" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "\"%s\" não permitido no contexto atual; instrução ignorada" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "\"return\" não permitido no contexto atual; instrução ignorada" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" -msgstr "Nenhum símbolo \"%s\" no contexto atual" +msgid "no symbol `%s' in current context" +msgstr "nenhum símbolo \"%s\" no contexto atual" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "tipo de nodo desconhecido %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "código de operação inválido %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "código de operação %s não é um operador ou palavra-chave" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "estouro de buffer em genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1943,71 +1953,71 @@ "\t# Pilha de Chamadas de Função:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "\"IGNORECASE\" é uma extensão do gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "\"BINMODE\" é uma extensão do gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "valor de BINMODE \"%s\" é inválido, tratado como 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "especificação de \"%sFMT\" inválida \"%s\"" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "desativando \"--lint\" devido a atribuição a \"LINT\"" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referência a argumento não inicializado \"%s\"" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referência a variável não inicializada \"%s\"" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "tentativa de referência a campo a partir de valor não numérico" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "tentativa de referência a campo a partir de string nula" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "tentativa de acessar campo %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referência a campo não inicializado \"$%ld\"" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "função \"%s\" chamada com mais argumentos que os declarados" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo inesperado \"%s\"" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "tentativa de divisão por zero em \"/=\"" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "tentativa de divisão por zero em \"%%=\"" @@ -2098,79 +2108,79 @@ msgid "dynamic loading of libraries is not supported" msgstr "sem suporte a carregamento dinâmico da bibliotecas" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: não foi possível ler link simbólico \"%s\"" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "stat: primeiro argumento não é uma string" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "stat: segundo argumento não é um vetor" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: parâmetros inválidos" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: não foi possível criar a variável %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "Este sistema não possui suporte a fts" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: não foi possível criar vetor, memória insuficiente" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: não foi possível definir elemento" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: não foi possível definir elemento" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: não foi possível definir elemento" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: não foi possível criar vetor" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: não foi possível definir elemento" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: chamada com número incorreto de argumentos, esperava 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "fts: primeiro argumento não é um vetor" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "fts: segundo argumento não é um número" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "fts: terceiro argumento não é um vetor" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: não foi possível nivelar o vetor\n" # A flag tentou passar despercebida, mas falhou e recebeu um "nyah" zombando -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignorando flag sorrateira FTS_NOSTAT; nã, nã, não." @@ -2312,7 +2322,7 @@ msgid "chr: first argument is not a number" msgstr "chr: primeiro argumento não é um número" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir falhou: %s" @@ -2400,179 +2410,184 @@ msgid "sleep: not supported on this platform" msgstr "sleep: sem suporte nesta plataforma" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "registro de entrada grande demais" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF definido para valor negativo" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "o decremento de NF não é portável para muitas versões awk" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "o acesso a campos de uma regra END não pode ser portável" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: quarto argumento é uma extensão do gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: quarto argumento não é um vetor" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: não é possível usar %s como quarto argumento" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: segundo argumento não é um vetor" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "split: não é possível usar o mesmo vetor para segundo e quarto args" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: não é possível usar um subvetor do segundo arg para o quarto arg" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: não é possível usar um subvetor do quarto arg para o segundo arg" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "split: string nula para segundo argumento é uma extensão não padrão" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: quarto argumento não é um vetor" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: segundo argumento não é um vetor" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: terceiro argumento não é um vetor" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: não é possível usar o mesmo vetor para segundo e quarto argumentos" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: não é possível usar um subvetor do segundo arg para o quarto arg" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: não é possível usar um subvetor do quarto arg para o segundo arg" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "\"FIELDWIDTHS\" é uma extensão do gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "\"*\" deve ser o último designador em FIELDWIDTHS" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "valor FIELDWIDTHS inválido, para campo %d, próximo a \"%s\"" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "string nula para \"FS\" é uma extensão do gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "o velho awk não oferece suporte a expr. reg. como valor de \"FS\"" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "\"FPAT\" é uma extensão do gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: recebeu código de retorno nulo" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: não está no modo MPFR" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: sem suporte a MPFR" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: tipo de número inválido \"%d\"" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func: recebido parâmetro name_space NULO" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" "node_to_awk_value: detectada combinação inválida de flags numéricas \"%s\"; " -"por favor, faça um relato de erro." +"por favor, faça um relato de erro" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: recebeu nó nulo" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: recebeu valor nulo" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value detectou combinação inválida de flags \"%s\"; por favor, " -"faça um relato de erro." +"faça um relato de erro" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: recebeu vetor nulo" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: recebeu índice nulo" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "" "api_flatten_array_typed: não foi possível converter o índice %d para %s" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: não foi possível converter o valor %d para %s" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: sem suporte a MPFR" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "não foi possível localizar o fim da regra BEGINFILE" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "" @@ -2583,31 +2598,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "o argumento de linha de comando \"%s\" é um diretório: ignorado" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "não foi possível abrir arquivo \"%s\" para leitura: %s" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "fechamento do descritor %d (\"%s\") falhou: %s" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "`%.*s' usado para arquivo de entrada e para arquivo de saída" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "`%.*s' usado para arquivo de entrada e pipe de entrada" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "`%.*s' usado para arquivo de entrada e pipe bidirecional" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "`%.*s' usado para arquivo de entrada e pipe de saída" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "mistura desnecessária de \">\" e \">>\" para arquivo \"%.*s\"" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "`%.*s' usado para pipe de entrada e arquivo de saída" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "`%.*s' usado para arquivo de saída e pipe de saída" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "`%.*s' usado para pipe de saída e pipe bidirecional" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "`%.*s' usado para pipe de entrada e pipe de saída" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "`%.*s' usado para pipe de entrada e pipe bidirecional" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "`%.*s' usado para pipe de saída e pipe bidirecional" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "redirecionamento não permitido no modo sandbox" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "expressão no redirecionamento \"%s\" é um número" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "expressão para o redirecionamento \"%s\" tem valor nulo na string" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2615,27 +2685,22 @@ "nome de arquivo \"%.*s\" para redirecionamento \"%s\" pode ser resultado de " "expressão lógica" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "mistura desnecessária de \">\" e \">>\" para arquivo \"%.*s\"" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file não pode criar pipe \"%s\" com fd %d" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "não foi possível abrir pipe \"%s\" para saída: %s" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "não foi possível abrir pipe \"%s\" para entrada: %s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2643,248 +2708,253 @@ "sem suporte à criação de soquete de get_file nesta de plataforma para \"%s\" " "com fd %d" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "não foi possível abrir pipe bidirecional \"%s\" para entrada/saída: %s" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "não foi possível redirecionar de \"%s\": %s" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "não foi possível redirecionar para \"%s\": %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "alcançado limite do sistema para arquivos abertos; começando a multiplexar " "descritores de arquivos" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." -msgstr "fechamento de \"%s\" falhou: %s." +msgid "close of `%s' failed: %s" +msgstr "fechamento de \"%s\" falhou: %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "excesso de pipes ou arquivos de entrada abertos" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: segundo argumento deve ser \"to\" ou \"from\"" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: \"%.*s\" não é um arquivo aberto, pipe ou coprocesso" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "fechamento de redirecionamento que nunca foi aberto" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: redirecionamento \"%s\" não foi aberto com \"|&\", segundo argumento " "ignorado" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "status de falha (%d) ao fechar pipe de \"%s\": %s" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "status de falha (%d) ao fechar pipe bidirecional de \"%s\": %s" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "status de falha (%d) ao fechar arquivo de \"%s\": %s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "fechamento explícito do soquete \"%s\" não fornecido" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "fechamento explícito do coprocesso \"%s\" não fornecido" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "fechamento explícito do pipe \"%s\" não fornecido" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "fechamento explícito do arquivo \"%s\" não fornecido" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: não foi possível descarregar a saída padrão: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: não foi possível descarregar a saída padrão de erros: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "erro ao escrever na saída padrão: %s" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "erro ao escrever na saída padrão de erros: %s" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." -msgstr "descarga de pipe de \"%s\" falhou: %s." +msgid "pipe flush of `%s' failed: %s" +msgstr "descarga de pipe de \"%s\" falhou: %s" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." -msgstr "descarga de coprocesso de pipe para \"%s\" falhou: %s." +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "descarga de coprocesso de pipe para \"%s\" falhou: %s" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." -msgstr "descarga de arquivo de \"%s\" falhou: %s." +msgid "file flush of `%s' failed: %s" +msgstr "descarga de arquivo de \"%s\" falhou: %s" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "porta local %s inválida em \"/inet\": %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "porta local %s inválida em \"/inet\"" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "informação de host e porta remotos (%s, %s) inválida: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "informação de host e porta remotos (%s, %s) inválida" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "Não há suporte a comunicações TCP/IP" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "não foi possível abrir \"%s\", modo \"%s\"" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "falha ao fechar pty mestre: %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "falha ao fechar stdout em filho: %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "falha ao mover pty escrava para stdout em filho (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "falha ao fechar stdin em filho: %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "falha ao mover pty escrava para stdin em filho (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "falha ao fechar pty escrava: %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "não foi possível criar processo filho ou abrir pty" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "falha ao mover pipe para stdout em filho (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "falha ao mover pipe para stdin em filho (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "falha ao restaurar stdout em processo pai" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "falha ao restaurar stdin em processo pai" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "falha ao fechar pipe: %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "sem suporte a \"|&\"" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "não foi possível abrir pipe \"%s\": %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "não foi possível criar processo filho para \"%s\" (fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" "getline: tentativa de ler de lado de leitura fechado de pipe bidirecional" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: recebido ponteiro NULL" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "o analisador de entrada \"%s\" conflita com outro analisador de entrada " "previamente instalado \"%s\"" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "analisador de entrada \"%s\": falha ao abrir \"%s\"" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: recebido ponteiro NULL" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2892,16 +2962,16 @@ "wrapper de saída \"%s\" conflita com outro wrapper previamente instalado \"%s" "\"" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "wrapper de saída \"%s\": falha ao abrir \"%s\"" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: recebido ponteiro NULL" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2910,212 +2980,216 @@ "processador bidirecional \"%s\" conflita com processador bidirecional " "previamente instalado \"%s\"" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "processador bidirecional \"%s\" falhou ao abrir \"%s\"" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "arquivo de dados \"%s\" está vazio" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "não foi possível alocar mais memória de entrada" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "valor de múltiplos caracteres para \"RS\" é uma extensão do gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "Não há suporte a comunicação IPv6" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "variável de ambiente \"POSIXLY_CORRECT\" definida: ligando \"--posix\"" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "\"--posix\" sobrepõe \"--traditional\"" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "\"--posix\"/\"--traditional\" sobrepõe \"--non-decimal-data\"" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "\"--posix\" sobrepõe \"--characters-as-bytes\"" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "executar %s com setuid root pode ser um problema de segurança" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "não foi possível definir modo binário em stdin: %s" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "não foi possível definir modo binário em stdout: %s" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "não foi possível definir modo binário em stderr: %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "nenhum texto de programa!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Uso: %s [opções estilo POSIX ou GNU] -f arqprog [--] arquivo ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Uso: %s [opções estilo POSIX ou GNU] [--] %cprograma%c arquivo ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opções POSIX: \t\tOpções longas GNU: (padrão)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f arqprog \t\t--file=arqprog\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opções curtas: \t\tOpções longas GNU: (extensões)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[arquivo]\t\t--dump-variables[=arquivo]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[arquivo]\t\t--debug[=arquivo]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e \"texto-programa\"\t--source=\"texto-programa\"\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E arquivo\t\t--exec=arquivo\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i arq-include\t\t--include=arq-include\n" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-I\t\t\t--trace\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l biblioteca\t\t--load=biblioteca\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[arquivo]\t\t--pretty-print[=arquivo]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[arquivo]\t\t--profile[=arquivo]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z nome-locale\t\t--locale=nome-locale\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3137,7 +3211,7 @@ "Para relatar erros de tradução, veja como em\n" "http://translationproject.org/team/pt_BR.html\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3147,7 +3221,7 @@ "Por padrão, ele lê a entrada padrão e escreve na saída padrão.\n" "\n" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -3158,7 +3232,7 @@ "\t%s '{ soma += $1 }; END { print soma }' arquivo\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3177,7 +3251,7 @@ "Licença como (a seu critério) qualquer versão mais nova.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3192,7 +3266,7 @@ "detalhes.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3200,11 +3274,11 @@ "Você deve ter recebido uma cópia da Licença Pública Geral GNU\n" "junto com este programa; se não http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft não define FS com tab no awk POSIX" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3213,160 +3287,165 @@ "%s: argumento \"%s\" para \"-v\" não está na forma \"var=valor\"\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "\"%s\" não é um nome legal de variável" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "\"%s\" não é um nome de variável, procurando pelo arquivo \"%s=%s\"" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "não é possível usar o \"%s\" intrínseco do gawk como nome de variável" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "não foi possível usar a função \"%s\" como nome de variável" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "exceção de ponto flutuante" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "erro fatal: erro interno" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "erro fatal: erro interno: falha de segmentação" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "erro fatal: erro interno: estouro de pilha" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "nenhum descritor pré-aberto %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "não foi possível pré-abrir /dev/null para descritor %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "argumento vazio para \"-e/--source\" ignorado" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "\"--profile\" sobrepõe \"--pretty-print\"" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignorado: suporte a MPFR/GMP não compilado" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opção desconhecida \"-W %s\", ignorada\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opção exige um argumento -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "valor de PREC \"%.*s\" é inválido" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" -msgstr "valor de RNDMODE \"%.*s\" é inválido" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "valor de ROUNDMODE \"%.*s\" é inválido" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: recebeu primeiro argumento não numérico" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: recebeu segundo argumento não numérico" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s: recebeu argumento negativo %.*s" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: recebeu argumento não numérico" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: recebeu primeiro argumento não numérico" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): valor negativo não é permitida" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "comp(%Rg): valor fracionário será truncado" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): valores negativos não são permitidos" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: recebeu argumento não numérico nº %d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argumento nº %d possui valor inválido %Rg, usando 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: o argumento nº %d com valor negativo %Rg não é permitido" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argumento nº %d com valor fracionário %Rg será truncado" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: o argumento nº %d com valor negativo %Zd não é permitido" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: chamada com menos de dois argumentos" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: chamada com menos de dois argumentos" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: chamada com menos de dois argumentos" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: recebeu argumento não numérico" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: recebeu primeiro argumento não numérico" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: recebeu segundo argumento não numérico" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "lin. de com.:" @@ -3375,20 +3454,20 @@ msgid "could not make typed regex" msgstr "não foi possível fazer a expressão regular tipada" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "o velho awk não oferece suporte à sequência de escape \"\\%c\"" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX não permite escapes do tipo \"\\x\"" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "nenhum dígito hexa na sequência de escape \"\\x\"" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3397,18 +3476,18 @@ "escape hexa \\x%.*s de %d caracteres provavelmente não interpretado na forma " "que você esperava" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sequência de escape \"\\%c\" tratada como \"%c\" normal" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Dados com múltiplos bytes inválidos detectados. Pode haver uma " -"incompatibilidade entre seus dados e seu \"locale\"." +"incompatibilidade entre seus dados e sua localidade" #: posix/gawkmisc.c:177 #, c-format @@ -3456,11 +3535,11 @@ msgid "internal error: %s with null vname" msgstr "erro interno: %s com vname nulo" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "erro interno: intrínseco com fname nulo" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3469,7 +3548,7 @@ "%s# Extensões carregadas (-l e/ou @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3480,12 +3559,12 @@ "# Arquivos incluídos (-i e/ou @include)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil gawk, criado %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3494,7 +3573,7 @@ "\n" "\t# Funções, listadas alfabeticamente\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo de redirecionamento desconhecido %d" @@ -3527,39 +3606,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "componente de expr. reg. \"%.*s\" deve provavelmente ser \"[%.*s]\"" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "[ sem correspondente" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "classe de caracteres inválida" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "a sintaxe de classe de caracteres é [[:space:]], e não [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "escape \\ não terminado" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "conteúdo inválido de \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "expressão regular grande demais" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "( sem correspondente" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "nenhuma sintaxe especificada" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") sem correspondente" @@ -3691,16 +3770,31 @@ msgid "No previous regular expression" msgstr "Nenhuma expressão regular anterior" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" "função \"%s\": não é possível usar a função \"%s\" como um nome de parâmetro" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "não foi possível trazer contexto principal" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "\"L\" não faz sentido em formatos awk; ignorado" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fatal: \"L\" não é permitido em formatos POSIX awk" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "\"h\" não faz sentido em formatos awk; ignorado" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fatal: \"h\" não é permitido em formatos POSIX awk" + +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Nenhum símbolo \"%s\" no contexto atual" + #~ msgid "fts: first parameter is not an array" #~ msgstr "fts: primeiro parâmetro não é um vetor" @@ -4023,9 +4117,6 @@ #~ msgid "`nextfile' cannot be called from an END rule" #~ msgstr "`nextfile' não pode ser chamado de uma regra END" -#~ msgid "statement has no effect" -#~ msgstr "declaração não tem efeito" - #~ msgid "" #~ "concatenation: side effects in one expression have changed the length of " #~ "another!" diff -urN gawk-5.1.0/po/pt.po gawk-5.1.1/po/pt.po --- gawk-5.1.0/po/pt.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/pt.po 2021-10-27 07:58:42.000000000 +0300 @@ -1,14 +1,14 @@ # Portuguese (Portugal) Translation for the gawk Package. # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. -# Pedro Albuquerque , 2019, 2020. +# Pedro Albuquerque , 2019, 2020, 2021. # msgid "" msgstr "" -"Project-Id-Version: gawk 5.0.64\n" +"Project-Id-Version: gawk 5.1.1e\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2020-03-16 09:07+0000\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-09-08 06:53+0100\n" "Last-Translator: Pedro Albuquerque \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -17,233 +17,246 @@ "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Geany / PoHelper 1.36\n" +"X-Generator: Poedit 2.3\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "de %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "tentativa de usar um valor escalar como matriz" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "tentativa de usar o parâmetro escalar \"%s\" como matriz" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "tentativa de usar o escalar \"%s\" como matriz" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentativa de usar a matriz \"%s\" num contexto escalar" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "eliminar: índice \"%.*s\" não está na matriz \"%s\"" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentativa de usar o escalar '%s[\"%.*s\"]' como matriz" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "%s: o primeiro argumento não é uma matriz" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "%s: o segundo argumento não é uma matriz" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "%s: o primeiro argumento não pode ser SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "%s: impossível usar %s para 2º argumento" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "%s: o primeiro argumento não pode ser FUNCTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%s: o primeiro argumento não pode ser SYMTAB sem um 2º argumento" -#: array.c:844 +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%s: o primeiro argumento não pode ser FUNCTAB sem um 2º argumento" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti: usar a mesma matriz como fonte e destino sem um terceiro " +"argumento é pateta." + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "%s: impossível usar uma sub-matriz do 1º argumento para 2º argumento" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "%s: impossível usar uma sub-matriz do 2º argumento para 1º argumento" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "\"%s\" é inválido como nome de função" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "função de comparação de ordem \"%s\" não definida" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s blocos têm de ter uma parte de acção" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "cada regra tem de ter um padrão ou uma parte de acção" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "o awk antigo não suporta múltiplas regras \"BEGIN\" ou \"END\"" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "\"%s\" é uma função interna, não pode ser redefinida" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "constante regexp \"//\" parece-se com um comentário C++, mas não é" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "constante regexp \"/%s/\" parece-se com um comentário C, mas não é" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valores de \"case\" duplicados no corpo do \"switch\": %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "\"default\" duplicado detectado no corpo do \"switch\"" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "\"break\" não é permitido fora de um ciclo ou \"switch\"" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "\"continue\" não é permitido fora de um ciclo" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "\"next\" usado em acção \"%s\"" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "\"nextfile\" usado em acção \"%s\"" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "\"return\" usado fora do contexto da função" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "\"print\" simples em regra BEGIN ou END devia provavelmente ser 'print \"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "\"delete\" não é permitido com SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "\"delete\" não é permitido com FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "\"delete(array)\" é uma extensão tawk não-portável" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "túneis multi-estágio de duas vias não funcionam" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "concatenação como alvo de redireccionamento \">\" de E/S é ambíguo" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "expressão regular à direita de atribuição" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "expressão regular à esquerda de operador \"~\" ou \"!~\"" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "o awk antigo não suporta a palavra-chave \"in\", excepto após \"for\"" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "expressão regular à direita de comparação" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "\"getline\" não redireccionado inválido dentro de regra \"%s\"" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "\"getline\" não redireccionado indefinido dentro de acção END" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "o awk antigo não suporta matrizes multi-dimensionais" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "chamada de \"length\" sem parênteses não é portável" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "chamadas de função indirectas são uma extensão gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" "impossível usar a variável especial \"%s\" para chamada de função indirecta" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "tentativa de usar a não-função \"%s\" em chamada de função" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "expressão subscrita inválida" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "aviso: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "nova linha ou fim de cadeia inesperados" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" @@ -251,263 +264,263 @@ "ficheiros-fonte/argumentos de linha de comandos têm de conter funções ou " "regras completas" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "impossível abrir ficheiro-fonte \"%s\" para leitura: %s" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "impossível abrir biblioteca partilhada \"%s\" para leitura: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "motivo desconhecido" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "impossível incluir \"%s\" e usar como ficheiro de programa" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "ficheiro-fonte \"%s\" já incluído" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "biblioteca partilhada \"%s\" já incluída" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include é uma extensão gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "nome de ficheiro vazio após @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load é uma extensão gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "nome de ficheiro vazio após @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "texto de programa vazio na linha de comandos" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "impossível ler ficheiro-fonte \"%s\": %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "ficheiro-fonte \"%s\" vazio" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "erro: carácter \"\\%03o\" inválido no código-fonte" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "ficheiro-fonte não termina com nova linha" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "regexp não terminada acaba com \"\\\" no fim do ficheiro" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: modificador regexp tawk \"/.../%c\" não funciona no gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "modificador regexp tawk \"/.../%c\" não funciona no gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "regexp não terminada" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "regexp não terminada no fim do ficheiro" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "uso de continuação de linha \"\\ #...\" não é portável" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "a barra invertida não é o último carácter na linha" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "matrizes multi-dimensionais são uma extensão gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX não permite o operador \"%s\"" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "o awk antigo não suporta o operador \"%s\"" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "cadeia indeterminada" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX não permite novas linhas físicas em valores de cadeia" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "continuação de cadeia com barra invertida não é portável" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "carácter \"%c\" inválido em expressão" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "\"%s\" é uma extensão gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX não permite \"%s\"" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "o awk antigo não suporta \"%s\"" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" -msgstr "\"goto\" considerado perigoso" +msgstr "\"goto\" considerado perigoso!" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d é inválido como nº de argumentos para %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: literal de cadeia como último argumento de substituto não tem efeito" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "o terceiro parâmetro de %s não é um objecto alterável" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: o terceiro argumento é uma extensão gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: o segundo argumento é uma extensão gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "o uso de dcgettext(_\"...\") está incorrecto: remova o sublinhado inicial" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "o uso de dcngettext(_\"...\") está incorrecto: remova o sublinhado inicial" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: constante regexp como segundo argumento não é permitido" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "função \"%s\": o parâmetro \"%s\" sombreia uma variável global" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "impossível abrir \"%s\" para escrita: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "a enviar lista de variáveis para erro padrão" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "%s: falha ao fechar: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() chamada duas vezes!" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "houve variáveis sombreadas." +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "houve variáveis sombreadas" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "nome de função \"%s\" previamente definido" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "função \"%s\": impossível usar o nome da função como nome de parâmetro" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "função \"%s\": impossível usar a variável especial \"%s\" como parâmetro da " "função" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "função \"%s\": o parâmetro \"%s\" não pode conter um namespace" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "função \"%s\": o parâmetro nº %d, \"%s\", duplica o parâmetro nº %d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "função \"%s\" chamada, mas não foi definida" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "função \"%s\" definida, mas nunca é chamada directamente" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "constante regexp para o parâmetro nº %d entrega um valor booleano" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -516,47 +529,51 @@ "função \"%s\" chamada com espaço entre o nome e \"(\",\n" "ou usada como variável ou matriz" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "tentativa de dividir por zero" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentativa de dividir por zero em \"%%\"" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "impossível atribuir um valor ao resultado de uma expressão de pós-incremento " "de campo" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "alvo de atribuição inválido (opcode %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "a declaração não tem efeito" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" "identificador %s: nomes qualificados não são permitidos em modo tradicional/" "POSIX" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" "identificador %s: o separador de espaços de nome é duplo dois-pontos, não " "dois-pontos único" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "identificador %s qualificado está mal formado" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" @@ -564,12 +581,12 @@ "identificador %s: o separador de espaços de nome só pode aparecer uma vez " "num nome qualificado" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "não é permitido usar o identificador reservado %s como namespace" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " @@ -578,11 +595,11 @@ "não é permitido usar o identificador reservado %s como 2º componente de nome " "qualificado" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "@namespace é uma extensão gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -601,8 +618,8 @@ msgid "standard error" msgstr "erro padrão" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: recebido argumento não-numérico" @@ -642,7 +659,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: \"%.*s\" não é um ficheiro, túnel ou co-processo aberto" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "%s: recebido 1º argumento não-cadeia" @@ -660,186 +677,172 @@ msgid "`length(array)' is a gawk extension" msgstr "\"length(array)\" é uma extensão gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "%s: recebido argumento não-cadeia" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" msgstr "%s: recebido argumento %g negativo" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: tem de usar \"count$\" em todos os formatos ou em nenhum" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "largura de campo ignorada para especificador \"%%\"" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precisão ignorada para especificador \"%%\"" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "largura de campo e precisão ignoradas para especificador \"%%\"" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: \"$\" não é permitido em formatos awk" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "fatal: índice de argumentos com \"$\" tem de ser > 0" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" "fatal: índice de argumentos %ld maior que o total de argumentos fornecidos" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: \"$\" não permitido após um ponto no formato" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: sem \"$\" fornecido para largura de campo ou precisão posicionais" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "\"l\" não tem significado em formatos awk; ignorado" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "fatal: \"l\" não é permitido em formatos awk POSIX" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "\"L\" não tem significado em formatos awk; ignorado" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "fatal: \"L\" não é permitido em formatos awk POSIX" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "\"h\" não tem significado em formatos awk; ignorado" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "fatal: \"h\" não é permitido em formatos awk POSIX" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "\"%c\" não tem significado em formatos awk; ignorado" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "fatal: \"%c\" não é permitido em formatos awk POSIX" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: valor %g muito grande para formato %%c" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: valor %g não é um carácter largo válido" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: valor %g fora do intervalo para formato \"%%%c\"" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: valor %s fora do intervalo para formato \"%%%c\"" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "o formato %%%c é padrão POSIX, mas não é portável para outros awks" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "a ignorar carácter especificador de formato \"%c\" desconhecido: nenhum " "argumento convertido" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: argumentos insuficientes para satisfazer a cadeia de formato" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ esgotou-se para esta" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: especificador de formato não tem letra de controlo" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "demasiados argumentos para cadeia de formato" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: sem argumentos" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: sem argumentos" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" "printf: tentativa de escrever no lado de escrita fechado de um túnel de duas " "vias" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: tamanho %g não é >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: tamanho %g não é >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: tamanho não-inteiro %g será truncado" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: tamanho %g muito grande para indexação da cadeia, a truncar para %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: índice inicial %g inválido, a usar 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: índice inicial não-inteiro %g será truncado" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: cadeia-fonte tem tamanho zero" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: índice inicial %g está para lá do fim da cadeia" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -847,160 +850,165 @@ "substr: tamanho %g no índice inicial %g excede o tamanho do 1º argumento " "(%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: valor de formato em PROCINFO[\"strftime\"] tem tipo numérico" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "%s: recebido 2º argumento não-numérico" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: 2º argumento menor que 0 ou muito grande para time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: 2º argumento fora do intervalo para time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: recebida cadeia de formato vazia" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: pelo menos um dos valores está fora do intervalo predefinido" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "função \"system\" não permitida em modo sandbox" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" "print: tentativa de escrever no lado de escrita fechado de um túnel de duas " "vias" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referência a campo não inicializado \"$%d\"" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "%s: recebido 1º argumento não-numérico" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: o 3º argumento não é uma matriz" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s: impossível usar %s como 3º argumento" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: 3º argumento \"%.*s\" tratado como 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: pode ser chamada indirectamente só com dois argumentos" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "chamada indirecta a %s requer pelo menos dois argumentos" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): não são permitidos valores negativos" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): valores fraccionais serão truncados" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): um valor de deslocamento muito grande dará resultados " "estranhos" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): não são permitidos valores negativos" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): valores fraccionais serão truncados" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): um valor de deslocamento muito grande dará resultados " "estranhos" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "%s: chamada com menos de dois argumentos" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "%s: argumento %d é não-numérico" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: argumento %d com valor %g negativo não é permitido" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): valor negativo não é permitido" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): valores fraccionais serão truncados" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: \"%s\" não é uma categoria regional válida" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: 3º argumento não é uma matriz" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: tentativa de dividir por zero" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof: 2º argumento não é uma matriz" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -"typeof detectou uma combinação de bandeira \"%s\" inválida; por favor, faça " -"um relatório de erro." +"typeof detectou uma combinação de bandeiras \"%s\" inválida; por favor, faça " +"um relatório de erro" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: tipo de argumento \"%s\" inválido" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: tipo de argumento \"%s\" desconhecido" @@ -1010,444 +1018,442 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "impossível adicionar um novo ficheiro (%.*s) a ARGV em modo sandbox" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Digite as declarações (g)awk. Termine com o comando \"end\"\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "número de quadro errado: %d" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "info: opção inválida - \"%s\"" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." -msgstr "source: \"%s\": já baseado." +msgid "source: `%s': already sourced" +msgstr "source: \"%s\": já baseado" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." -msgstr "save: \"%s\": comando não permitido." +msgid "save: `%s': command not permitted" +msgstr "save: \"%s\": comando não permitido" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" -"Impossível usar o comando \"commands\" para comandos breakpoint/watchpoint" +"impossível usar o comando \"commands\" para comandos breakpoint/watchpoint" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "sem breakpoint/watchpoint definidos" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "número de breakpoint/watchpoint inválido" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Digite comandos para quando %s %d for premido, um por linha.\n" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "Termine com o comando \"end\"\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "\"end\" só é válido no comando \"commands\" ou \"eval\"" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "\"silent\" só é válido no comando \"commands\"" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "trace: opção inválida - \"%s\"" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: número de breakpoint/watchpoint inválido" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "argumento não-cadeia" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "option: parâmetro inválido - \"%s\"" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "sem tal função - \"%s\"" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "enable: opção inválida - \"%s\"" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "especificação de intervalo inválida: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "valor não-numérico em número de campo" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "valor não-numérico encontrado, esperado um número" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "valor inteiro não-zero" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" -"backtrace [N] - imprime traço de todos ou N mais interior (mais exterior se " -"N < 0) os quadros." +"backtrace [N] - imprime registo de todos os quadros ou N mais interiores " +"(mais exteriores se N < 0)" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "" -"break [[nomefich:]N|função] - define breakpoint na localização especificada." +"break [[nomefich:]N|função] - define breakpoint na localização especificada" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" -"clear [[nomefich:]N|função] - elimina breakpoints anteriormente definidos." +"clear [[nomefich:]N|função] - elimina breakpoints anteriormente definidos" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [núm] - inicia uma lista de comandos a executar num " -"breakpoint(watchpoint)." +"breakpoint(watchpoint)" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" -"condition núm [expr] - define ou limpa condição de breakpoint ou watchpoint." +"condition núm [expr] - define ou limpa condição de breakpoint ou watchpoint" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [COUNT] - continua o programa em depuração." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [COUNT] - continua o programa em depuração" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "" -"delete [breakpoints] [intervalo] - elimina os breakpoints especificados." +"delete [breakpoints] [intervalo] - elimina os breakpoints especificados" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "" -"disable [breakpoints] [intervalo] - desactiva os breakpoints especificados." +"disable [breakpoints] [intervalo] - desactiva os breakpoints especificados" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" -"display [var] - imprime o valor da variável cada vez que o programa pára." +"display [var] - imprime o valor da variável cada vez que o programa pára" -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] - move N quadros abaixo na pilha." +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [N] - move N quadros abaixo na pilha" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [filename] - despeja instruções para ficheiro ou stdout." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" +msgstr "dump [filename] - despeja instruções para ficheiro ou stdout" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" "enable [once|del] [breakpoints] [intervalo] - activa os breakpoints " -"especificados." +"especificados" -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end - termina uma lista de comandos ou declarações awk." +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end - termina uma lista de comandos ou declarações awk" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval stmt|[p1, p2, ...] - avalia declarações awk." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval stmt|[p1, p2, ...] - avalia declarações awk" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." -msgstr "exit - (igual a quit) sai do depurador." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit - (igual a quit) sai do depurador" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." -msgstr "finish - executa até que o quadro da pilha seleccionado retorne." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" +msgstr "finish - executa até que o quadro da pilha seleccionado retorne" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - selecciona e imprime o quadro da pilha número N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] - selecciona e imprime o quadro da pilha número N" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -"help [command] - imprime uma lista de comandos ou a explicação de um comando." +"help [cmmando] - imprime uma lista de comandos ou a explicação de um comando" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore N CONT - define ignore-count do breakpoint número N como CONT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" +msgstr "" +"ignore N CONTAGEM - define ignore-count do breakpoint número N como CONTAGEM" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info tópico - fonte|fontes|variáveis|funções|quebra|quadro|argumentos|locais|" -"mostrar|observar." +"mostrar|observar" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "" -"list [-|+|[nomefich:]numlin|função|intervalo] - lista as linhas " -"especificadas." +"list [-|+|[nomefich:]numlin|função|intervalo] - lista as linhas especificadas" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" -"next [CONT] - executa o programa, continuando pelas chamadas a sub-rotinas." +"next [CONTAGEM] - executa o programa, continuando pelas chamadas a sub-" +"rotinas" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" -"nexti [CONT] - executa uma instrução, mas continuando pelas chamadas a sub-" -"rotinas." +"nexti [CONTAGEM] - executa uma instrução, mas continuando pelas chamadas a " +"sub-rotinas" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [nome[=valor]] - define ou mostra opções do depurador." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [nome[=valor]] - define ou mostra opções do depurador" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." -msgstr "print var [var] - imprime o valor de uma variável ou matriz." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "print var [var] - imprime o valor de uma variável ou matriz" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." -msgstr "printf format, [arg], ... - saída formatada." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf formato, [arg], ... - saída formatada" -#: command.y:871 -msgid "quit - exit debugger." -msgstr "quit - sai do depurador." +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit - sai do depurador" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" msgstr "" "return [value] - faz com que o quadro da pilha seleccionado retorne ao seu " -"chamador." +"chamador" -#: command.y:875 -msgid "run - start or restart executing program." -msgstr "run - começa ou reinicia a execução do programa." +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run - começa ou reinicia a execução do programa" -#: command.y:878 -msgid "save filename - save commands from the session to file." -msgstr "save nomefich - grava os comandos da sessão no ficheiro." +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save nomefich - grava os comandos da sessão no ficheiro" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." -msgstr "set var = valor - atribui um valor a uma variável escalar." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" +msgstr "set var = valor - atribui um valor a uma variável escalar" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" -"silent - suspende a mensagem habitual quando parado num breakpoint/" -"watchpoint." +"silent - suspende a mensagem habitual quando parado num breakpoint/watchpoint" -#: command.y:885 -msgid "source file - execute commands from file." -msgstr "source ficheiro - executa comandos a partir do ficheiro." +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source ficheiro - executa comandos a partir do ficheiro" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" -"step [CONT] - executa o programa até que atinja uma linha fonte diferente." +"step [CONTAGEM] - executa o programa até que atinja uma linha fonte diferente" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [CONT] - executa exactamente uma instrução." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [CONT] - executa exactamente uma instrução" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[nomefich:]N|função] - define um breakpoint temporário." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[nomefich:]N|função] - define um breakpoint temporário" -#: command.y:893 -msgid "trace on|off - print instruction before executing." -msgstr "trace on|off - imprime a instrução antes de a executar." +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off - imprime a instrução antes de a executar" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." -msgstr "undisplay [N] - remove variáveis da lista de exibição automática." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" +msgstr "undisplay [N] - remove variáveis da lista de exibição automática" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[nomefich:]N|função] - executa até o programa atingir uma linha " -"diferente ou até à linha N dentro do quadro actual." +"diferente ou até à linha N dentro do quadro actual" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] - remove variáveis da lista de observação." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] - remove variáveis da lista de observação" -#: command.y:901 -msgid "up [N] - move N frames up the stack." -msgstr "up [N] - move N quadros acima na pilha." +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [N] - move N quadros acima na pilha" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." -msgstr "watch var - define um watchpoint para uma variável." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch var - define um watchpoint para uma variável" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" -"where [N] - (igual a backtrace) imprime o traço de todos ou N mais interior " -"(mais exterior se N < 0) os quadros." +"where [N] - (igual a backtrace) imprime o traço de todos os quadros ou N " +"mais interiores (mais exteriores se N < 0)" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "erro: " -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "impossível ler o comando: %s\n" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "impossível ler o comando: %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "carácter inválido no comando" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "comando desconhecido - \"%.*s\", tente help" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "carácter inválido" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "comando indefinido: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." -msgstr "define ou mostra o número de linhas a manter no ficheiro de histórico." +msgid "set or show the number of lines to keep in history file" +msgstr "define ou mostra o número de linhas a manter no ficheiro de histórico" #: debug.c:259 -msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "define ou mostra o tamanho da janela do comando de lista" #: debug.c:261 -msgid "set or show gawk output file." -msgstr "define ou mostra o ficheiro de saída do gawk." +msgid "set or show gawk output file" +msgstr "define ou mostra o ficheiro de saída do gawk" #: debug.c:263 -msgid "set or show debugger prompt." -msgstr "define ou mostra a entrada do depurador." +msgid "set or show debugger prompt" +msgstr "define ou mostra a entrada do depurador" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "" -"define/remove ou mostra a gravação do histórico de comandos (valor=on|off)." +"define/remove ou mostra a gravação do histórico de comandos (valor=on|off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." -msgstr "define/remove ou mostra a gravação de opções (valor=on|off)." +msgid "(un)set or show saving of options (value=on|off)" +msgstr "define/remove ou mostra a gravação de opções (valor=on|off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." -msgstr "define/remove ou mostra o traço de instruções (valor=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" +msgstr "define/remove ou mostra o registo de instruções (valor=on|off)." #: debug.c:358 -msgid "program not running." -msgstr "programa não em execução." +msgid "program not running" +msgstr "programa não em execução" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "ficheiro-fonte \"%s\" vazio.\n" -#: debug.c:493 -msgid "no current source file." -msgstr "sem ficheiro-fonte actual." +#: debug.c:502 +msgid "no current source file" +msgstr "sem ficheiro-fonte actual" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "impossível encontrar ficheiro-fonte chamado \"%s\": %s" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "" -"AVISO: ficheiro-fonte \"%s\" modificado desde a compilação do programa.\n" +"aviso: ficheiro-fonte \"%s\" modificado desde a compilação do programa.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "número de linha %d fora do intervalo; \"%s\" tem %d linhas" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "eof inesperado ao ler \"%s\", linha %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "" "ficheiro-fonte \"%s\" modificado desde o início da execução do programa" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Ficheiro-fonte actual: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Número de linhas: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Ficheiro-fonte (linhas): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1455,54 +1461,54 @@ "Número Most Activas Localiz.\n" "\n" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" -msgstr "\tnº de hits = %ld\n" +msgid "\tnumber of hits = %ld\n" +msgstr "\tnúmero de resultados = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignora %ld hit(s) seguintes\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tcondição de paragem: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tcomandos:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Quadro actual: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Chamada pelo quadro: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Chamador do quadro: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Nada em main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Sem argumentos.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Sem locais.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1510,7 +1516,7 @@ "Todas as variáveis definidas:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1518,7 +1524,7 @@ "Todas as funções definidas:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1526,7 +1532,7 @@ "Mostrar variáveis automaticamente:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1534,385 +1540,390 @@ "Observar variáveis: \n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "sem símbolo \"%s\" no contexto actual\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "\"%s\" não é uma matriz\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = campo não inicializado\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "matriz \"%s\" está vazia\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" -msgstr "[\"%.*s\"] não está na matriz \"%s\"\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "o subscrito [\"%.*s\"] não está na matriz \"%s\"\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "'%s[\"%.*s\"]' não é uma matriz\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "\"%s\" não é uma variável escalar" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "tentativa de usar matriz '%s[\"%.*s\"]' num contexto escalar" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "tentativa de usar o escalar '%s[\"%.*s\"]' como matriz" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "\"%s\" é uma função" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "watchpoint %d é incondicional\n" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" -msgstr "Sem item de exibição numerado %ld" +msgid "no display item numbered %ld" +msgstr "sem item de exibição numerado %ld" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" -msgstr "Sem item de observação numerado %ld" +msgid "no watch item numbered %ld" +msgstr "sem item de observação numerado %ld" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" -msgstr "%d: [\"%.*s\"] não está na matriz \"%s\"\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: o subscrito [\"%.*s\"] não está na matriz \"%s\"\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "tentativa de usar valor escalar como matriz" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Watchpoint %d eliminado por o parâmetro estar fora do âmbito.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Exibição %d eliminada por o parâmetro estar fora do âmbito.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " no ficheiro \"%s\", linha %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " em 2%s\":%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\tem " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Seguem-se mais quadros da pilha...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "número de quadro inválido" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: breakpoint %d (activo, ignora %ld hits seguintes), também definido em " "%s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Nota: breakpoint %d (activo), também definido em %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Nota: breakpoint %d (inactivo, ignora %ld hits seguintes), também definido " "em %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Nota: breakpoint %d (inactivo), também definido em %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpoint %d definido no ficheiro \"%s\", linha %d\n" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" -msgstr "Impossível definir breakpoint no ficheiro \"%s\"\n" +msgstr "impossível definir breakpoint no ficheiro \"%s\"\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "número de linha %d no ficheiro \"%s\" fora do intervalo" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "erro interno: impossível encontrar regra\n" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" -msgstr "Impossível definir breakpoint em \"%s\":%d\n" +msgstr "impossível definir breakpoint em \"%s\":%d\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" -msgstr "Impossível definir breakpoint na função \"%s\"\n" +msgstr "impossível definir breakpoint na função \"%s\"\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "breakpoint %d definido no ficheiro \"%s\", linha %d é incondicional\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "número de linha %d no ficheiro \"%s\" fora do intervalo" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Breakpoint %d eliminado" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Sem breakpoints na entrada da função \"%s\"\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Sem breakpoint no ficheiro \"%s\", linha %d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" -msgstr "Número de breakpoint inválido" +msgstr "número de breakpoint inválido" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Eliminar todos os breakpoints? (s ou n) " # I'm assuming this is the translation of the 'y' from the previous string. # # Presume-se que esta cadeia seja a tradução do "y" da cadeia anterior. -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "s" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Vai ignorar os %ld cruzamentos seguintes do breakpoint %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Vai parar da próxima vez que o breakpoint %d seja atingido.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Só se pode depurar programas indicando a opção \"-f\".\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Falha ao reiniciar o depurador" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Programa já em execução. Recomeçar do início (y/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Programa não reiniciado\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "erro: impossível reiniciar, operação não permitida\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "erro (%s): impossível reiniciar, a ignorar o resto dos comandos\n" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "A iniciar o programa: \n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "O programa saiu anormalmente com o código %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "O programa saiu normalmente com o código %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "O programa está em execução. Sair mesmo assim (y/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Não parado em nenhum breakpoint; argumento ignorado.\n" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." -msgstr "número de breakpoint %d inválido." +msgid "invalid breakpoint number %d" +msgstr "número de breakpoint %d inválido" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Vai ignorar os %ld cruzamentos seguintes do breakpoint %d.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "\"finish\" não tem significado no quadro main() mais exterior\n" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "Executar até voltar de " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "\"return\" não tem significado no quadro main() mais exterior\n" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" -msgstr "Impossível encontrar a localização especificada na função \"%s\"\n" +msgstr "impossível encontrar a localização especificada na função \"%s\"\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "linha fonte %d inválida no ficheiro \"%s\"" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "" -"Impossível encontrar a localização %d especificada no ficheiro \"%s\"\n" +"impossível encontrar a localização %d especificada no ficheiro \"%s\"\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "elemento não está na matriz\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "variável sem tipo\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "A parar em %s...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "\"finish\" sem significado com salto não-local \"%s\"\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "\"until\" sem significado com salto não-local \"%s\"\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t------[Enter] para continuar ou [q] + [Enter] para sair------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] não está na matriz \"%s\"" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "a enviar saída para stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "número inválido" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "\"%s\" não permitido no contexto actual; declaração ignorada" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "\"return\" não permitido no contexto actual; declaração ignorada" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" -msgstr "Sem símbolo \"%s\" no contexto actual" +msgid "no symbol `%s' in current context" +msgstr "sem símbolo \"%s\" no contexto actual" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "nodetype %d desconhecido" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "opcode %d desconhecido" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s não é um operador ou palavra-chave" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "transporte de buffer em genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1923,71 +1934,71 @@ "\t# Pilha de chamadas de função:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "\"IGNORECASE\" é uma extensão gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "\"BINMODE\" é uma extensão gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "valor BINMODE \"%s\" inválido, tratado como 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "má \"%sFMT\" especificação \"%s\"" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "a desligar \"--lint\" devido a atribuição a \"LINT\"" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referência a argumento \"%s\" não inicializado" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referência a variável \"%s\" não inicializada" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "tentativa de referenciar campo a partir de valor não-numérico" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "tentativa de referenciar campo a partir de cadeia nula" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "tentativa de aceder ao campo %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referência a campo \"$%ld\" não inicializado" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "função \"%s\" chamada com mais argumentos do que os declarados" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo \"%s\" inesperado" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "tentativa de dividir por zero em \"/=\"" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "tentativa de dividir por zero em \"%%=\"" @@ -2077,78 +2088,78 @@ msgid "dynamic loading of libraries is not supported" msgstr "carregamento dinâmico de bibliotecas não é suportado" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: impossível ler ligação simbólica \"%s\"" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "stat: o 1º argumento não é uma cadeia" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "stat: o 2º argumento não é uma matriz" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: maus parâmetros" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: impossível criar variável %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts não suportado neste sistema" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: impossível criar matriz, sem memória" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: impossível definir elemento" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: impossível definir elemento" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: impossível definir elemento" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: impossível criar matriz" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: impossível definir elemento" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: chamada com número incorrecto de argumentos, esperados 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "fts: o primeiro argumento não é uma matriz" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "fts: o 2º argumento não é um número" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "fts: o 3º argumento não é uma matriz" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: impossível aplanar matriz\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: a ignorar bandeira FTS_NOSTAT furtiva. nyah, nyah, nyah." @@ -2288,7 +2299,7 @@ msgid "chr: first argument is not a number" msgstr "chr: o primeiro argumento não é um número" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir falhou: %s" @@ -2376,177 +2387,182 @@ msgid "sleep: not supported on this platform" msgstr "sleep: não suportado nesta plataforma" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "registo de entrada muito grande" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF definido como valor negativo" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "decrementar NF não é portável para muitas versões awk" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "aceder a campos a partir de uma regra END pode não ser portável" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: o 4º argumento é uma extensão gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: o 4º argumento não é uma matriz" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: impossível usar %s para 4º argumento" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: 2º argumento não é uma matriz" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "split: impossível usar a mesma matriz para 2º e 4º argumentos" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: impossível usar uma sub-matriz do 2º argumento como 4º argumento" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: impossível usar uma sub-matriz do 4º argumento como 2º argumento" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "split: cadeia nula para 3º argumento é uma extensão não-padrão" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: o 4º argumento não é uma matriz" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: o 2º argumento não é uma matriz" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: o 3º argumento não pode ser nulo" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: impossível usar a mesma matriz para 2º e 4º argumentos" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: impossível usar uma sub-matriz do 2º argumento como 4º argumento" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: impossível usar uma sub-matriz do 4º argumento como 2º argumento" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "\"FIELDWIDTHS\" é uma extensão gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "\"*\" tem de ser o último designador em FIELDWIDTHS" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "valor FIELDWIDTHS inválido, para o campo %d, perto de \"%s\"" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "cadeia nula para \"FS\" é uma extensão gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "o awk antigo não suporta regexps como valores de \"FS\"" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "\"FPAT\" é uma extensão gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: recebido retval nulo" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: não está em modo MPFR" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: MPFR não suportado" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: tipo de número \"%d\" inválido" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func: recebido parâmetro name_space NULL" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" "node_to_awk_value: detectada combinação de bandeiras numéricas \"%s\" " -"inválida; por favor, faça um relatório de erro." +"inválida; por favor, faça um relatório de erro" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: recebido nó nulo" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: recebido valor nulo" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value: detectada combinação de bandeiras \"%s\" inválida; por " -"favor, faça um relatório de erro." +"favor, faça um relatório de erro" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: recebida matriz nula" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: recebido subscrito nulo" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed: impossível converter índice %d para %s" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: impossível converter valor %d para %s" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: MPFR não suportado" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "impossível encontrar o fim da regra BEGINFILE" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "impossível abrir tipo de ficheiro \"%s\" desconhecido para \"%s\"" @@ -2556,31 +2572,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "argumento de linha de comandos \"%s\" é uma pasta: saltado" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "impossível abrir o ficheiro \"%s\" para leitura: %s" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "fecho de fd %d (\"%s\") falhou: %s" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "\"%.*s\" usado para ficheiro de entrada e de saída" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "\"%.*s\" usado para ficheiro de entrada e para túnel de entrada" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "\"%.*s\" usado para ficheiro de entrada e túnel de duas vias" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "\"%.*s\" usado para ficheiro de entrada e túnel de saída" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "mistura desnecessária de \">\" e \">>\" para o ficheiro \"%.*s\"" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "\"%.*s\" usado para túnel de entrada e ficheiro de saída" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "\"%.*s\" usado para ficheiro de saída e túnel de saída" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "\"%.*s\" usado para ficheiro de saída e túnel de duas vias" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "\"%.*s\" usado para túnel de entrada e de saída" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "\"%.*s\" usado para túnel de entrada e de duas vias" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "\"%.*s\" usado para túnel de saída e de duas vias" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "redireccionamento não permitido em modo sandbox" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "expressão em redireccionamento \"%s\" é um número" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "expressão para redireccionamento \"%s\" tem um valor de cadeia nulo" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2588,27 +2659,22 @@ "nome de ficheiro \"%.*s\" para redireccionamento \"%s\" pode ser o resultado " "de uma expressão lógica" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "mistura desnecessária de \">\" e \">>\" para o ficheiro \"%.*s\"" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file não pode criar túnel \"%s\" com fd %d" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "impossível abrir túnel \"%s\" para saída: %s" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "impossível abrir túnel \"%s\" para entrada: %s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2616,247 +2682,252 @@ "criação de socket get_file não suportada nesta plataforma para \"%s\" com fd " "%d" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "impossível abrir túnel de duas vias \"%s\" para entrada/saída: %s" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "impossível redireccionar de \"%s\": %s" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "impossível redireccionar para \"%s\": %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "atingido o limite do sistema para ficheiros abertos: a iniciar a " "multiplexagem de descritores de ficheiros" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." -msgstr "falha ao fechar \"%s\": %s)" +msgid "close of `%s' failed: %s" +msgstr "falha ao fechar \"%s\": %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "demasiados túneis ou ficheiros de entrada abertos" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: o 2º argumento tem de ser \"to\" ou \"from\"" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: \"%.*s\" não é um ficheiro, túnel ou co-processo aberto" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "fecho de redireccionamento que nunca aconteceu" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: redireccionamento \"%s\" não aberto com \"|&\", 2º argumento ignorado" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "estado da falha (%d) ao fechar túnel \"%s\": %s" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "estado da falha (%d) ao fechar túnel de duas vias \"%s\": %s" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "estado da falha (%d) ao fechar ficheiro \"%s\": %s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "sem fecho de socket \"%s\" específico fornecido" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "sem fecho de co-processo \"%s\" específico fornecido" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "sem fecho de túnel \"%s\" específico fornecido" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "sem fecho de ficheiro \"%s\" específico fornecido" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: impossível despejar a saída padrão: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: impossível despejar o erro padrão: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "erro ao escrever na saída padrão: %s" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "erro ao escrever no erro padrão: %s" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." -msgstr "falhou o despejo de túnel \"%s\": %s." +msgid "pipe flush of `%s' failed: %s" +msgstr "falhou o despejo de túnel \"%s\": %s" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." -msgstr "falhou o despejo de co-processo \"%s\": %s." +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "falhou o despejo de co-processo de túnel para \"%s\": %s" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." -msgstr "falhou o despejo de ficheiro \"%s\": %s." +msgid "file flush of `%s' failed: %s" +msgstr "falhou o despejo de ficheiro \"%s\": %s" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "porta local %s inválida em \"/inet\": %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "porta local %s inválida em \"/inet\"" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "informação de anfitrião remoto e porta (%s, %s) inválidas: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "informação de anfitrião remoto e porta (%s, %s) inválidas" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" -msgstr "comunicações TCP/IP não suportadas" +msgstr "Não são suportadas comunicações TCP/IP" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "impossível abrir \"%s\", modo \"%s\"" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "falha ao fechar pty mestre: %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "falha ao fechar stdout em filho: %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "falha ao mover pty escravo para stdout em filho (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "falha ao fechar stdin em filho: %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "falha ao mover pty escravo para stdin em filho (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "falha ao fechar pty escravo: %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "impossível criar processo-filho ou pty aberto" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "falha ao mover túnel para stdout em filho (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "falha ao mover túnel para stdin em filho (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "falha ao restaurar stdout em processo-mãe" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "falha ao restaurar stdin em processo-mãe" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "falha ao fechar túnel: %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "\"|&\" não suportado" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "impossível abrir túnel \"%s\": %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "impossível criar processo-filho para \"%s\" (bifurcação: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" "getline: tentativa de ler do lado de leitura fechado de um túnel de duas vias" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: recebido ponteiro NULL" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "processador de entrada \"%s\" conflitua com o processador de entrada \"%s\" " "anteriormente instalado" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "processador de entrada \"%s\" falhou ao abrir \"%s\"" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: recebido ponteiro NULL" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2864,16 +2935,16 @@ "invólucro de saída \"%s\" conflitua com o invólucro de saída \"%s\" " "anteriormente instalado" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "invólucro de saída \"%s\" falhou ao abrir \"%s\"" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: recebido ponteiro NULL" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2882,214 +2953,218 @@ "processador de duas vias \"%s\" conflitua com o processador de duas vias \"%s" "\" anteriormente instalado" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "processador de duas vias \"%s\" falhou ao abrir \"%s\"" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "ficheiro de dados \"%s\" está vazio" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "impossível alocar mais memória de entrada" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "valor multi-carácter de \"RS\" é uma extensão gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" -msgstr "comunicação IPv6 não suportada" +msgstr "Não é suportada a comunicação IPv6" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "variável de ambiente \"POSIXLY_CORRECT\" definida: a ligar \"--posix\"" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "\"--posix\" sobrepõe-se a \"--traditional\"" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "\"--posix\"/\"--traditional\" sobrepõe-se a \"--non-decimal-data\"" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "\"--posix\" sobrepõe-se a \"--characters-as-bytes\"" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "executar %s setuid root pode ser um problema de segurança" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "impossível definir o modo binário em stdin: %s" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "impossível definir o modo binário em stdout: %s" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "impossível definir o modo binário em stderr: %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "sem texto de programa!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Uso: %s [opções de estilo POSIX ou GNU] -f fichprog [--] ficheiro ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Uso: %s [opções de estilo POSIX ou GNU] [--] %cprograma%c ficheiro ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opções POSIX:\t\topções longas GNU: (padrão)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichprog\t\t--file=fichprog\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opções curtas:\t\topções longas GNU: (extensões)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fich]\t\t--dump-variables[=fich]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fich]\t\t--debug[=fich]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fich\t\t\t--exec=fich\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i fichinclude\t\t--include=fichinclude\n" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-I\t\t\t--trace\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l biblioteca\t\t--load=biblioteca\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fich]\t\t--pretty-print[=fich]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fich]\t\t--profile[=fich]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z nome-idioma\t\t--locale=nome-idioma\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3109,7 +3184,7 @@ "ou usando um fórum web como o Stack Overflow.\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3119,7 +3194,7 @@ "Por predefinição, lê da entrada padrão e escreve na saída padrão.\n" "\n" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -3130,7 +3205,7 @@ "\t%s '{ sum += $1 }; END { print sum }' ficheiro\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3149,7 +3224,7 @@ "(à sua escolha) qualquer versão posterior.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3163,7 +3238,7 @@ "Veja a GNU General Public License para mais detalhes.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3172,11 +3247,11 @@ "juntamente com este programa. Se não recebeu, veja http://www.gnu.org/" "licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft não define FS para tabulação em awk POSIX" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3185,160 +3260,165 @@ "%s: argumento \"%s\" para \"-v\" não está no formato \"var=valor\"\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "\"%s\" não é um nome de variável legal" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "\"%s\" não é um nome de variável, a procurar o ficheiro \"%s=%s\"" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "impossível usar \"%s\" interna do gawk como nome de variável" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "impossível usar a função \"%s\" como nome de variável" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "excepção de vírgula flutuante" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "erro fatal: erro interno" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "erro fatal: erro interno: segfault" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "erro fatal: erro interno: transporte de pilha" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "sem fd %d pré-aberto" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "impossível pré-abrir /dev/null para fd %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "argumento vazio para \"-e/--source\" ignorado" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "\"--profile\" sobrepõe-se a \"--pretty-print\"" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignorado: suporte a MPFR/GMP não compilado" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opção \"-W %s\" não reconhecida, ignorado\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opção requer um argumento -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "valor PREC \"%.*s\" inválido" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" -msgstr "valor RNDMODE \"%.*s\" inválido" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "valor ROUNDMODE \"%.*s\" inválido" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: recebido 1º argumento não-numérico" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: recebido 2º argumento não-numérico" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s: recebido argumento %.*s negativo" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: recebido argumento nã numérico" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: recebido argumento não-numérico" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): valor negativo não permitido" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "comp(%Rg): valor fraccional será truncado" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): valores negativos não permitidos" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: recebido argumento não-numérico nº %d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argumento nº %d tem valor %Rg inválido, a usar 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: argumento nº %d com valor %Rg negativo não é permitido" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argumento nº %d valor %Rg fraccional será truncado" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: argumento nº %d com valor %Zd negativo não é permitido" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: chamada com menos de dois argumentos" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: chamada com menos de dois argumentos" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: chamada com menos de dois argumentos" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: recebido argumento não-numérico" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: recebido 1º argumento não-numérico" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: recebido 2º argumento não-numérico" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "linha de comandos:" @@ -3347,20 +3427,20 @@ msgid "could not make typed regex" msgstr "impossível fazer regexp digitada" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "o awl antigo não suporta a sequência de escape \"\\%c\"" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX não permite escapes \"\\x\"" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "sem dígitos hexadecimais na sequência de escape \"\\x\"" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3369,18 +3449,18 @@ "escape hexadecimal \\x%.*s de %d caracteres provavelmente não será " "interpretado da forma esperada" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sequência de escape \"\\%c\" tratada como \"%c\" simples" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Detectados dados multi-byte inválidos. Pode haver confusão entre os dados e " -"as definições regionais." +"as definições regionais" #: posix/gawkmisc.c:177 #, c-format @@ -3425,11 +3505,11 @@ msgid "internal error: %s with null vname" msgstr "erro interno: %s com vname nulo" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "erro interno: interno com fname nulo" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3438,7 +3518,7 @@ "%s# Extensões carregadas (-l e/ou @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3449,12 +3529,12 @@ "# Ficheiros incluídos (-i e/ou @include)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil gawk, criado %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3463,7 +3543,7 @@ "\n" "\t# Funções, listadas alfabeticamente\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo de redireccionamento %d desconhecido" @@ -3496,39 +3576,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "componente regexp \"%.*s\" provavelmente deveria ser \"[%.*s]\"" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "[ sem par" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "classe de carácter inválida" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "a sintaxe da classe de carácter é [[:espaço:]], não [:espaço:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "escape \\ não terminado" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "conteúdo de \\{\\} inválido" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "expressão regular muito grande" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "( sem par" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "sem sintaxe especificada" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") sem par" @@ -3660,15 +3740,30 @@ msgid "No previous regular expression" msgstr "Sem expressão regular anterior" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "função \"%s\": impossível usar a função \"%s\" como nome de parâmetro" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "impossível abrir o contexto principal" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "\"L\" não tem significado em formatos awk; ignorado" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "fatal: \"L\" não é permitido em formatos awk POSIX" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "\"h\" não tem significado em formatos awk; ignorado" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "fatal: \"h\" não é permitido em formatos awk POSIX" + +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Sem símbolo \"%s\" no contexto actual" + #~ msgid "fts: first parameter is not an array" #~ msgstr "fts: o primeiro argumento não é uma matriz" diff -urN gawk-5.1.0/po/remove-potcdate.sin gawk-5.1.1/po/remove-potcdate.sin --- gawk-5.1.0/po/remove-potcdate.sin 2018-09-16 21:30:55.000000000 +0300 +++ gawk-5.1.1/po/remove-potcdate.sin 2020-08-28 14:48:05.000000000 +0300 @@ -1,6 +1,12 @@ -# Sed script that remove the POT-Creation-Date line in the header entry +# Sed script that removes the POT-Creation-Date line in the header entry # from a POT file. # +# Copyright (C) 2002 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ diff -urN gawk-5.1.0/po/Rules-quot gawk-5.1.1/po/Rules-quot --- gawk-5.1.0/po/Rules-quot 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/po/Rules-quot 2020-08-28 14:48:05.000000000 +0300 @@ -1,5 +1,9 @@ -# This file, Rules-quot, can be copied and used freely without restrictions. # Special Makefile rules for English message catalogs with quotation marks. +# +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# This file, Rules-quot, and its auxiliary files (listed under +# DISTFILES.common.extra1) are free software; the Free Software Foundation +# gives unlimited permission to use, copy, distribute, and modify them. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot diff -urN gawk-5.1.0/po/sr.po gawk-5.1.1/po/sr.po --- gawk-5.1.0/po/sr.po 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/po/sr.po 2021-10-27 07:58:42.000000000 +0300 @@ -0,0 +1,3910 @@ +# Serbian translation of gawk. +# Copyright © 2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gawk package. +# МироÑлав Ðиколић , 2020. +msgid "" +msgstr "" +"Project-Id-Version: gawk 5.0.64\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2020-05-08 10:08+0200\n" +"Last-Translator: МироÑлав Ðиколић \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\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" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1\n" + +#: array.c:249 +#, c-format +msgid "from %s" +msgstr "од „%s“" + +#: array.c:350 +msgid "attempt to use a scalar value as array" +msgstr "покушава да кориÑти вредноÑÑ‚ Ñкалара као низ" + +#: array.c:352 +#, c-format +msgid "attempt to use scalar parameter `%s' as an array" +msgstr "покушава да кориÑти параметар Ñкалара „%s“ као низ" + +#: array.c:355 +#, c-format +msgid "attempt to use scalar `%s' as an array" +msgstr "покушава да кориÑти Ñкалар „%s“ као низ" + +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 +#, c-format +msgid "attempt to use array `%s' in a scalar context" +msgstr "покушава да кориÑти низ „%s“ у контекÑту Ñкалара" + +#: array.c:576 +#, c-format +msgid "delete: index `%.*s' not in array `%s'" +msgstr "обриши: Ð¸Ð½Ð´ÐµÐºÑ â€ž%.*s“ није у низу „%s“" + +#: array.c:590 +#, c-format +msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" +msgstr "покушава да кориÑти Ñкалар „%s[\"%.*s\"]“ као низ" + +#: array.c:784 array.c:834 +#, c-format +msgid "%s: first argument is not an array" +msgstr "%s: први аргумент није низ" + +#: array.c:826 +#, c-format +msgid "%s: second argument is not an array" +msgstr "%s: други аргумент није низ" + +#: array.c:829 field.c:1004 field.c:1096 +#, fuzzy, c-format +#| msgid "%s: cannot use a subarray of first argument for second argument" +msgid "%s: cannot use %s as second argument" +msgstr "%s: не могу да кориÑтим подниз првог аргумента за други аргумент" + +#: array.c:837 +#, fuzzy, c-format +#| msgid "%s: first argument cannot be SYMTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%s: први аргумент не може бити „SYMTAB“" + +#: array.c:839 +#, fuzzy, c-format +#| msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%s: први аргумент не може бити „FUNCTAB“" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 +#, c-format +msgid "%s: cannot use a subarray of first argument for second argument" +msgstr "%s: не могу да кориÑтим подниз првог аргумента за други аргумент" + +#: array.c:856 +#, c-format +msgid "%s: cannot use a subarray of second argument for first argument" +msgstr "%s: не могу да кориÑтим подниз другог аргумента за први аргумент" + +#: array.c:1370 +#, c-format +msgid "`%s' is invalid as a function name" +msgstr "„%s“ је неиÑправно као назив функције" + +#: array.c:1374 +#, c-format +msgid "sort comparison function `%s' is not defined" +msgstr "функција поређења ређања „%s“ није дефиниÑана" + +#: awkgram.y:276 +#, c-format +msgid "%s blocks must have an action part" +msgstr "%s блока морају имати део радње" + +#: awkgram.y:279 +msgid "each rule must have a pattern or an action part" +msgstr "Ñвако правило мора имати шаблон или део радње" + +#: awkgram.y:420 awkgram.y:432 +msgid "old awk does not support multiple `BEGIN' or `END' rules" +msgstr "Ñтари „awk“ не подржава више правила „BEGIN“ или „END“" + +#: awkgram.y:485 +#, c-format +msgid "`%s' is a built-in function, it cannot be redefined" +msgstr "„%s“ је уграђена функција, не може бити поново дефиниÑана" + +#: awkgram.y:549 +msgid "regexp constant `//' looks like a C++ comment, but is not" +msgstr "конÑтанта регуларног израза „//“ изгледа као C++ напомена, али није" + +#: awkgram.y:553 +#, c-format +msgid "regexp constant `/%s/' looks like a C comment, but is not" +msgstr "конÑтанта регуларног израза „/%s/“ изгледа као C напомена, али није" + +#: awkgram.y:680 +#, c-format +msgid "duplicate case values in switch body: %s" +msgstr "удвоÑтручене вредноÑти Ñлова у телу прекидача: %s" + +#: awkgram.y:701 +msgid "duplicate `default' detected in switch body" +msgstr "удвоÑтручено „default“ је откривено у телу прекидача" + +#: awkgram.y:1037 awkgram.y:4470 +msgid "`break' is not allowed outside a loop or switch" +msgstr "„break“ није допуштено ван петље или прекидача" + +#: awkgram.y:1047 awkgram.y:4462 +msgid "`continue' is not allowed outside a loop" +msgstr "„continue“ није допуштено ван петље" + +#: awkgram.y:1058 +#, c-format +msgid "`next' used in %s action" +msgstr "„next“ је коришћено у „%s“ радњи" + +#: awkgram.y:1069 +#, c-format +msgid "`nextfile' used in %s action" +msgstr "„nextfile“ је коришћено у „%s“ радњи" + +#: awkgram.y:1097 +msgid "`return' used outside function context" +msgstr "„return“ је коришћено ван контекÑта функције" + +#: awkgram.y:1170 +msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" +msgstr "" +"обично „print“ у правилу „BEGIN“ или „END“ треба вероватно бити „print \"\"“" + +#: awkgram.y:1240 awkgram.y:1289 +msgid "`delete' is not allowed with SYMTAB" +msgstr "„delete“ није допуштено Ñа „SYMTAB“" + +#: awkgram.y:1242 awkgram.y:1291 +msgid "`delete' is not allowed with FUNCTAB" +msgstr "„delete“ није допуштено Ñа „FUNCTAB“" + +#: awkgram.y:1276 awkgram.y:1280 +msgid "`delete(array)' is a non-portable tawk extension" +msgstr "„delete(array)“ је непреноÑиво проширење „tawk“-а" + +#: awkgram.y:1416 +msgid "multistage two-way pipelines don't work" +msgstr "вишеÑтепене двоÑмерне Ñпојке не раде" + +#: awkgram.y:1418 +msgid "concatenation as I/O `>' redirection target is ambiguous" +msgstr "надовезивање као У/И „>“ преуÑмерење мете је нејаÑно" + +#: awkgram.y:1630 +msgid "regular expression on right of assignment" +msgstr "регуларни израз Ñа деÑне Ñтране додељивања" + +#: awkgram.y:1645 awkgram.y:1658 +msgid "regular expression on left of `~' or `!~' operator" +msgstr "регуларни израз Ñа леве Ñтране оператера ~ или !~" + +#: awkgram.y:1675 awkgram.y:1825 +msgid "old awk does not support the keyword `in' except after `for'" +msgstr "Ñтари „awk“ не подржава кључну реч „in“ оÑим након „for“" + +#: awkgram.y:1685 +msgid "regular expression on right of comparison" +msgstr "регуларни израз Ñа деÑне Ñтране поређења" + +#: awkgram.y:1804 +#, c-format +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "не преуÑмерено „getline“ је неиÑправно унутар правила „%s“" + +#: awkgram.y:1807 +msgid "non-redirected `getline' undefined inside END action" +msgstr "не преуÑмерено „getline“ је недефиниÑано унутар радње „END“" + +#: awkgram.y:1827 +msgid "old awk does not support multidimensional arrays" +msgstr "Ñтари „awk“ не подржава вишедимензионалне низове" + +#: awkgram.y:1930 +msgid "call of `length' without parentheses is not portable" +msgstr "позив „length“ без заграда није преноÑно" + +#: awkgram.y:2004 +msgid "indirect function calls are a gawk extension" +msgstr "индиректни позиви функције Ñу проширења „gawk“-а" + +#: awkgram.y:2017 +#, c-format +msgid "cannot use special variable `%s' for indirect function call" +msgstr "" +"не могу да кориÑтим нарочиту променљиву „%s“ за индиректни позив функције" + +#: awkgram.y:2050 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "покушавај коришћења не-функције „%s“ у позиву функције" + +#: awkgram.y:2115 +msgid "invalid subscript expression" +msgstr "неиÑправан израз Ñадржане Ñкрипте" + +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 +msgid "warning: " +msgstr "упозорење: " + +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 +msgid "fatal: " +msgstr "кобно: " + +#: awkgram.y:2559 +msgid "unexpected newline or end of string" +msgstr "неочекивани нови ред или крај ниÑке" + +#: awkgram.y:2580 +msgid "" +"source files / command-line arguments must contain complete functions or " +"rules" +msgstr "" +"изворне датотеке / аргументи линије наредби морају Ñадржати потпуне функције " +"или правила" + +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 +#, c-format +msgid "cannot open source file `%s' for reading: %s" +msgstr "не могу да отворим изворну датотеку „%s“ ради читања: %s" + +#: awkgram.y:2863 awkgram.y:3000 +#, c-format +msgid "cannot open shared library `%s' for reading: %s" +msgstr "не могу да отворим дељену библиотеку „%s“ ради читања: %s" + +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 +msgid "reason unknown" +msgstr "разлог није познат" + +#: awkgram.y:2874 awkgram.y:2898 +#, c-format +msgid "cannot include `%s' and use it as a program file" +msgstr "не могу да обухватим „%s“ и да је кориÑтим као датотеку програма" + +#: awkgram.y:2887 +#, c-format +msgid "already included source file `%s'" +msgstr "већ је обухваћена изворна датотека „%s“" + +#: awkgram.y:2888 +#, c-format +msgid "already loaded shared library `%s'" +msgstr "већ је учитана дељена библиотека „%s“" + +#: awkgram.y:2925 +msgid "@include is a gawk extension" +msgstr "„@include“ је проширење „gawk“-а" + +#: awkgram.y:2931 +msgid "empty filename after @include" +msgstr "празан назив датотеке након „@include“" + +#: awkgram.y:2980 +msgid "@load is a gawk extension" +msgstr "„@load“ је проширење „gawk“-а" + +#: awkgram.y:2987 +msgid "empty filename after @load" +msgstr "празан назив датотеке након „@load“" + +#: awkgram.y:3130 +msgid "empty program text on command line" +msgstr "празан текÑÑ‚ програма на линији наредби" + +#: awkgram.y:3246 debug.c:470 debug.c:628 +#, c-format +msgid "cannot read source file `%s': %s" +msgstr "не могу да прочитам изворну датотеку „%s“: %s" + +#: awkgram.y:3257 +#, c-format +msgid "source file `%s' is empty" +msgstr "изворна датотека „%s“ је празна" + +#: awkgram.y:3317 +#, c-format +msgid "error: invalid character '\\%03o' in source code" +msgstr "грешка: неиÑправан знак „\\%03o“ у изворном коду" + +#: awkgram.y:3544 +msgid "source file does not end in newline" +msgstr "изворна датотека Ñе не завршава у новом реду" + +#: awkgram.y:3665 +msgid "unterminated regexp ends with `\\' at end of file" +msgstr "неокончани регуларни израз Ñе завршава \\ на крају датотеке" + +#: awkgram.y:3692 +#, c-format +msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" +msgstr "" +"%s: %d: „tawk“ измењивач регуларног израза „/.../%c“ не ради у „gawk“-у" + +#: awkgram.y:3696 +#, c-format +msgid "tawk regex modifier `/.../%c' doesn't work in gawk" +msgstr "„tawk“ измењивач регуларног израза „/.../%c“ не ради у „gawk“-у" + +#: awkgram.y:3709 +msgid "unterminated regexp" +msgstr "неокончани регуларни израз" + +#: awkgram.y:3713 +msgid "unterminated regexp at end of file" +msgstr "неокончани регуларни израз на крају датотеке" + +#: awkgram.y:3802 +msgid "use of `\\ #...' line continuation is not portable" +msgstr "употреба наÑтављања реда „\\ #...“ није преноÑива" + +#: awkgram.y:3824 +msgid "backslash not last character on line" +msgstr "контра оÑа црта није поÑледњи знак у реду" + +#: awkgram.y:3871 awkgram.y:3873 +msgid "multidimensional arrays are a gawk extension" +msgstr "вишедимензионални низови Ñу проширења „gawk“-а" + +#: awkgram.y:3898 awkgram.y:3909 +#, c-format +msgid "POSIX does not allow operator `%s'" +msgstr "„POSIX“ не допушта оператора „%s“" + +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 +#, c-format +msgid "operator `%s' is not supported in old awk" +msgstr "оператор „%s“ није подржан у Ñтаром „awk“-у" + +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 +msgid "unterminated string" +msgstr "неокончана ниÑка" + +#: awkgram.y:4061 main.c:1223 +msgid "POSIX does not allow physical newlines in string values" +msgstr "„POSIX“ не допушта физичке нове редове у вредноÑтима ниÑке" + +#: awkgram.y:4063 node.c:453 +msgid "backslash string continuation is not portable" +msgstr "наÑтављање ниÑке контра коÑом цртом није преноÑиво" + +#: awkgram.y:4301 +#, c-format +msgid "invalid char '%c' in expression" +msgstr "неиÑправни знак „%c“ у изразу" + +#: awkgram.y:4396 +#, c-format +msgid "`%s' is a gawk extension" +msgstr "„%s“ је проширење „gawk“-а" + +#: awkgram.y:4401 +#, c-format +msgid "POSIX does not allow `%s'" +msgstr "„POSIX“ не допушта „%s“" + +#: awkgram.y:4409 +#, c-format +msgid "`%s' is not supported in old awk" +msgstr "„%s“ није подржано у Ñтаром „awk“-у" + +#: awkgram.y:4507 +msgid "`goto' considered harmful!" +msgstr "„goto“ Ñе Ñматра опаÑним!" + +#: awkgram.y:4576 +#, c-format +msgid "%d is invalid as number of arguments for %s" +msgstr "%d није иÑправно као број аргумената за „%s“" + +#: awkgram.y:4611 +#, c-format +msgid "%s: string literal as last argument of substitute has no effect" +msgstr "%s: доÑловноÑÑ‚ ниÑке као поÑледњи аргумент заменика нема дејÑтва" + +#: awkgram.y:4616 +#, c-format +msgid "%s third parameter is not a changeable object" +msgstr "„%s“ трећи параметар није променљиви објекат" + +#: awkgram.y:4720 awkgram.y:4723 +msgid "match: third argument is a gawk extension" +msgstr "упореди: трећи аргумент је проширење „gawk“-а" + +#: awkgram.y:4777 awkgram.y:4780 +msgid "close: second argument is a gawk extension" +msgstr "затвори: други аргумент је проширење „gawk“-а" + +#: awkgram.y:4792 +msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" +msgstr "коришћење „dcgettext(_\"...\") је нетачно: уклоните водећу подвлаку" + +#: awkgram.y:4807 +msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" +msgstr "коришћење „dcngettext(_\"...\") је нетачно: уклоните водећу подвлаку" + +#: awkgram.y:4826 +msgid "index: regexp constant as second argument is not allowed" +msgstr "индекÑ: конÑтанта регуларног израза као други аргумент није допуштена" + +#: awkgram.y:4879 +#, c-format +msgid "function `%s': parameter `%s' shadows global variable" +msgstr "функција „%s“: параметар %s“ заÑенчује општу променљиву" + +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 +#, c-format +msgid "could not open `%s' for writing: %s" +msgstr "не могу да отворим „%s“ за упиÑ: %s" + +#: awkgram.y:4929 +msgid "sending variable list to standard error" +msgstr "шаљем ÑпиÑак променљиве на Ñтандардну грешку" + +#: awkgram.y:4937 +#, c-format +msgid "%s: close failed: %s" +msgstr "%s: затварање није уÑпело: %s" + +#: awkgram.y:4962 +msgid "shadow_funcs() called twice!" +msgstr "„shadow_funcs()“ је позвана два пута!" + +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" +msgstr "било је заÑенчених променљивих." + +#: awkgram.y:5047 +#, c-format +msgid "function name `%s' previously defined" +msgstr "назив функције „%s“ је претходно дефиниÑан" + +#: awkgram.y:5098 +#, c-format +msgid "function `%s': cannot use function name as parameter name" +msgstr "функција „%s“: не могу да кориÑтим назив функције као назив параметра" + +#: awkgram.y:5101 +#, c-format +msgid "function `%s': cannot use special variable `%s' as a function parameter" +msgstr "" +"функција „%s“: не могу да кориÑтим нарочиту променљиву „%s“ као параметар " +"функције" + +#: awkgram.y:5105 +#, c-format +msgid "function `%s': parameter `%s' cannot contain a namespace" +msgstr "функција „%s“: параметар „%s“ не може Ñадржати називни проÑтор" + +#: awkgram.y:5112 +#, c-format +msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" +msgstr "функција „%s“: параметар #%d, „%s“, удвоÑтручени параметар #%d" + +#: awkgram.y:5201 +#, c-format +msgid "function `%s' called but never defined" +msgstr "функција „%s“ је позвана али није никада дефиниÑана" + +#: awkgram.y:5205 +#, c-format +msgid "function `%s' defined but never called directly" +msgstr "функција „%s“ је дефиниÑана али никада није позвана директно" + +#: awkgram.y:5237 +#, c-format +msgid "regexp constant for parameter #%d yields boolean value" +msgstr "конÑтанта регуларног израза за параметар #%d даје логичку вредноÑÑ‚" + +#: awkgram.y:5252 +#, c-format +msgid "" +"function `%s' called with space between name and `(',\n" +"or used as a variable or an array" +msgstr "" +"функција „%s“ је позвана Ñа проÑтором између назива и (,\n" +"или је коришћена као променљива или низ" + +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 +msgid "division by zero attempted" +msgstr "покушано је дељње нулом" + +#: awkgram.y:5480 mpfr.c:1558 +#, c-format +msgid "division by zero attempted in `%%'" +msgstr "покушано је дељње нулом у „%%“" + +#: awkgram.y:5825 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "не могу да доделим вредноÑÑ‚ резултату поÑÑ‚-повећавајућем изразу поља" + +#: awkgram.y:5828 +#, c-format +msgid "invalid target of assignment (opcode %s)" +msgstr "неиÑправна мета додељивања (опкод %s)" + +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "" + +#: awkgram.y:6728 +#, c-format +msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" +msgstr "" +"одредник „%s“: квалификовани називи ниÑу допуштени у традиционалном „/ " +"POSIX“ режиму" + +#: awkgram.y:6733 +#, c-format +msgid "identifier %s: namespace separator is two colons, not one" +msgstr "одредник „%s“: раздвојник називног проÑтора Ñу две двотачке, не једна" + +#: awkgram.y:6739 +#, c-format +msgid "qualified identifier `%s' is badly formed" +msgstr "квалификовани одредник „%s“ је лоше обликован" + +#: awkgram.y:6746 +#, c-format +msgid "" +"identifier `%s': namespace separator can only appear once in a qualified name" +msgstr "" +"одре „%s“: раздвојник називног проÑтора може Ñе појавити Ñамо једном у " +"квалификованом називу" + +#: awkgram.y:6795 awkgram.y:6846 +#, c-format +msgid "using reserved identifier `%s' as a namespace is not allowed" +msgstr "" +"коришћење резервиÑаног одредника „%s“ као називни проÑтор није допуштено" + +#: awkgram.y:6802 awkgram.y:6812 +#, c-format +msgid "" +"using reserved identifier `%s' as second component of a qualified name is " +"not allowed" +msgstr "" +"коришћење резервиÑаног одредника „%s“ као другог ÑаÑтојка квалификованог " +"назива није допуштено" + +#: awkgram.y:6830 +msgid "@namespace is a gawk extension" +msgstr "„@namespace“ је проширење „gawk“-а" + +#: awkgram.y:6837 +#, c-format +msgid "namespace name `%s' must meet identifier naming rules" +msgstr "" +"назив називног проÑтора „%s“ мора задовољити правила именовања одредника" + +#: builtin.c:144 +#, c-format +msgid "%s to \"%s\" failed: %s" +msgstr "„%s“ до „%s“ није уÑпело: %s" + +#: builtin.c:148 +msgid "standard output" +msgstr "Ñтандардни излаз" + +#: builtin.c:149 +msgid "standard error" +msgstr "Ñтандардна грешка" + +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 +#, c-format +msgid "%s: received non-numeric argument" +msgstr "%s: примих не-бројевни аргумент" + +#: builtin.c:169 +#, c-format +msgid "exp: argument %g is out of range" +msgstr "изр: аргумент „%g“ је ван опÑега" + +#: builtin.c:246 +#, c-format +msgid "fflush: cannot flush: pipe `%.*s' opened for reading, not writing" +msgstr "" +"fflush: не могу да иÑперем: Ñпојка „%.*s“ је отворена за читање, не за пиÑање" + +#: builtin.c:249 +#, c-format +msgid "fflush: cannot flush: file `%.*s' opened for reading, not writing" +msgstr "" +"fflush: не могу да иÑперем: датотека „%.*s“ је отворена за читање, не за " +"пиÑање" + +#: builtin.c:260 +#, c-format +msgid "fflush: cannot flush file `%.*s': %s" +msgstr "fflush: не могу да иÑперем датотеку „%.*s“: %s" + +#: builtin.c:265 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%.*s' has closed write end" +msgstr "" +"fflush: не могу да иÑперем: двоÑмерна Ñпојка „%.*s“ је затворила крај пиÑања" + +#: builtin.c:271 +#, c-format +msgid "fflush: `%.*s' is not an open file, pipe or co-process" +msgstr "fflush: „%.*s“ није отворена датотека, Ñпојка или ко-процеÑÑ" + +#: builtin.c:378 builtin.c:2023 +#, c-format +msgid "%s: received non-string first argument" +msgstr "%s: примих први аргумент не-ниÑке" + +#: builtin.c:380 +#, c-format +msgid "%s: received non-string second argument" +msgstr "%s: примих други аргумент не-ниÑке" + +#: builtin.c:532 +msgid "length: received array argument" +msgstr "дужина: примих аргумент низа" + +#: builtin.c:535 +msgid "`length(array)' is a gawk extension" +msgstr "„length(array)“ је проширење „gawk“-а" + +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 +#, c-format +msgid "%s: received non-string argument" +msgstr "%s: примих аргумент не-ниÑке" + +#: builtin.c:586 builtin.c:1790 +#, c-format +msgid "%s: received negative argument %g" +msgstr "%s: примих негативни аргумент %g" + +#: builtin.c:791 builtin.c:796 builtin.c:950 +msgid "fatal: must use `count$' on all formats or none" +msgstr "кобно: мора Ñе кориÑтити „count$“ на Ñвим форматима или нигде" + +#: builtin.c:869 +#, c-format +msgid "field width is ignored for `%%' specifier" +msgstr "ширина поља је занемарена за „%%“ наводиоца" + +#: builtin.c:871 +#, c-format +msgid "precision is ignored for `%%' specifier" +msgstr "прецизноÑÑ‚ је занемарена за „%%“ наводиоца" + +#: builtin.c:873 +#, c-format +msgid "field width and precision are ignored for `%%' specifier" +msgstr "ширина поља и прецизноÑÑ‚ Ñу занемарене за „%%“ наводиоца" + +#: builtin.c:924 +msgid "fatal: `$' is not permitted in awk formats" +msgstr "кобно: „$“ није допуштено у форматима „awk“-а" + +#: builtin.c:933 +msgid "fatal: argument index with `$' must be > 0" +msgstr "кобно: Ð¸Ð½Ð´ÐµÐºÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð° Ñа „$“ мора бити > 0" + +#: builtin.c:937 +#, c-format +msgid "" +"fatal: argument index %ld greater than total number of supplied arguments" +msgstr "" +"кобно: Ð¸Ð½Ð´ÐµÐºÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð° %ld је већи од укупног броја доÑтављених аргумената" + +#: builtin.c:941 +msgid "fatal: `$' not permitted after period in format" +msgstr "кобно: „$“ није дозвољено након тачке у формату" + +#: builtin.c:960 +msgid "fatal: no `$' supplied for positional field width or precision" +msgstr "кобно: „$“ није доÑтављно за позициону ширину поља или прецизноÑÑ‚" + +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "„l“ је безначајно у форматима „awk“-а; занемарено" + +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "кобно: „l“ није дозвољено у форматима „POSIX awk“-а" + +#: builtin.c:1070 +#, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: вредноÑÑ‚ %g је превелика за „%%c“ формат" + +#: builtin.c:1083 +#, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: вредноÑÑ‚ %g није иÑправан знак ширине" + +#: builtin.c:1475 +#, c-format +msgid "[s]printf: value %g is out of range for `%%%c' format" +msgstr "[s]printf: вредноÑÑ‚ %g је ван опÑега за „%%%c“ формат" + +#: builtin.c:1483 +#, c-format +msgid "[s]printf: value %s is out of range for `%%%c' format" +msgstr "[s]printf: вредноÑÑ‚ „%s“ је ван опÑега за „%%%c“ формат" + +#: builtin.c:1508 +#, c-format +msgid "%%%c format is POSIX standard but not portable to other awks" +msgstr "„%%%c“ формат је „POSIX“ Ñтандард али није преноÑив на друге „awk“-Ñе" + +#: builtin.c:1619 +#, c-format +msgid "ignoring unknown format specifier character `%c': no argument converted" +msgstr "" +"занемарујем непознат знак одредника формата „%c“: ниједан аргумент није " +"претворен" + +#: builtin.c:1624 +msgid "fatal: not enough arguments to satisfy format string" +msgstr "кобно: нема довољно аргумената за задовољење ниÑке формата" + +#: builtin.c:1626 +msgid "^ ran out for this one" +msgstr "^ је иÑтекло за овај један" + +#: builtin.c:1633 +msgid "[s]printf: format specifier does not have control letter" +msgstr "[s]printf: одредник формата нема контролно Ñлово" + +#: builtin.c:1636 +msgid "too many arguments supplied for format string" +msgstr "превише аргумената је доÑтављено за ниÑку формата" + +#: builtin.c:1696 +msgid "sprintf: no arguments" +msgstr "sprintf: нема аргумената" + +#: builtin.c:1719 builtin.c:1730 +msgid "printf: no arguments" +msgstr "printf: нема аргумената" + +#: builtin.c:1745 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "printf: покушах да пишем на затворени крај пиÑања двоÑмерне Ñпојке" + +#: builtin.c:1821 +#, c-format +msgid "substr: length %g is not >= 1" +msgstr "substr: дужина %g није >= 1" + +#: builtin.c:1823 +#, c-format +msgid "substr: length %g is not >= 0" +msgstr "substr: дужина %g није >= 0" + +#: builtin.c:1837 +#, c-format +msgid "substr: non-integer length %g will be truncated" +msgstr "substr: дужина не-целог броја %g биће Ñкраћена" + +#: builtin.c:1842 +#, c-format +msgid "substr: length %g too big for string indexing, truncating to %g" +msgstr "substr: дужина %g је превелика за индекÑирање ниÑке, Ñкраћујем на %g" + +#: builtin.c:1854 +#, c-format +msgid "substr: start index %g is invalid, using 1" +msgstr "substr: Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ° %g је неиÑправан, кориÑтим 1" + +#: builtin.c:1859 +#, c-format +msgid "substr: non-integer start index %g will be truncated" +msgstr "substr: Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ° не-целог броја %g биће Ñкраћен" + +#: builtin.c:1882 +msgid "substr: source string is zero length" +msgstr "substr: изворна ниÑка је нулте дужине" + +#: builtin.c:1896 +#, c-format +msgid "substr: start index %g is past end of string" +msgstr "substr: Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ° %g је прешао крај ниÑке" + +#: builtin.c:1904 +#, c-format +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: дужина %g на индекÑу почетка %g превазилази дужину првог аргумента " +"(%lu)" + +#: builtin.c:1977 +msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" +msgstr "" +"strftime: вредноÑÑ‚ формата у „PROCINFO[\"strftime\"]“ има бројевну врÑту" + +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 +#, c-format +msgid "%s: received non-numeric second argument" +msgstr "%s: примих други аргумент који није број" + +#: builtin.c:2007 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "strftime: други аргумент је мањи од 0 или је превелик за „time_t“" + +#: builtin.c:2014 +msgid "strftime: second argument out of range for time_t" +msgstr "strftime: други аргумент је ван опÑега за „time_t“" + +#: builtin.c:2030 +msgid "strftime: received empty format string" +msgstr "strftime: примих празну ниÑку формата" + +#: builtin.c:2132 +msgid "mktime: at least one of the values is out of the default range" +msgstr "mktime: барем једна од вредноÑти је ван оÑновног опÑега" + +#: builtin.c:2168 +msgid "'system' function not allowed in sandbox mode" +msgstr "функција „system“ није допуштена у режиму изолованог окружења" + +#: builtin.c:2242 builtin.c:2317 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "print: покушах да пишем на затворени крај пиÑања двоÑмерне Ñпојке" + +#: builtin.c:2340 +#, c-format +msgid "reference to uninitialized field `$%d'" +msgstr "упута на незапочето поље „$%d“" + +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 +#, c-format +msgid "%s: received non-numeric first argument" +msgstr "%s: примих први аргумент који није број" + +#: builtin.c:2671 +msgid "match: third argument is not an array" +msgstr "match: трећи аргумент није низ" + +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: не могу да добавим трећи аргумент" + +#: builtin.c:2916 +#, c-format +msgid "gensub: third argument `%.*s' treated as 1" +msgstr "gensub: трећи аргумент „%.*s“ Ñе Ñматра 1" + +#: builtin.c:3267 +#, c-format +msgid "%s: can be called indirectly only with two arguments" +msgstr "%s: може бити позвано индиректно Ñамо Ñа два аргумента" + +#: builtin.c:3390 +#, c-format +msgid "indirect call to %s requires at least two arguments" +msgstr "индиректни позив ка „%s“ захтева барем два аргумента" + +#: builtin.c:3465 +#, c-format +msgid "lshift(%f, %f): negative values are not allowed" +msgstr "lshift(%f, %f): негативне вредноÑти ниÑу допуштене" + +#: builtin.c:3469 +#, c-format +msgid "lshift(%f, %f): fractional values will be truncated" +msgstr "lshift(%f, %f): разломачке вредноÑти биће Ñкраћене" + +#: builtin.c:3471 +#, c-format +msgid "lshift(%f, %f): too large shift value will give strange results" +msgstr "lshift(%f, %f): превелика вредноÑÑ‚ помака даће чудне резултате" + +#: builtin.c:3504 +#, c-format +msgid "rshift(%f, %f): negative values are not allowed" +msgstr "rshift(%f, %f): негативне вредноÑти ниÑу допуштене" + +#: builtin.c:3508 +#, c-format +msgid "rshift(%f, %f): fractional values will be truncated" +msgstr "rshift(%f, %f): разломачке вредноÑти биће Ñкраћене" + +#: builtin.c:3510 +#, c-format +msgid "rshift(%f, %f): too large shift value will give strange results" +msgstr "rshift(%f, %f): превелика вредноÑÑ‚ помака даће чудне резултате" + +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 +#, c-format +msgid "%s: called with less than two arguments" +msgstr "%s: позвана Ñа мање од два аргумента" + +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 +#, c-format +msgid "%s: argument %d is non-numeric" +msgstr "%s: аргумент %d није број" + +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 +#, c-format +msgid "%s: argument %d negative value %g is not allowed" +msgstr "%s: аргумента %d негативна вредноÑÑ‚ %g није допуштена" + +#: builtin.c:3632 +#, c-format +msgid "compl(%f): negative value is not allowed" +msgstr "compl(%f): негативна вредноÑÑ‚ није допуштена" + +#: builtin.c:3635 +#, c-format +msgid "compl(%f): fractional value will be truncated" +msgstr "compl(%f): разломачка вредноÑÑ‚ биће Ñкраћена" + +#: builtin.c:3821 +#, c-format +msgid "dcgettext: `%s' is not a valid locale category" +msgstr "dcgettext: „%s“ није иÑправна локална категорија" + +#: builtin.c:4048 mpfr.c:1261 +msgid "intdiv: third argument is not an array" +msgstr "intdiv: трећи аргумент није низ" + +#: builtin.c:4067 mpfr.c:1310 +msgid "intdiv: division by zero attempted" +msgstr "intdiv: покушано је дељење нулом" + +#: builtin.c:4106 +msgid "typeof: second argument is not an array" +msgstr "typeof: други аргумент није низ" + +#: builtin.c:4178 +#, fuzzy, c-format +#| msgid "" +#| "typeof detected invalid flags combination `%s'; please file a bug report." +msgid "" +"typeof detected invalid flags combination `%s'; please file a bug report" +msgstr "" +"„typeof“ открива неиÑправну комбинацију заÑтавица „%s“; будите љубазни " +"попуните извештај о грешци." + +#: builtin.c:4198 +#, c-format +msgid "typeof: invalid argument type `%s'" +msgstr "typeof: неиÑправна врÑта аргумента „%s“" + +#: builtin.c:4202 +#, c-format +msgid "typeof: unknown argument type `%s'" +msgstr "typeof: непозната врÑта аргумента „%s“" + +#: cint_array.c:1268 cint_array.c:1296 +#, c-format +msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" +msgstr "" +"не могу да додам нову датотеку (%.*s) „ARGV“-у у режиму изолованог окружења" + +#: command.y:228 +#, c-format +msgid "Type (g)awk statement(s). End with the command `end'\n" +msgstr "Упишите иÑказ(е) „(g)awkд-а. Завршите наредбом „end“\n" + +#: command.y:292 +#, c-format +msgid "invalid frame number: %d" +msgstr "неиÑправан број оквира: %d" + +#: command.y:298 +#, c-format +msgid "info: invalid option - `%s'" +msgstr "info: неиÑправна опција – „%s“" + +#: command.y:324 +#, fuzzy, c-format +#| msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" +msgstr "source: „%s“: већ је изворовано." + +#: command.y:329 +#, fuzzy, c-format +#| msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" +msgstr "save: „%s“: наредба није дозвољена." + +#: command.y:342 +msgid "cannot use command `commands' for breakpoint/watchpoint commands" +msgstr "" +"не могу кориÑтити наредбу „commands“ за наредбе тачке прекида/тачке " +"поÑматрања" + +#: command.y:344 +msgid "no breakpoint/watchpoint has been set yet" +msgstr "још увек није поÑтављена тачка прекида/тачка поÑматрања" + +#: command.y:346 +msgid "invalid breakpoint/watchpoint number" +msgstr "неиÑправан број тачке прекида/тачке поÑматрања" + +#: command.y:351 +#, c-format +msgid "Type commands for when %s %d is hit, one per line.\n" +msgstr "Упишите наредбе када је „%s %d“ покренуто, по једну у реду.\n" + +#: command.y:353 +#, c-format +msgid "End with the command `end'\n" +msgstr "Завршите наредбом „end“\n" + +#: command.y:360 +msgid "`end' valid only in command `commands' or `eval'" +msgstr "„end“ је иÑправно Ñамо у наредби „commands“ или „eval“" + +#: command.y:370 +msgid "`silent' valid only in command `commands'" +msgstr "„silent“ је иÑправно Ñамо у наредби „commands“" + +#: command.y:376 +#, c-format +msgid "trace: invalid option - `%s'" +msgstr "trace: неиÑправна опција – „%s“" + +#: command.y:390 +msgid "condition: invalid breakpoint/watchpoint number" +msgstr "condition: неиÑправан број тачке прекида/тачке поÑматрања" + +#: command.y:452 +msgid "argument not a string" +msgstr "аргумент није ниÑка" + +#: command.y:462 command.y:467 +#, c-format +msgid "option: invalid parameter - `%s'" +msgstr "option: неиÑправан параметар – „%s“" + +#: command.y:477 +#, c-format +msgid "no such function - `%s'" +msgstr "нема такве функције – „%s“" + +#: command.y:534 +#, c-format +msgid "enable: invalid option - `%s'" +msgstr "enable: неиÑправна опција – „%s“" + +#: command.y:600 +#, c-format +msgid "invalid range specification: %d - %d" +msgstr "неиÑправна одредница опÑега: %d – %d" + +#: command.y:662 +msgid "non-numeric value for field number" +msgstr "вредноÑÑ‚ која није број за број поља" + +#: command.y:683 command.y:690 +msgid "non-numeric value found, numeric expected" +msgstr "нађох не-бројевну вредноÑÑ‚, очекивах бројевну" + +#: command.y:715 command.y:721 +msgid "non-zero integer value" +msgstr "не-нулта вредноÑÑ‚ целог броја" + +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" +msgstr "" +"backtrace [N] – иÑпиÑује траг Ñвих или N најунутрашњијих (најÑпољашњијих ако " +"је N < 0) оквира." + +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location" +msgstr "" +"break [[датотека:]N|функција] – поÑтавља тачку прекида на наведено меÑто." + +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" +msgstr "" +"clear [[датотека:]N|функција] – брише претходно поÑтављене тачке прекида." + +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit" +msgstr "" +"commands [број] – започиње ÑпиÑак наредби које ће бити извршене при поготку " +"тачке прекида (тачке поÑматрања)." + +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" +msgstr "" +"condition num [израз] – поÑтавља или брише уÑлов тачке прекида или тачке " +"поÑматрања." + +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [БРОЈ] – наÑтавља Ñа програмом који Ñе прочишћава." + +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "delete [тачке прекида] [опÑег] – брише наведене тачке прекида." + +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" +msgstr "disable [тачке прекида] [опÑег] – онемогућује наведене тачке прекида." + +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" +msgstr "" +"display [пром] – иÑпиÑује вредноÑÑ‚ променљиве при Ñваком зауÑтављању " +"програма." + +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" +msgstr "down [N] – премешта N оквира низ Ñпремник." + +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" +msgstr "" +"dump [датотека] – избацује инÑтрукције у датотеку или Ñтандардни излаз." + +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" +msgstr "" +"enable [једном|брише] [тачке прекида] [опÑег] – омогућује неведене тачке " +"прекида." + +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" +msgstr "end – завршава ÑпиÑак наредби или иÑказе „awk“-а." + +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval stmt|[p1, p2, ...] – процењује иÑказ(е) „awk“-а." + +#: command.y:848 +#, fuzzy +#| msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" +msgstr "exit – (иÑто као „quit“) излази из прочишћавача." + +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" +msgstr "finish – извршава Ñве до повратка изабраног оквира Ñпремника." + +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] – бира и иÑпиÑује број оквира Ñпремника N." + +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" +msgstr "help [наредба] – иÑпиÑује ÑпиÑак наредби или објашњење наредбе." + +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" +msgstr "" +"ignore N БРОЈ – поÑтавља укупноÑÑ‚ занемаривања броја тачке прекида N на БРОЈ." + +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." +msgid "" +"info topic - source|sources|variables|functions|break|frame|args|locals|" +"display|watch" +msgstr "" +"info topic – извор|извори|променљиве|функције|прекид|оквир|аргументи|меÑта|" +"приказ|поÑматрај." + +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" +msgstr "list [-|+|[датотека:]бр.реда|функција|опÑег] – иÑпиÑује наведени ред." + +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" +msgstr "" +"next [УКУПÐО] – прави корак програма, наÑтављајући кроз позиве подрутине." + +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" +msgstr "" +"nexti [УКУПÐО] – прави корак једне инÑтрукције, али наÑтавља кроз позиве " +"подрутине." + +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "" +"option [назив[=вредноÑÑ‚]] – поÑтавља или приказује опције прочишћавача." + +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" +msgstr "print var [пром] – иÑпиÑује вредноÑÑ‚ променљиве или низа." + +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" +msgstr "printf format, [арг], ... – обликован излаз." + +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" +msgstr "quit – напушта прочишћавача." + +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" +msgstr "" +"return [вредноÑÑ‚] – чини да Ñе изабрани оквир Ñпремника врати Ñвом позивару." + +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" +msgstr "run – покреће или поново покреће извршавање програма." + +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" +msgstr "save датотека – чува наредбе из ÑеÑије у датотеку." + +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" +msgstr "set var = вредноÑÑ‚ – додељује вредноÑÑ‚ променљивој Ñкалара." + +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" +msgstr "" +"silent – обуÑтавља обичну поруку када је зауÑтављен на тачки прекида/тачки " +"поÑматрања." + +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" +msgstr "source датотека – извршава наредбе из датотеке." + +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" +msgstr "" +"step [УКУПÐО] – прави корак програма Ñве док не доÑтигне другачији изворни " +"ред." + +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [УКУПÐО] – прави корак тачно једне инÑтрукције." + +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[датотека:]N|функција] – поÑтавља привремену тачку прекида." + +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" +msgstr "trace укљ|иÑкљ – иÑпиÑује инÑтрукције пре извршавања." + +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" +msgstr "undisplay [N] – уклања променљиве Ñа ÑамоÑталног ÑпиÑак приказа." + +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame" +msgstr "" +"until [[датотека:]N|функција] – извршава Ñве док програм не доÑтигне " +"другачији ред или ред N унутар текућег оквира." + +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] – уклања променљиве Ñа ÑпиÑка поÑматрања." + +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" +msgstr "up [N] – премешта N оквира уз Ñпремник." + +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" +msgstr "watch пром – поÑтавља тачку поÑматрања за променљиву." + +#: command.y:906 +#, fuzzy +#| msgid "" +#| "where [N] - (same as backtrace) print trace of all or N innermost " +#| "(outermost if N < 0) frames." +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames" +msgstr "" +"where [N] – (isto kao „backtrace“) иÑпиÑује траг Ñвих или N најунутрашњијих " +"(најÑпољашњијих ако је N < 0) оквира." + +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 +#, c-format +msgid "error: " +msgstr "грешка: " + +#: command.y:1061 +#, c-format +msgid "cannot read command: %s\n" +msgstr "не могу да прочитам наредбу: %s\n" + +#: command.y:1075 +#, c-format +msgid "cannot read command: %s" +msgstr "не могу да прочитам наредбу: %s" + +#: command.y:1126 +msgid "invalid character in command" +msgstr "неиÑправан знак у наредби" + +#: command.y:1162 +#, c-format +msgid "unknown command - `%.*s', try help" +msgstr "непозната наредба – „%.*s“, пробајте „help“" + +#: command.y:1232 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.y:1294 +msgid "invalid character" +msgstr "погрешан знак" + +#: command.y:1498 +#, c-format +msgid "undefined command: %s\n" +msgstr "недефиниÑана наредба: %s\n" + +#: debug.c:257 +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" +msgstr "" +"поÑтавља или приказује број редова за задржавање у датотеци иÑторијата." + +#: debug.c:259 +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" +msgstr "поÑтавља или приказује величину прозора ÑпиÑка наредби." + +#: debug.c:261 +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" +msgstr "поÑтавља или приказује излазну датотеку „gawk“-а." + +#: debug.c:263 +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" +msgstr "поÑтавља или приказује упит прочишћавача." + +#: debug.c:265 +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" +msgstr "" +"(поништава)поÑтавља или приказује чување иÑторијата наредбе (value=укљ|иÑкљ)." + +#: debug.c:267 +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" +msgstr "(поништава)поÑтавља или приказује чување опција (value=укљ|иÑкљ)." + +#: debug.c:269 +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" +msgstr "" +"(поништава)поÑтавља или приказује праћење инÑтрукција (value=укљ|иÑкљ)." + +#: debug.c:358 +#, fuzzy +#| msgid "program not running." +msgid "program not running" +msgstr "програм није покренут." + +#: debug.c:475 +#, c-format +msgid "source file `%s' is empty.\n" +msgstr "изворна датотека „%s“ је празна.\n" + +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" +msgstr "нема текуће изворне датотеке." + +#: debug.c:527 +#, c-format +msgid "cannot find source file named `%s': %s" +msgstr "не могу да нађем изворну датотеку „%s“: %s" + +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" +msgstr "УПОЗОРЕЊЕ: изворна датотека „%s“ је измењена од превођења програма.\n" + +#: debug.c:573 +#, c-format +msgid "line number %d out of range; `%s' has %d lines" +msgstr "број реда %d је ван опÑега; „%s“ има %d реда" + +#: debug.c:633 +#, c-format +msgid "unexpected eof while reading file `%s', line %d" +msgstr "неочекивани крај датотеке приликом читања „%s“, ред бр. %d" + +#: debug.c:642 +#, c-format +msgid "source file `%s' modified since start of program execution" +msgstr "изворна датотека „%s“ је измењена од почетка извршавања програма" + +#: debug.c:754 +#, c-format +msgid "Current source file: %s\n" +msgstr "Текућа изворна датотека: %s\n" + +#: debug.c:755 +#, c-format +msgid "Number of lines: %d\n" +msgstr "Број редова: %d\n" + +#: debug.c:762 +#, c-format +msgid "Source file (lines): %s (%d)\n" +msgstr "Изворна датотека (редова): %s (%d)\n" + +#: debug.c:776 +msgid "" +"Number Disp Enabled Location\n" +"\n" +msgstr "" +"Број Прик Омогућено МеÑто\n" +"\n" + +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" +msgstr "\tбр. погодака = %ld\n" + +#: debug.c:789 +#, c-format +msgid "\tignore next %ld hit(s)\n" +msgstr "\tзанемари Ñледећа %ld поготка\n" + +#: debug.c:791 debug.c:931 +#, c-format +msgid "\tstop condition: %s\n" +msgstr "\tуÑлов зауÑтављања: %s\n" + +#: debug.c:793 debug.c:933 +msgid "\tcommands:\n" +msgstr "\tнаредбе:\n" + +#: debug.c:815 +#, c-format +msgid "Current frame: " +msgstr "Текући оквир: " + +#: debug.c:818 +#, c-format +msgid "Called by frame: " +msgstr "Позвано оквиром: " + +#: debug.c:822 +#, c-format +msgid "Caller of frame: " +msgstr "Позивар оквира: " + +#: debug.c:840 +#, c-format +msgid "None in main().\n" +msgstr "Ðичега у „main()“.\n" + +#: debug.c:870 +msgid "No arguments.\n" +msgstr "Ðема аргумената.\n" + +#: debug.c:871 +msgid "No locals.\n" +msgstr "Ðема меÑних.\n" + +#: debug.c:879 +msgid "" +"All defined variables:\n" +"\n" +msgstr "" +"Све дефиниÑане променљиве:\n" +"\n" + +#: debug.c:889 +msgid "" +"All defined functions:\n" +"\n" +msgstr "" +"Све дефиниÑане функције:\n" +"\n" + +#: debug.c:908 +msgid "" +"Auto-display variables:\n" +"\n" +msgstr "" +"Променљиве Ñамо-приказивања:\n" +"\n" + +#: debug.c:911 +msgid "" +"Watch variables:\n" +"\n" +msgstr "" +"Променљиве поÑматрања:\n" +"\n" + +#: debug.c:1051 +#, c-format +msgid "no symbol `%s' in current context\n" +msgstr "нема Ñимбола „%s“ у текућем контекÑту\n" + +#: debug.c:1063 debug.c:1451 +#, c-format +msgid "`%s' is not an array\n" +msgstr "„%s“ није низ\n" + +#: debug.c:1077 +#, c-format +msgid "$%ld = uninitialized field\n" +msgstr "$%ld = незапочето поље\n" + +#: debug.c:1098 +#, c-format +msgid "array `%s' is empty\n" +msgstr "низ „%s“ је празан\n" + +#: debug.c:1141 debug.c:1193 +#, fuzzy, c-format +#| msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "[„%.*s“] није у низу „%s“\n" + +#: debug.c:1197 +#, c-format +msgid "`%s[\"%.*s\"]' is not an array\n" +msgstr "„%s[\"%.*s\"]“ није у низу\n" + +#: debug.c:1258 debug.c:5115 +#, c-format +msgid "`%s' is not a scalar variable" +msgstr "„%s“ није променљива Ñкалара" + +#: debug.c:1281 debug.c:5145 +#, c-format +msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" +msgstr "покушах да кориÑтим низ „%s[\"%.*s\"]“ у контекÑту Ñкалара" + +#: debug.c:1304 debug.c:5156 +#, c-format +msgid "attempt to use scalar `%s[\"%.*s\"]' as array" +msgstr "покушах да кориÑтим Ñкалар „%s[\"%.*s\"]“ као низ" + +#: debug.c:1447 +#, c-format +msgid "`%s' is a function" +msgstr "„%s“ јеÑте функција" + +#: debug.c:1489 +#, c-format +msgid "watchpoint %d is unconditional\n" +msgstr "тачка поÑматрања %d је безуÑловна\n" + +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" +msgstr "Ðема Ñтавке приказа под бројем %ld" + +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" +msgstr "Ðема Ñтавке поÑматрања под бројем %ld" + +#: debug.c:1552 +#, fuzzy, c-format +#| msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: [\"%.*s\"] није у низу „%s“\n" + +#: debug.c:1791 +msgid "attempt to use scalar value as array" +msgstr "покушах да кориÑтим вредноÑÑ‚ Ñкалара као низ" + +#: debug.c:1882 +#, c-format +msgid "Watchpoint %d deleted because parameter is out of scope.\n" +msgstr "Тачка поÑматрања %d је обриÑана јер је параметар ван доÑега.\n" + +#: debug.c:1893 +#, c-format +msgid "Display %d deleted because parameter is out of scope.\n" +msgstr "Приказ %d је обриÑан јер је параметар ван доÑега.\n" + +#: debug.c:1926 +#, c-format +msgid " in file `%s', line %d\n" +msgstr " у датотеци „%s“, ред бр. %d\n" + +#: debug.c:1947 +#, c-format +msgid " at `%s':%d" +msgstr " у „%s“:%d" + +#: debug.c:1963 debug.c:2026 +#, c-format +msgid "#%ld\tin " +msgstr "#%ld\tу " + +#: debug.c:2000 +#, c-format +msgid "More stack frames follow ...\n" +msgstr "Још оквира Ñпремника Ñледи ...\n" + +#: debug.c:2043 +msgid "invalid frame number" +msgstr "неиÑправан број оквира" + +#: debug.c:2226 +#, c-format +msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" +msgstr "" +"Ðапомена: тачка прекида %d (омогућена, занемарујем Ñледећа %ld поготка), " +"такође поÑтављено на „%s:%d“" + +#: debug.c:2233 +#, c-format +msgid "Note: breakpoint %d (enabled), also set at %s:%d" +msgstr "Ðапомена: тачка прекида %d (омогућена), такође поÑтављено на „%s:%d“" + +#: debug.c:2240 +#, c-format +msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" +msgstr "" +"Ðапомена: тачка прекида %d (онемогућена, занемарујем Ñледећа %ld поготка), " +"такође поÑтављено на „%s:%d“" + +#: debug.c:2247 +#, c-format +msgid "Note: breakpoint %d (disabled), also set at %s:%d" +msgstr "Ðапомена: тачка прекида %d (онемогућена), такође поÑтављено на „%s:%d“" + +#: debug.c:2264 +#, c-format +msgid "Breakpoint %d set at file `%s', line %d\n" +msgstr "Тачка прекида %d поÑтављена у датотеци „%s“, ред %d\n" + +#: debug.c:2366 +#, c-format +msgid "cannot set breakpoint in file `%s'\n" +msgstr "не могу да подеÑим тачку прекида у датотеци „%s“\n" + +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" +msgstr "број реда %d у датотеци „%s“ је ван опÑега" + +#: debug.c:2399 +#, c-format +msgid "internal error: cannot find rule\n" +msgstr "унутрашња грешка: не могу да нађем правило\n" + +#: debug.c:2401 +#, c-format +msgid "cannot set breakpoint at `%s':%d\n" +msgstr "не могу да подеÑим тачку прекида на „%s“:%d\n" + +#: debug.c:2413 +#, c-format +msgid "cannot set breakpoint in function `%s'\n" +msgstr "не могу да поÑтавим тачку прекида у функцији „%s“\n" + +#: debug.c:2431 +#, c-format +msgid "breakpoint %d set at file `%s', line %d is unconditional\n" +msgstr "тачка прекида %d је поÑтављена у датотеци „%s“, ред %d је безуÑловна\n" + +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "број реда %d у датотеци „%s“ је ван опÑега" + +#: debug.c:2536 debug.c:2558 +#, c-format +msgid "Deleted breakpoint %d" +msgstr "ОбриÑах тачку прекида %d" + +#: debug.c:2542 +#, c-format +msgid "No breakpoint(s) at entry to function `%s'\n" +msgstr "Ðема тачке прекида у уноÑу за функцију „%s“\n" + +#: debug.c:2569 +#, c-format +msgid "No breakpoint at file `%s', line #%d\n" +msgstr "Ðема тачке прекида у датотеци „%s“, ред #%d\n" + +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 +msgid "invalid breakpoint number" +msgstr "неиÑправан број тачке прекида" + +#: debug.c:2640 +msgid "Delete all breakpoints? (y or n) " +msgstr "Да обришем Ñве тачке прекида? (д или н) " + +#: debug.c:2641 debug.c:2951 debug.c:3004 +msgid "y" +msgstr "д" + +#: debug.c:2690 +#, c-format +msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" +msgstr "Занемарићу Ñледећа %ld укрштања тачке прекида %d.\n" + +#: debug.c:2694 +#, c-format +msgid "Will stop next time breakpoint %d is reached.\n" +msgstr "ЗауÑтавићу Ñе када Ñе Ñледећи пут доÑтигне тачка прекида %d.\n" + +#: debug.c:2811 +#, c-format +msgid "Can only debug programs provided with the `-f' option.\n" +msgstr "Могу да прочиÑтим Ñамо програме доÑтављене опцијом „-f“.\n" + +#: debug.c:2936 +#, c-format +msgid "Failed to restart debugger" +msgstr "ÐиÑам уÑпео поново да покренем прочишћавача" + +#: debug.c:2950 +msgid "Program already running. Restart from beginning (y/n)? " +msgstr "Програм је већ покренут. Да покренем поново од почетка (д/н)? " + +#: debug.c:2954 +#, c-format +msgid "Program not restarted\n" +msgstr "Програм није поново покренут\n" + +#: debug.c:2964 +#, c-format +msgid "error: cannot restart, operation not allowed\n" +msgstr "грешка: не могу поново да покренем, операција није допуштена\n" + +#: debug.c:2970 +#, c-format +msgid "error (%s): cannot restart, ignoring rest of the commands\n" +msgstr "грешка (%s): не могу поново да покренем, занемарујем оÑтатак наредбе\n" + +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" +msgstr "Покрећем програм: \n" + +#: debug.c:2988 +#, c-format +msgid "Program exited abnormally with exit value: %d\n" +msgstr "Програм је изашао ненормално Ñа вредношћу излаза: %d\n" + +#: debug.c:2989 +#, c-format +msgid "Program exited normally with exit value: %d\n" +msgstr "Програм је изашао нормално Ñа вредношћу излаза: %d\n" + +#: debug.c:3003 +msgid "The program is running. Exit anyway (y/n)? " +msgstr "Програм ради. Да ипак изађем (д/н)? " + +#: debug.c:3038 +#, c-format +msgid "Not stopped at any breakpoint; argument ignored.\n" +msgstr "Ðије зауÑтављен ни на једној тачки прекида; аргумент је занемарен.\n" + +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" +msgstr "неиÑправан број тачке прекида %d." + +#: debug.c:3048 +#, c-format +msgid "Will ignore next %ld crossings of breakpoint %d.\n" +msgstr "Занемарићу Ñледећа %ld укрштања тачке прекида %d.\n" + +#: debug.c:3235 +#, c-format +msgid "'finish' not meaningful in the outermost frame main()\n" +msgstr "„finish“ није значајно у најудаљенијој оквирној „main()“\n" + +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " +msgstr "Ради до повратка из " + +#: debug.c:3283 +#, c-format +msgid "'return' not meaningful in the outermost frame main()\n" +msgstr "„return“ није значајно у најудаљенијој оквирној „main()“\n" + +#: debug.c:3397 +#, c-format +msgid "cannot find specified location in function `%s'\n" +msgstr "не могу да нађем наведену локацију у функцији „%s“\n" + +#: debug.c:3405 +#, c-format +msgid "invalid source line %d in file `%s'" +msgstr "неиÑправан изворни ред %d у датотеци „%s“" + +#: debug.c:3420 +#, c-format +msgid "cannot find specified location %d in file `%s'\n" +msgstr "не могу да нађем наведену локацију %d у датотеци „%s“\n" + +#: debug.c:3452 +#, c-format +msgid "element not in array\n" +msgstr "елемент није у низу\n" + +#: debug.c:3452 +#, c-format +msgid "untyped variable\n" +msgstr "безврÑна променљива\n" + +#: debug.c:3494 +#, c-format +msgid "Stopping in %s ...\n" +msgstr "Стајем у „%s“ ...\n" + +#: debug.c:3571 +#, c-format +msgid "'finish' not meaningful with non-local jump '%s'\n" +msgstr "„finish“ није од значаја Ñа не-локалним Ñкоком „%s“\n" + +#: debug.c:3578 +#, c-format +msgid "'until' not meaningful with non-local jump '%s'\n" +msgstr "„until“ није од значаја Ñа не-локалним Ñкоком „%s“\n" + +#. TRANSLATORS: don't translate the 'q' inside the brackets. +#: debug.c:4335 +msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" +msgstr "\t------[УнеÑи] за наÑтавак или [q] + [УнеÑи] за прекид------" + +#: debug.c:5152 +#, c-format +msgid "[\"%.*s\"] not in array `%s'" +msgstr "[\"%.*s\"] није у низу „%s“" + +#: debug.c:5358 +#, c-format +msgid "sending output to stdout\n" +msgstr "шаљем излаз на Ñтандардни излаз\n" + +#: debug.c:5398 +msgid "invalid number" +msgstr "неиÑправан број" + +#: debug.c:5532 +#, c-format +msgid "`%s' not allowed in current context; statement ignored" +msgstr "„%s“ није допуштено у текућем контекÑту; иÑказ је занемарен" + +#: debug.c:5540 +msgid "`return' not allowed in current context; statement ignored" +msgstr "„return“ није допуштено у текућем контекÑту; иÑказ је занемарен" + +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "нема Ñимбола „%s“ у текућем контекÑту\n" + +#: eval.c:403 +#, c-format +msgid "unknown nodetype %d" +msgstr "непозната врÑта чвора %d" + +#: eval.c:414 eval.c:430 +#, c-format +msgid "unknown opcode %d" +msgstr "непознат опкод %d" + +#: eval.c:427 +#, c-format +msgid "opcode %s not an operator or keyword" +msgstr "опкод „“ није оператер или кључна реч%s" + +#: eval.c:485 +msgid "buffer overflow in genflags2str" +msgstr "прекорачење међумеморије у „genflags2str“" + +#: eval.c:689 +#, c-format +msgid "" +"\n" +"\t# Function Call Stack:\n" +"\n" +msgstr "" +"\n" +"\t# Функција Позив Спремник:\n" +"\n" + +#: eval.c:715 +msgid "`IGNORECASE' is a gawk extension" +msgstr "„IGNORECASE“ је проширење „gawk“-а" + +#: eval.c:736 +msgid "`BINMODE' is a gawk extension" +msgstr "„BINMODE“ је проширење „gawk“-а" + +#: eval.c:793 +#, c-format +msgid "BINMODE value `%s' is invalid, treated as 3" +msgstr "„BINMODE“ вредноÑÑ‚ „%s“ је неиÑправна, Ñматра Ñе 3" + +#: eval.c:916 +#, c-format +msgid "bad `%sFMT' specification `%s'" +msgstr "лоша „%sFMT“ одредба „%s“" + +#: eval.c:986 +msgid "turning off `--lint' due to assignment to `LINT'" +msgstr "иÑкључујем „--lint“ уÑлед додељивања „LINT“-у" + +#: eval.c:1180 +#, c-format +msgid "reference to uninitialized argument `%s'" +msgstr "упута на незапочети аргумент „%s“" + +#: eval.c:1181 +#, c-format +msgid "reference to uninitialized variable `%s'" +msgstr "упута на незапочету променљиву „%s“" + +#: eval.c:1199 +msgid "attempt to field reference from non-numeric value" +msgstr "покушај до упуте поља из не-бројевне вредноÑти" + +#: eval.c:1201 +msgid "attempt to field reference from null string" +msgstr "покушај до упуте поља из ништавне ниÑке" + +#: eval.c:1209 +#, c-format +msgid "attempt to access field %ld" +msgstr "покушај приÑтупа пољу %ld" + +#: eval.c:1218 +#, c-format +msgid "reference to uninitialized field `$%ld'" +msgstr "упута на незапочето поље „$%ld“" + +#: eval.c:1282 +#, c-format +msgid "function `%s' called with more arguments than declared" +msgstr "функција „%s“ је позвана Ñа више аргумената него што је објављено" + +#: eval.c:1486 +#, c-format +msgid "unwind_stack: unexpected type `%s'" +msgstr "unwind_stack: неочекивана врÑта „%s“" + +#: eval.c:1579 +msgid "division by zero attempted in `/='" +msgstr "покушано је дељње нулом у „/=“" + +#: eval.c:1586 +#, c-format +msgid "division by zero attempted in `%%='" +msgstr "покушано је дељње нулом у „%%=“" + +#: ext.c:51 +msgid "extensions are not allowed in sandbox mode" +msgstr "проширења ниÑу допуштена у режиму изолованог окружења" + +#: ext.c:54 +msgid "-l / @load are gawk extensions" +msgstr "„-l / @load“ јеÑу проширења „gawk“-а" + +#: ext.c:57 +msgid "load_ext: received NULL lib_name" +msgstr "load_ext: примих ÐИШТÐÐ’ÐО „lib_name“" + +#: ext.c:60 +#, c-format +msgid "load_ext: cannot open library `%s': %s" +msgstr "load_ext: не могу да отворим библиотеку „%s“: %s" + +#: ext.c:66 +#, c-format +msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible': %s" +msgstr "load_ext: библиотека „%s“: не дефинише „plugin_is_GPL_compatible“: %s" + +#: ext.c:72 +#, c-format +msgid "load_ext: library `%s': cannot call function `%s': %s" +msgstr "load_ext: библиотека „%s“: не могу да позовем функцију „%s“: %s" + +#: ext.c:76 +#, c-format +msgid "load_ext: library `%s' initialization routine `%s' failed" +msgstr "load_ext: рутина покретања „%s“ библиотеке „%s“ није уÑпела" + +#: ext.c:92 +msgid "make_builtin: missing function name" +msgstr "make_builtin: недоÑтаје назив функције" + +#: ext.c:100 ext.c:111 +#, c-format +msgid "make_builtin: cannot use gawk built-in `%s' as function name" +msgstr "" +"make_builtin: не могу кориÑтити „gawk“ уграђеноÑÑ‚ „%s“ као назив функције" + +#: ext.c:109 +#, c-format +msgid "make_builtin: cannot use gawk built-in `%s' as namespace name" +msgstr "" +"make_builtin: не могу кориÑтити „gawk“ уграђеноÑÑ‚ „%s“ као назив називног " +"проÑтора" + +#: ext.c:126 +#, c-format +msgid "make_builtin: cannot redefine function `%s'" +msgstr "make_builtin: не могу да редефинишем „%s“" + +#: ext.c:130 +#, c-format +msgid "make_builtin: function `%s' already defined" +msgstr "make_builtin: функција „%s“ је већ дефиниÑана" + +#: ext.c:134 +#, c-format +msgid "make_builtin: function name `%s' previously defined" +msgstr "make_builtin: назив функције „%s“ је претходно дефиниÑан" + +#: ext.c:138 +#, c-format +msgid "make_builtin: negative argument count for function `%s'" +msgstr "make_builtin: негативна укупноÑÑ‚ аргумента за функцију „%s“" + +#: ext.c:214 +#, c-format +msgid "function `%s': argument #%d: attempt to use scalar as an array" +msgstr "функција „%s“: аргумент #%d: покушај коришћења Ñкалара као низа" + +#: ext.c:218 +#, c-format +msgid "function `%s': argument #%d: attempt to use array as a scalar" +msgstr "функција „%s“: аргумент #%d: покушај коришћења низа као Ñкалара" + +#: ext.c:232 +msgid "dynamic loading of libraries is not supported" +msgstr "динамичко учитавање библиотека није подржано" + +#: extension/filefuncs.c:446 +#, c-format +msgid "stat: unable to read symbolic link `%s'" +msgstr "stat: не могу да читам Ñимболичку везу „%s“" + +#: extension/filefuncs.c:479 +msgid "stat: first argument is not a string" +msgstr "stat: први аргумент није ниÑка" + +#: extension/filefuncs.c:484 +msgid "stat: second argument is not an array" +msgstr "stat: други аргумент није низ" + +#: extension/filefuncs.c:528 +msgid "stat: bad parameters" +msgstr "stat: лоши параметри" + +#: extension/filefuncs.c:594 +#, c-format +msgid "fts init: could not create variable %s" +msgstr "fts init: не могу да направим променљиву „%s“" + +#: extension/filefuncs.c:615 +msgid "fts is not supported on this system" +msgstr "„fts“ није подржано на овом ÑиÑтему" + +#: extension/filefuncs.c:634 +msgid "fill_stat_element: could not create array, out of memory" +msgstr "fill_stat_element: не могу да направим низ, нема више меморије" + +#: extension/filefuncs.c:643 +msgid "fill_stat_element: could not set element" +msgstr "fill_stat_element: не могу да поÑтавим елемент" + +#: extension/filefuncs.c:658 +msgid "fill_path_element: could not set element" +msgstr "fill_path_element: не могу да поÑтавим елемент" + +#: extension/filefuncs.c:674 +msgid "fill_error_element: could not set element" +msgstr "fill_error_element: не могу да поÑтавим елемент" + +#: extension/filefuncs.c:726 extension/filefuncs.c:773 +msgid "fts-process: could not create array" +msgstr "fts-process: не могу да направим низ" + +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 +msgid "fts-process: could not set element" +msgstr "fts-process: не могу да поÑтавим елемент" + +#: extension/filefuncs.c:850 +msgid "fts: called with incorrect number of arguments, expecting 3" +msgstr "fts: позвано Ñа нетачним бројем аргумената, очекујем 3" + +#: extension/filefuncs.c:853 +msgid "fts: first argument is not an array" +msgstr "fts: први аргумент није низ" + +#: extension/filefuncs.c:859 +msgid "fts: second argument is not a number" +msgstr "fts: други аргумент није број" + +#: extension/filefuncs.c:865 +msgid "fts: third argument is not an array" +msgstr "fts: трећи аргумент није низ" + +#: extension/filefuncs.c:872 +msgid "fts: could not flatten array\n" +msgstr "fts: не могу да поравнам низ\n" + +#: extension/filefuncs.c:890 +msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." +msgstr "fts: занемарујем подлу „FTS_NOSTAT“ заÑтавицу. ња, ња, ња." + +#: extension/fnmatch.c:120 +msgid "fnmatch: could not get first argument" +msgstr "fnmatch: не могу да добавим први аргумент" + +#: extension/fnmatch.c:125 +msgid "fnmatch: could not get second argument" +msgstr "fnmatch: не могу да добавим други аргумент" + +#: extension/fnmatch.c:130 +msgid "fnmatch: could not get third argument" +msgstr "fnmatch: не могу да добавим трећи аргумент" + +#: extension/fnmatch.c:143 +msgid "fnmatch is not implemented on this system\n" +msgstr "„fnmatch“ није примењено на овом ÑиÑтему\n" + +#: extension/fnmatch.c:175 +msgid "fnmatch init: could not add FNM_NOMATCH variable" +msgstr "fnmatch init: не могу да додам „FNM_NOMATCH“ променљиву" + +#: extension/fnmatch.c:185 +#, c-format +msgid "fnmatch init: could not set array element %s" +msgstr "fnmatch init: не могу да поÑтавим елемент низа „%s“" + +#: extension/fnmatch.c:195 +msgid "fnmatch init: could not install FNM array" +msgstr "fnmatch init: не могу да инÑталирам низ „FNM“" + +#: extension/fork.c:92 +msgid "fork: PROCINFO is not an array!" +msgstr "fork: „PROCINFO“ није низ!" + +#: extension/inplace.c:131 +msgid "inplace::begin: in-place editing already active" +msgstr "inplace::begin: уређивање на меÑту је већ активно" + +#: extension/inplace.c:134 +#, c-format +msgid "inplace::begin: expects 2 arguments but called with %d" +msgstr "inplace::begin: очекује 2 аргумента али је позвана Ñа %d" + +#: extension/inplace.c:137 +msgid "inplace::begin: cannot retrieve 1st argument as a string filename" +msgstr "" +"inplace::begin: не могу да довучем 1. аргумент као назив датотеке ниÑке" + +#: extension/inplace.c:145 +#, c-format +msgid "inplace::begin: disabling in-place editing for invalid FILENAME `%s'" +msgstr "" +"inplace::begin: онемогућујем уређивање на меÑту за неиÑправан ÐÐЗИВ_ДÐТОТЕКЕ " +"„%s“" + +#: extension/inplace.c:152 +#, c-format +msgid "inplace::begin: Cannot stat `%s' (%s)" +msgstr "inplace::begin: Ðе могу да добавим податке за „%s“ (%s)" + +#: extension/inplace.c:159 +#, c-format +msgid "inplace::begin: `%s' is not a regular file" +msgstr "inplace::begin: „%s“ није обична датотека" + +#: extension/inplace.c:170 +#, c-format +msgid "inplace::begin: mkstemp(`%s') failed (%s)" +msgstr "inplace::begin: „mkstemp(%s)“ није уÑпело (%s)" + +#: extension/inplace.c:182 +#, c-format +msgid "inplace::begin: chmod failed (%s)" +msgstr "inplace::begin: „chmod“ није уÑпело (%s)" + +#: extension/inplace.c:189 +#, c-format +msgid "inplace::begin: dup(stdout) failed (%s)" +msgstr "inplace::begin: „dup(stdout)“ није уÑпело (%s)" + +#: extension/inplace.c:192 +#, c-format +msgid "inplace::begin: dup2(%d, stdout) failed (%s)" +msgstr "inplace::begin: „dup2(%d, stdout)“ није уÑпело (%s)" + +#: extension/inplace.c:195 +#, c-format +msgid "inplace::begin: close(%d) failed (%s)" +msgstr "inplace::begin: „close(%d)“ није уÑпело (%s)" + +#: extension/inplace.c:211 +#, c-format +msgid "inplace::end: expects 2 arguments but called with %d" +msgstr "inplace::end: очекује 2 аргумента али је позвана Ñа %d" + +#: extension/inplace.c:214 +msgid "inplace::end: cannot retrieve 1st argument as a string filename" +msgstr "inplace::end: не могу да довучем 1. аргумент као назив датотеке ниÑке" + +#: extension/inplace.c:221 +msgid "inplace::end: in-place editing not active" +msgstr "inplace::end: уређивање на меÑту није активно" + +#: extension/inplace.c:227 +#, c-format +msgid "inplace::end: dup2(%d, stdout) failed (%s)" +msgstr "inplace::end: „dup2(%d, stdout)“ није уÑпело (%s)" + +#: extension/inplace.c:230 +#, c-format +msgid "inplace::end: close(%d) failed (%s)" +msgstr "inplace::end: „close(%d)“ није уÑпело (%s)" + +#: extension/inplace.c:234 +#, c-format +msgid "inplace::end: fsetpos(stdout) failed (%s)" +msgstr "inplace::end: „fsetpos(stdout)“ није уÑпело (%s)" + +#: extension/inplace.c:247 +#, c-format +msgid "inplace::end: link(`%s', `%s') failed (%s)" +msgstr "inplace::end: „link(%s, %s)“ није уÑпело (%s)" + +#: extension/inplace.c:257 +#, c-format +msgid "inplace::end: rename(`%s', `%s') failed (%s)" +msgstr "inplace::end: „rename(%s, %s)“ није уÑпело (%s)" + +#: extension/ordchr.c:72 +msgid "ord: first argument is not a string" +msgstr "ord: први аргумент није ниÑка" + +#: extension/ordchr.c:99 +msgid "chr: first argument is not a number" +msgstr "chr: први аргумент није ниÑка" + +#: extension/readdir.c:277 +#, c-format +msgid "dir_take_control_of: opendir/fdopendir failed: %s" +msgstr "dir_take_control_of: „opendir/fdopendir“ није уÑпело: %s" + +#: extension/readfile.c:131 +msgid "readfile: called with wrong kind of argument" +msgstr "readfile: позвано Ñа погрешном врÑтом аргумента" + +#: extension/revoutput.c:127 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "revoutput: не могу да започнем променљиву „REVOUT“" + +#: extension/rwarray.c:119 +msgid "do_writea: first argument is not a string" +msgstr "do_writea: први аргумент није ниÑка" + +#: extension/rwarray.c:125 +msgid "do_writea: second argument is not an array" +msgstr "do_writea: други аргумент није низ" + +#: extension/rwarray.c:172 extension/rwarray0.c:167 +msgid "write_array: could not flatten array" +msgstr "write_array: не могу да поравнам низ" + +#: extension/rwarray.c:188 extension/rwarray0.c:181 +msgid "write_array: could not release flattened array" +msgstr "write_array: не могу да објавим поравнат низ" + +#: extension/rwarray.c:255 +#, c-format +msgid "array value has unknown type %d" +msgstr "вредноÑÑ‚ низа има непознату врÑту %d" + +#: extension/rwarray.c:292 +msgid "do_reada: first argument is not a string" +msgstr "do_reada: први аргумент није ниÑка" + +#: extension/rwarray.c:298 +msgid "do_reada: second argument is not an array" +msgstr "do_reada: други аргумент није низ" + +#: extension/rwarray.c:342 extension/rwarray0.c:317 +msgid "do_reada: clear_array failed" +msgstr "do_reada: „clear_array“ није уÑпело" + +#: extension/rwarray.c:379 extension/rwarray0.c:353 +msgid "read_array: set_array_element failed" +msgstr "read_array: „set_array_element“ није уÑпело" + +#: extension/rwarray.c:489 +#, c-format +msgid "treating recovered value with unknown type code %d as a string" +msgstr "Ñматрам опорављену вредноÑÑ‚ Ñа непознатим кодом врÑте %d као ниÑку" + +#: extension/rwarray0.c:114 +msgid "do_writea: argument 0 is not a string" +msgstr "do_writea: аргумент 0 није ниÑка" + +#: extension/rwarray0.c:120 +msgid "do_writea: argument 1 is not an array" +msgstr "do_writea: аргумент 1 није низ" + +#: extension/rwarray0.c:267 +msgid "do_reada: argument 0 is not a string" +msgstr "do_reada: аргумент 0 није ниÑка" + +#: extension/rwarray0.c:273 +msgid "do_reada: argument 1 is not an array" +msgstr "do_reada: аргумент 1 није низ" + +#: extension/time.c:141 +msgid "gettimeofday: not supported on this platform" +msgstr "gettimeofday: није подржано на овој платформи" + +#: extension/time.c:162 +msgid "sleep: missing required numeric argument" +msgstr "sleep: недоÑтаје затражен бројевни аргумент" + +#: extension/time.c:168 +msgid "sleep: argument is negative" +msgstr "sleep: аргумент је негативан" + +#: extension/time.c:202 +msgid "sleep: not supported on this platform" +msgstr "sleep: није подржано на овој платформи" + +#: field.c:287 +msgid "input record too large" +msgstr "Ð·Ð°Ð¿Ð¸Ñ ÑƒÐ»Ð°Ð·Ð° је превелик" + +#: field.c:408 +msgid "NF set to negative value" +msgstr "„NF“ је поÑтављено на негативну вредноÑÑ‚" + +#: field.c:413 +msgid "decrementing NF is not portable to many awk versions" +msgstr "опадајуће „NF“ није преноÑиво на многа издања „awk“-а" + +#: field.c:861 +msgid "accessing fields from an END rule may not be portable" +msgstr "приÑтупање пољима из „END“ правила можда неће бити преноÑиво" + +#: field.c:986 field.c:995 +msgid "split: fourth argument is a gawk extension" +msgstr "split: четврти аргумент је проширење „gawk“-а" + +#: field.c:990 +msgid "split: fourth argument is not an array" +msgstr "split: четврти аргумент није низ" + +#: field.c:992 field.c:1089 +#, fuzzy, c-format +#| msgid "%s: cannot use a subarray of second argument for first argument" +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: не могу да кориÑтим подниз другог аргумента за први аргумент" + +#: field.c:1002 +msgid "split: second argument is not an array" +msgstr "split: други аргумент није низ" + +#: field.c:1008 +msgid "split: cannot use the same array for second and fourth args" +msgstr "split: не могу кориÑтити иÑти низ за други и четврти аргумент" + +#: field.c:1013 +msgid "split: cannot use a subarray of second arg for fourth arg" +msgstr "split: не могу кориÑтити подниз другог аргумента за четврти аргумент" + +#: field.c:1016 +msgid "split: cannot use a subarray of fourth arg for second arg" +msgstr "split: не могу кориÑтити подниз четвртог аргумента за други аргумент" + +#: field.c:1050 +msgid "split: null string for third arg is a non-standard extension" +msgstr "split: ништавна ниÑка за трећи аргумент је неÑтандардно проширење" + +#: field.c:1087 +msgid "patsplit: fourth argument is not an array" +msgstr "patsplit: четврти аргумент није низ" + +#: field.c:1094 +msgid "patsplit: second argument is not an array" +msgstr "patsplit: други аргумент није низ" + +#: field.c:1105 +msgid "patsplit: third argument must be non-null" +msgstr "patsplit: трећи аргумент мора бити не-ништаван" + +#: field.c:1109 +msgid "patsplit: cannot use the same array for second and fourth args" +msgstr "patsplit: не могу кориÑтити иÑти низ за други и четврти аргумент" + +#: field.c:1114 +msgid "patsplit: cannot use a subarray of second arg for fourth arg" +msgstr "" +"patsplit: не могу кориÑтити подниз другог аргумента за четврти аргумент" + +#: field.c:1117 +msgid "patsplit: cannot use a subarray of fourth arg for second arg" +msgstr "" +"patsplit: не могу кориÑтити подниз четвртог аргумента за други аргумент" + +#: field.c:1167 +msgid "`FIELDWIDTHS' is a gawk extension" +msgstr "„FIELDWIDTHS“ је проширење „gawk“-а" + +#: field.c:1236 +msgid "`*' must be the last designator in FIELDWIDTHS" +msgstr "„*“ мора бити поÑледњи означавач у „FIELDWIDTHS“" + +#: field.c:1257 +#, c-format +msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" +msgstr "неиÑправна вредноÑÑ‚ „FIELDWIDTHS“, за поље %d, близу „%s“" + +#: field.c:1330 +msgid "null string for `FS' is a gawk extension" +msgstr "ништавна ниÑка за „FS“ је проширење „gawk“-а" + +#: field.c:1334 +msgid "old awk does not support regexps as value of `FS'" +msgstr "Ñтари „awk“ не подржава регуларне изразе као вредноÑÑ‚ за „FS“" + +#: field.c:1460 +msgid "`FPAT' is a gawk extension" +msgstr "„FPAT“ је проширење „gawk“-а" + +#: gawkapi.c:154 +msgid "awk_value_to_node: received null retval" +msgstr "awk_value_to_node: примих ништавно „retval“" + +#: gawkapi.c:171 gawkapi.c:182 +msgid "awk_value_to_node: not in MPFR mode" +msgstr "awk_value_to_node: није у „MPFR“ режиму" + +#: gawkapi.c:176 gawkapi.c:186 +msgid "awk_value_to_node: MPFR not supported" +msgstr "awk_value_to_node: „MPFR“ није подржано" + +#: gawkapi.c:190 +#, c-format +msgid "awk_value_to_node: invalid number type `%d'" +msgstr "awk_value_to_node: неиÑправна врÑта броја „%d“" + +#: gawkapi.c:377 +msgid "add_ext_func: received NULL name_space parameter" +msgstr "add_ext_func: примих ÐИШТÐÐ’ÐИ параметар проÑторног_назива" + +#: gawkapi.c:515 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value: detected invalid numeric flags combination `%s'; " +#| "please file a bug report." +msgid "" +"node_to_awk_value: detected invalid numeric flags combination `%s'; please " +"file a bug report" +msgstr "" +"node_to_awk_value: откривена је неиÑправна комбинација бројевних заÑтавица " +"„%s“; будите љубазни попуните извештај о грешци." + +#: gawkapi.c:543 +msgid "node_to_awk_value: received null node" +msgstr "node_to_awk_value: примих ништавни чвор" + +#: gawkapi.c:546 +msgid "node_to_awk_value: received null val" +msgstr "node_to_awk_value: примих ништавну вредноÑÑ‚" + +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value detected invalid flags combination `%s'; please file a " +#| "bug report." +msgid "" +"node_to_awk_value detected invalid flags combination `%s'; please file a bug " +"report" +msgstr "" +"„node_to_awk_value“ је открила неиÑправну комбинацију заÑтавица „%s“; будите " +"љубазни попуните извештај о грешци." + +#: gawkapi.c:1074 +msgid "remove_element: received null array" +msgstr "remove_element: примих ништавни низ" + +#: gawkapi.c:1077 +msgid "remove_element: received null subscript" +msgstr "remove_element: примих ништавну подÑкрипту" + +#: gawkapi.c:1209 +#, c-format +msgid "api_flatten_array_typed: could not convert index %d to %s" +msgstr "api_flatten_array_typed: не могу да претворим Ð¸Ð½Ð´ÐµÐºÑ %d у %s" + +#: gawkapi.c:1214 +#, c-format +msgid "api_flatten_array_typed: could not convert value %d to %s" +msgstr "api_flatten_array_typed: не могу да претворим вредноÑÑ‚ %d у %s" + +#: gawkapi.c:1310 gawkapi.c:1327 +msgid "api_get_mpfr: MPFR not supported" +msgstr "api_get_mpfr: „MPFR“ није подржано" + +#: gawkapi.c:1358 +msgid "cannot find end of BEGINFILE rule" +msgstr "не могу да нађем крај правила „BEGINFILE“" + +#: gawkapi.c:1412 +#, c-format +msgid "cannot open unrecognized file type `%s' for `%s'" +msgstr "не могу да отворим непрепознату врÑту датотеке „%s“ за „%s“" + +#: io.c:426 +#, c-format +msgid "command line argument `%s' is a directory: skipped" +msgstr "аргумент линије наредби „%s“ је директоријум: преÑкачем" + +#: io.c:429 io.c:543 +#, c-format +msgid "cannot open file `%s' for reading: %s" +msgstr "не могу да отворим датотеку „%s“ за читање: %s" + +#: io.c:672 +#, c-format +msgid "close of fd %d (`%s') failed: %s" +msgstr "затварање „fd“ %d (%s)“ није уÑпело: %s" + +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "непотребно мешање > и >> за датотеку „%.*s“" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 +msgid "redirection not allowed in sandbox mode" +msgstr "преуÑмерење није допуштено у режиму изолованог окружења" + +#: io.c:847 +#, c-format +msgid "expression in `%s' redirection is a number" +msgstr "израз у „%s“ преуÑмерењу је број" + +#: io.c:851 +#, c-format +msgid "expression for `%s' redirection has null string value" +msgstr "израз за „%s“ преуÑмерење има ништавну вредноÑÑ‚ ниÑке" + +#: io.c:856 +#, c-format +msgid "" +"filename `%.*s' for `%s' redirection may be result of logical expression" +msgstr "" +"назив датотеке „%.*s“ за „%s“ преуÑмерење може бити резултат логичког израза" + +#: io.c:953 io.c:978 +#, c-format +msgid "get_file cannot create pipe `%s' with fd %d" +msgstr "„get_file“ не може направити Ñпојку „%s“ Ñа „fd“-ом %d" + +#: io.c:968 +#, c-format +msgid "cannot open pipe `%s' for output: %s" +msgstr "не могу да отворим Ñпојку „%s“ за излаз: %s" + +#: io.c:983 +#, c-format +msgid "cannot open pipe `%s' for input: %s" +msgstr "не могу да отворим Ñпојку „%s“ за улаз: %s" + +#: io.c:1007 +#, c-format +msgid "" +"get_file socket creation not supported on this platform for `%s' with fd %d" +msgstr "" +"Ñтварање прикључнице „get_file“ није подржано на овој платформи за „%s“ Ñа " +"опиÑником датотеке %d" + +#: io.c:1018 +#, c-format +msgid "cannot open two way pipe `%s' for input/output: %s" +msgstr "не могу да отворим двоÑмерну Ñпојку „%s“ за улаз/излаз: %s" + +#: io.c:1105 +#, c-format +msgid "cannot redirect from `%s': %s" +msgstr "не могу да преуÑмерим Ñа „%s“: %s" + +#: io.c:1108 +#, c-format +msgid "cannot redirect to `%s': %s" +msgstr "не могу да преуÑмерим ка „%s“: %s" + +#: io.c:1210 +msgid "" +"reached system limit for open files: starting to multiplex file descriptors" +msgstr "" +"доÑтигнуто је ограничење ÑиÑтема за отворене датотеке: почињем Ñа " +"мултиплекÑирањем опиÑника датотека" + +#: io.c:1226 +#, fuzzy, c-format +#| msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" +msgstr "затварање „%s“ није уÑпело: %s." + +#: io.c:1234 +msgid "too many pipes or input files open" +msgstr "превише Ñпојки или отворених улазних датотека" + +#: io.c:1260 +msgid "close: second argument must be `to' or `from'" +msgstr "close: други аргумент мора бити „to“ или „from“" + +#: io.c:1278 +#, c-format +msgid "close: `%.*s' is not an open file, pipe or co-process" +msgstr "close: „%.*s“ није отворена датотека, Ñпојка или ко-процеÑÑ" + +#: io.c:1283 +msgid "close of redirection that was never opened" +msgstr "затварање преуÑмерења које никада није отворено" + +#: io.c:1382 +#, c-format +msgid "close: redirection `%s' not opened with `|&', second argument ignored" +msgstr "" +"close: преуÑмерење „%s“ није отворено Ñа |&, други аргумент је занемарен" + +#: io.c:1399 +#, c-format +msgid "failure status (%d) on pipe close of `%s': %s" +msgstr "Ñтање неуÑпеха (%d) при затварању Ñпојке од „%s“: %s" + +#: io.c:1402 +#, fuzzy, c-format +#| msgid "failure status (%d) on pipe close of `%s': %s" +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "Ñтање неуÑпеха (%d) при затварању Ñпојке од „%s“: %s" + +#: io.c:1405 +#, c-format +msgid "failure status (%d) on file close of `%s': %s" +msgstr "Ñтање неуÑпеха (%d) при затварању датотеке од „%s“: %s" + +#: io.c:1425 +#, c-format +msgid "no explicit close of socket `%s' provided" +msgstr "није обезбеђено изричито затварање прикључнице „%s“" + +#: io.c:1428 +#, c-format +msgid "no explicit close of co-process `%s' provided" +msgstr "није обезбеђено изричито затварање ко-процеÑа „%s“" + +#: io.c:1431 +#, c-format +msgid "no explicit close of pipe `%s' provided" +msgstr "није обезбеђено изричито затварање Ñпојке „%s“" + +#: io.c:1434 +#, c-format +msgid "no explicit close of file `%s' provided" +msgstr "није обезбеђено изричито затварање датотеке „%s“" + +#: io.c:1471 +#, c-format +msgid "fflush: cannot flush standard output: %s" +msgstr "fflush: не могу да иÑперем Ñтандардни излаз: %s" + +#: io.c:1472 +#, c-format +msgid "fflush: cannot flush standard error: %s" +msgstr "fflush: не могу да иÑперем Ñтандардну грешку: %s" + +#: io.c:1477 io.c:1568 main.c:666 main.c:713 +#, c-format +msgid "error writing standard output: %s" +msgstr "грешка пиÑања Ñтандардног излаза: %s" + +#: io.c:1478 io.c:1581 main.c:668 +#, c-format +msgid "error writing standard error: %s" +msgstr "грешка пиÑања Ñтандардне грешке: %s" + +#: io.c:1517 +#, fuzzy, c-format +#| msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" +msgstr "иÑпирање Ñпојке „%s“ није уÑпело: %s." + +#: io.c:1520 +#, fuzzy, c-format +#| msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "иÑпирање Ñпојке ко-процеÑа у „%s“ није уÑпело: %s." + +#: io.c:1523 +#, fuzzy, c-format +#| msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" +msgstr "иÑпирање датотеке „%s“ није уÑпело: %s." + +#: io.c:1670 +#, c-format +msgid "local port %s invalid in `/inet': %s" +msgstr "локални прикључник „%s“ је неиÑправан у „/inet“: %s" + +#: io.c:1673 +#, c-format +msgid "local port %s invalid in `/inet'" +msgstr "локални прикључник „%s“ је неиÑправан у „/inet“" + +#: io.c:1696 +#, c-format +msgid "remote host and port information (%s, %s) invalid: %s" +msgstr "удаљени домаћин и информације прикључника (%s, %s) Ñу неиÑправни: %s" + +#: io.c:1699 +#, c-format +msgid "remote host and port information (%s, %s) invalid" +msgstr "удаљени домаћин и информације прикључника (%s, %s) Ñу неиÑправни" + +#: io.c:1941 +msgid "TCP/IP communications are not supported" +msgstr "„TCP/IP“ комуникације ниÑу подржане" + +#: io.c:2069 io.c:2112 +#, c-format +msgid "could not open `%s', mode `%s'" +msgstr "не могу да отворим „%s“, режим „%s“" + +#: io.c:2077 io.c:2129 +#, c-format +msgid "close of master pty failed: %s" +msgstr "затарање главног „pty“ није уÑпело: %s" + +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 +#, c-format +msgid "close of stdout in child failed: %s" +msgstr "затварање Ñтандардног излаза у породу није уÑпело: %s" + +#: io.c:2082 io.c:2134 +#, c-format +msgid "moving slave pty to stdout in child failed (dup: %s)" +msgstr "" +"премештање подређеног „pty“ на Ñтандардни излаз у породу није уÑпело (dup: " +"%s)" + +#: io.c:2084 io.c:2136 io.c:2483 +#, c-format +msgid "close of stdin in child failed: %s" +msgstr "затварање Ñтандардног улаза у породу није уÑпело: %s" + +#: io.c:2087 io.c:2139 +#, c-format +msgid "moving slave pty to stdin in child failed (dup: %s)" +msgstr "" +"премештање подређеног „pty“ на Ñтандардни улаз у породу није уÑпело (dup: %s)" + +#: io.c:2089 io.c:2141 io.c:2163 +#, c-format +msgid "close of slave pty failed: %s" +msgstr "затарање помоћног „pty“ није уÑпело: %s" + +#: io.c:2325 +msgid "could not create child process or open pty" +msgstr "не могу да направим породни Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð»Ð¸ да отворим „pty“" + +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 +#, c-format +msgid "moving pipe to stdout in child failed (dup: %s)" +msgstr "премештање Ñпојке на Ñтандардни излаз у породу није уÑпело (dup: %s)" + +#: io.c:2420 io.c:2486 +#, c-format +msgid "moving pipe to stdin in child failed (dup: %s)" +msgstr "премештање Ñпојке на Ñтандардни улаз у породу није уÑпело (dup: %s)" + +#: io.c:2446 io.c:2715 +msgid "restoring stdout in parent process failed" +msgstr "повраћај Ñтандардног излаза у родитељÑком процеÑу није уÑпело" + +#: io.c:2454 +msgid "restoring stdin in parent process failed" +msgstr "повраћај Ñтандардног улаза у родитељÑком процеÑу није уÑпело" + +#: io.c:2489 io.c:2727 io.c:2742 +#, c-format +msgid "close of pipe failed: %s" +msgstr "затварање Ñпојке није уÑпело: %s" + +#: io.c:2548 +msgid "`|&' not supported" +msgstr "„|&“ није подржано" + +#: io.c:2678 +#, c-format +msgid "cannot open pipe `%s': %s" +msgstr "не могу да отворим Ñпојку „%s“: %s" + +#: io.c:2736 +#, c-format +msgid "cannot create child process for `%s' (fork: %s)" +msgstr "не могу да направим Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿Ð¾Ñ€Ð¾Ð´Ð° за „%s“ (fork: %s)" + +#: io.c:2874 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "getline: покушах да читам из затвореног краја читања двоÑмерне Ñпојке" + +#: io.c:3199 +msgid "register_input_parser: received NULL pointer" +msgstr "register_input_parser: примих ÐИШТÐÐ’ÐИ показивач" + +#: io.c:3227 +#, c-format +msgid "input parser `%s' conflicts with previously installed input parser `%s'" +msgstr "" +"обрађивач улаза „%s“ Ñе Ñукобљава Ñа претходно инÑталираним обрађивачем " +"улаза „%s“" + +#: io.c:3234 +#, c-format +msgid "input parser `%s' failed to open `%s'" +msgstr "обрађивач улаза „%s“ није уÑпео да Ñе отвори „%s“" + +#: io.c:3254 +msgid "register_output_wrapper: received NULL pointer" +msgstr "register_output_wrapper: примих ÐИШТÐÐ’ÐИ показивач" + +#: io.c:3282 +#, c-format +msgid "" +"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgstr "" +"умотавач излаза „%s“ Ñе Ñукобљава Ñа претходно инÑталираним употавачем " +"излаза „%s“" + +#: io.c:3289 +#, c-format +msgid "output wrapper `%s' failed to open `%s'" +msgstr "умотавач излаза „%s“ није уÑпео да Ñе отвори „%s“" + +#: io.c:3310 +msgid "register_output_processor: received NULL pointer" +msgstr "register_output_processor: примих ÐИШТÐÐ’ÐИ показивач" + +#: io.c:3339 +#, c-format +msgid "" +"two-way processor `%s' conflicts with previously installed two-way processor " +"`%s'" +msgstr "" +"двоÑмерни процеÑор „%s“ Ñе Ñукобљава претходно инÑталираним двоÑмерним " +"процеÑором „%s“" + +#: io.c:3348 +#, c-format +msgid "two way processor `%s' failed to open `%s'" +msgstr "двоÑмерни процеÑор „%s“ није уÑпео да Ñе отвори „%s“" + +#: io.c:3472 +#, c-format +msgid "data file `%s' is empty" +msgstr "датотека података „%s“ је празна" + +#: io.c:3514 io.c:3522 +msgid "could not allocate more input memory" +msgstr "не могу да доделим још меморије улаза" + +#: io.c:4140 +msgid "multicharacter value of `RS' is a gawk extension" +msgstr "вредноÑÑ‚ мултизнака „RS“ је проширење „gawk“-а" + +#: io.c:4294 +msgid "IPv6 communication is not supported" +msgstr "„IPv6“ комуникација није подржана" + +#: main.c:338 +msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" +msgstr "" +"променљива окружења „POSIXLY_CORRECT“ је поÑтављена: укључујем „--posix“" + +#: main.c:345 +msgid "`--posix' overrides `--traditional'" +msgstr "„--posix“ превазилази „--traditional“" + +#: main.c:356 +msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" +msgstr "„--posix“/„--traditional“ превазилази „--non-decimal-data“" + +#: main.c:361 +msgid "`--posix' overrides `--characters-as-bytes'" +msgstr "„--posix“ превазилази „--characters-as-bytes“" + +#: main.c:371 +#, c-format +msgid "running %s setuid root may be a security problem" +msgstr "покретање „%s setuid root“ може бити безбедноÑни проблем" + +#: main.c:424 +#, c-format +msgid "cannot set binary mode on stdin: %s" +msgstr "не могу да поÑтавим бинарни режим на Ñтандардни улаз: %s" + +#: main.c:427 +#, c-format +msgid "cannot set binary mode on stdout: %s" +msgstr "не могу да поÑтавим бинарни режим на Ñтандардни излаз: %s" + +#: main.c:429 +#, c-format +msgid "cannot set binary mode on stderr: %s" +msgstr "не могу да поÑтавим бинарни режим на Ñтандардну грешку: %s" + +#: main.c:491 +msgid "no program text at all!" +msgstr "уопште нема текÑта програма!" + +#: main.c:585 +#, c-format +msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" +msgstr "" +"Употреба: %s [опције „POSIX“ или Гну Ñтила] -f датотека_програма [--] " +"датотека ...\n" + +#: main.c:587 +#, c-format +msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" +msgstr "" +"Употреба: %s [опције „POSIX“ или Гну Ñтила] [--] %cпрограм%c датотека ...\n" + +#: main.c:592 +msgid "POSIX options:\t\tGNU long options: (standard)\n" +msgstr "„POSIX“ опције:\t\tДуге Гну опције: (Ñтандард)\n" + +#: main.c:593 +msgid "\t-f progfile\t\t--file=progfile\n" +msgstr "\t-f дттка програма\t--file=датотека програма\n" + +#: main.c:594 +msgid "\t-F fs\t\t\t--field-separator=fs\n" +msgstr "\t-F рп\t\t\t--field-separator=рп\n" + +#: main.c:595 +msgid "\t-v var=val\t\t--assign=var=val\n" +msgstr "\t-v пром=вред\t\t--assign=пром=вред\n" + +#: main.c:596 +msgid "Short options:\t\tGNU long options: (extensions)\n" +msgstr "Кратке опције:\t\tДуге Гну опције: (проширења)\n" + +#: main.c:597 +msgid "\t-b\t\t\t--characters-as-bytes\n" +msgstr "\t-b\t\t\t--characters-as-bytes\n" + +#: main.c:598 +msgid "\t-c\t\t\t--traditional\n" +msgstr "\t-c\t\t\t--traditional\n" + +#: main.c:599 +msgid "\t-C\t\t\t--copyright\n" +msgstr "\t-C\t\t\t--copyright\n" + +#: main.c:600 +msgid "\t-d[file]\t\t--dump-variables[=file]\n" +msgstr "\t-d[дттка]\t\t--dump-variables[=датотека]\n" + +#: main.c:601 +msgid "\t-D[file]\t\t--debug[=file]\n" +msgstr "\t-D[дттка]\t\t--debug[=датотека]\n" + +#: main.c:602 +msgid "\t-e 'program-text'\t--source='program-text'\n" +msgstr "\t-e 'текÑÑ‚-програма'\t--source='текÑÑ‚ програма'\n" + +#: main.c:603 +msgid "\t-E file\t\t\t--exec=file\n" +msgstr "\t-E дттка\t\t--exec=датотека\n" + +#: main.c:604 +msgid "\t-g\t\t\t--gen-pot\n" +msgstr "\t-g\t\t\t--gen-pot\n" + +#: main.c:605 +msgid "\t-h\t\t\t--help\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:606 +msgid "\t-i includefile\t\t--include=includefile\n" +msgstr "\t-i укључи_дттку\t\t--include=укључи_датотеку\n" + +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 +msgid "\t-l library\t\t--load=library\n" +msgstr "\t-l библиотека\t\t--load=библиотека\n" + +#. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:613 +msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" +msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" + +#: main.c:614 +msgid "\t-M\t\t\t--bignum\n" +msgstr "\t-M\t\t\t--bignum\n" + +#: main.c:615 +msgid "\t-N\t\t\t--use-lc-numeric\n" +msgstr "\t-N\t\t\t--use-lc-numeric\n" + +#: main.c:616 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:617 +msgid "\t-o[file]\t\t--pretty-print[=file]\n" +msgstr "\t-o[дттка]\t\t--pretty-print[=датотека]\n" + +#: main.c:618 +msgid "\t-O\t\t\t--optimize\n" +msgstr "\t-O\t\t\t--optimize\n" + +#: main.c:619 +msgid "\t-p[file]\t\t--profile[=file]\n" +msgstr "\t-p[дттка]\t\t--profile[=датотека]\n" + +#: main.c:620 +msgid "\t-P\t\t\t--posix\n" +msgstr "\t-P\t\t\t--posix\n" + +#: main.c:621 +msgid "\t-r\t\t\t--re-interval\n" +msgstr "\t-r\t\t\t--re-interval\n" + +#: main.c:622 +msgid "\t-s\t\t\t--no-optimize\n" +msgstr "\t-s\t\t\t--no-optimize\n" + +#: main.c:623 +msgid "\t-S\t\t\t--sandbox\n" +msgstr "\t-S\t\t\t--sandbox\n" + +#: main.c:624 +msgid "\t-t\t\t\t--lint-old\n" +msgstr "\t-t\t\t\t--lint-old\n" + +#: main.c:625 +msgid "\t-V\t\t\t--version\n" +msgstr "\t-V\t\t\t--version\n" + +#: main.c:627 +msgid "\t-W nostalgia\t\t--nostalgia\n" +msgstr "\t-W nostalgia\t\t--nostalgia\n" + +#: main.c:630 +msgid "\t-Y\t\t\t--parsedebug\n" +msgstr "\t-Y\t\t\t--parsedebug\n" + +#: main.c:633 +msgid "\t-Z locale-name\t\t--locale=locale-name\n" +msgstr "\t-Z језик\t\t--locale=језик\n" + +#. TRANSLATORS: --help output (end) +#. no-wrap +#: main.c:639 +msgid "" +"\n" +"To report bugs, see node `Bugs' in `gawk.info'\n" +"which is section `Reporting Problems and Bugs' in the\n" +"printed version. This same information may be found at\n" +"https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.\n" +"PLEASE do NOT try to report bugs by posting in comp.lang.awk,\n" +"or by using a web forum such as Stack Overflow.\n" +"\n" +msgstr "" +"\n" +"Да извеÑтите о грешкама, видите „Bugs“ у „gawk.info“\n" +"што је у одељку „Reporting Problems and Bugs“ у штампаном\n" +"издању. Те иÑте информације можете наћи на адреÑи\n" +"„https://www.gnu.org/software/gawk/manual/html_node/Bugs.html“.\n" +"ÐЕ ПОКУШÐÐ’ÐЈТЕ да извеÑтите о грешкама објављујући у „comp.lang.awk“-у,\n" +"или кориÑтећи веб форум као што је „Stack Overflow“.\n" +"\n" + +#: main.c:647 +msgid "" +"gawk is a pattern scanning and processing language.\n" +"By default it reads standard input and writes standard output.\n" +"\n" +msgstr "" +"„gawk“ је језик Ñкенирања и обраде шаблона.\n" +"У оÑнови чита Ñтандардни улаз и иÑпиÑује Ñтандардни излаз.\n" +"\n" + +#: main.c:651 +#, c-format +msgid "" +"Examples:\n" +"\t%s '{ sum += $1 }; END { print sum }' file\n" +"\t%s -F: '{ print $1 }' /etc/passwd\n" +msgstr "" +"Примери:\n" +"\t%s '{ sum += $1 }; END { print sum }' file\n" +"\t%s -F: '{ print $1 }' /etc/passwd\n" + +#: main.c:683 +#, c-format +msgid "" +"Copyright (C) 1989, 1991-%d Free Software Foundation.\n" +"\n" +"This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 3 of the License, or\n" +"(at your option) any later version.\n" +"\n" +msgstr "" +"ÐуторÑка права © 1989, 1991–%d Free Software Foundation.\n" +"\n" +"Овај програм је Ñлободан Ñофтвер; можете га проÑлеђивати и/или мењати под\n" +"уÑловима Гнуове Опште јавне лиценце коју је објавила Задужбина Слободног\n" +"Софтвера; било верзије 3 Лиценце или (по вашем избору) било које новије\n" +"верзије.\n" +"\n" + +#: main.c:691 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +msgstr "" +"Овај програм Ñе раÑподељује у нади да ће бити кориÑтан,\n" +"али БЕЗ ИКÐКВЕ ГÐРÐÐЦИЈЕ; чак и без примењене гаранције\n" +"ТРЖИШÐЕ ВРЕДÐОСТИ или ПРИЛÐГОЂЕÐОСТИ ОДРЕЂЕÐОЈ ÐÐМЕÐИ.\n" +"Погледајте Гнуову Општу јавну лиценцу за више детаља.\n" +"\n" + +#: main.c:697 +msgid "" +"You should have received a copy of the GNU General Public License\n" +"along with this program. If not, see http://www.gnu.org/licenses/.\n" +msgstr "" +"Требали Ñте да примите примерак Гнуове Опште јавне лиценце\n" +"уз овај програм. Ðко ниÑте, видите: „http://www.gnu.org/licenses/“.\n" + +#: main.c:738 +msgid "-Ft does not set FS to tab in POSIX awk" +msgstr "„-Ft“ не поÑтавља „FS“ на табулатор у „POSIX awk“-у" + +#: main.c:1153 +#, c-format +msgid "" +"%s: `%s' argument to `-v' not in `var=value' form\n" +"\n" +msgstr "" +"%s: „%s“ аргумент за „-v“ није у облику „var=вредноÑт“\n" +"\n" + +#: main.c:1179 +#, c-format +msgid "`%s' is not a legal variable name" +msgstr "„%s“ није иÑправан назив променљиве" + +#: main.c:1182 +#, c-format +msgid "`%s' is not a variable name, looking for file `%s=%s'" +msgstr "„%s“ није назив променљиве, тражим датотеку „%s=%s“" + +#: main.c:1196 +#, c-format +msgid "cannot use gawk builtin `%s' as variable name" +msgstr "не могу да кориÑтим „gawk“ уграђеноÑÑ‚ „%s“ као назив променљиве" + +#: main.c:1201 +#, c-format +msgid "cannot use function `%s' as variable name" +msgstr "не могу да кориÑтим функцију „%s“ као назив променљиве" + +#: main.c:1280 +msgid "floating point exception" +msgstr "изузетак покретног зареза" + +#: main.c:1290 +msgid "fatal error: internal error" +msgstr "кобна грешка: унутрашња грешка" + +#: main.c:1310 +msgid "fatal error: internal error: segfault" +msgstr "кобна грешка: унутрашња грешка: неуÑпех Ñегментације" + +#: main.c:1323 +msgid "fatal error: internal error: stack overflow" +msgstr "кобна грешка: унутрашња грешка: прекорачење Ñпремника" + +#: main.c:1383 +#, c-format +msgid "no pre-opened fd %d" +msgstr "нема унапред отвореног опиÑника датотеке %d" + +#: main.c:1390 +#, c-format +msgid "could not pre-open /dev/null for fd %d" +msgstr "не могу унапред да отворим „/dev/null“ за опиÑника датотеке %d" + +#: main.c:1604 +msgid "empty argument to `-e/--source' ignored" +msgstr "празан аргумент за „-e/--source“ је занемарен" + +#: main.c:1669 main.c:1674 +msgid "`--profile' overrides `--pretty-print'" +msgstr "„--profile“ превазилази „--pretty-print“" + +#: main.c:1686 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "„-M“ је занемарено: „MPFR/GMP“ подршка није преведена" + +#: main.c:1711 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: опција „-W %s“ није препозната, занемарено\n" + +#: main.c:1764 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опција захтева аргумент –– „%c“\n" + +#: mpfr.c:605 +#, c-format +msgid "PREC value `%.*s' is invalid" +msgstr "„PREC“ вредноÑÑ‚ „%.*s“ је неиÑправна" + +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "„RNDMODE“ вредноÑÑ‚ „%.*s“ је неиÑправна" + +#: mpfr.c:728 +msgid "atan2: received non-numeric first argument" +msgstr "atan2: примих први аргумент који није број" + +#: mpfr.c:730 +msgid "atan2: received non-numeric second argument" +msgstr "atan2: примих други аргумент који није број" + +#: mpfr.c:767 +#, fuzzy, c-format +#| msgid "%s: received negative argument %g" +msgid "%s: received negative argument %.*s" +msgstr "%s: примих негативни аргумент %g" + +#: mpfr.c:832 +msgid "int: received non-numeric argument" +msgstr "int: примих не-бројевни аргумент" + +#: mpfr.c:862 +msgid "compl: received non-numeric argument" +msgstr "compl: примих аргумент који није број" + +#: mpfr.c:874 +msgid "compl(%Rg): negative value is not allowed" +msgstr "compl(%Rg): негативна вредноÑÑ‚ није допуштена" + +#: mpfr.c:879 +msgid "comp(%Rg): fractional value will be truncated" +msgstr "comp(%Rg): разломачка вредноÑÑ‚ биће Ñкраћена" + +#: mpfr.c:890 +#, c-format +msgid "compl(%Zd): negative values are not allowed" +msgstr "compl(%Zd): негативне вредноÑти ниÑу допуштене" + +#: mpfr.c:908 +#, c-format +msgid "%s: received non-numeric argument #%d" +msgstr "%s: примих аргумент који није број #%d" + +#: mpfr.c:918 +msgid "%s: argument #%d has invalid value %Rg, using 0" +msgstr "%s: аргумент #%d има неиÑправну вредноÑÑ‚ „%Rg“, кориÑтићу 0" + +#: mpfr.c:929 +msgid "%s: argument #%d negative value %Rg is not allowed" +msgstr "%s: аргумент #%d негативна вредноÑÑ‚ „%Rg“ није допуштена" + +#: mpfr.c:936 +msgid "%s: argument #%d fractional value %Rg will be truncated" +msgstr "%s: аргумент #%d разломачка вредноÑÑ‚ „%Rg“ биће Ñкраћена" + +#: mpfr.c:950 +#, c-format +msgid "%s: argument #%d negative value %Zd is not allowed" +msgstr "%s: аргумент #%d негативна вредноÑÑ‚ „%Zd“ није допуштена" + +#: mpfr.c:1040 +msgid "and: called with less than two arguments" +msgstr "and: позвано Ñа мање од два аргумента" + +#: mpfr.c:1072 +msgid "or: called with less than two arguments" +msgstr "or: позванo Ñа мање од два аргумента" + +#: mpfr.c:1103 +msgid "xor: called with less than two arguments" +msgstr "xor: позванo Ñа мање од два аргумента" + +#: mpfr.c:1227 +msgid "srand: received non-numeric argument" +msgstr "srand: примих аргумент који није број" + +#: mpfr.c:1269 +msgid "intdiv: received non-numeric first argument" +msgstr "intdiv: примих први аргумент који није број" + +#: mpfr.c:1271 +msgid "intdiv: received non-numeric second argument" +msgstr "intdiv: примих други аргумент који није број" + +#: msg.c:76 +#, c-format +msgid "cmd. line:" +msgstr "линија наредби:" + +#: node.c:481 +msgid "could not make typed regex" +msgstr "не могу да направим укуцани регуларни израз" + +#: node.c:554 +#, c-format +msgid "old awk does not support the `\\%c' escape sequence" +msgstr "Ñтари „awk“ не подржава „\\%c“ као низ промене реда" + +#: node.c:605 +msgid "POSIX does not allow `\\x' escapes" +msgstr "„POSIX“ не допушта „\\x“ као промену реда" + +#: node.c:611 +msgid "no hex digits in `\\x' escape sequence" +msgstr "нема хекÑадецималних цифара у „\\x“ низу промене реда" + +#: node.c:632 +#, c-format +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"хекÑадецимална промена реда „\\x%.*s“ %d знака вероватно није протумачена " +"онако како Ñте очекивали" + +#: node.c:647 +#, c-format +msgid "escape sequence `\\%c' treated as plain `%c'" +msgstr "низ промене реда „\\%c“ је узет као обичан „%c“" + +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale" +msgstr "" +"Откривени Ñу неиÑправни вишебајтни подаци. Може бити неподударања између " +"ваших података и вашег језика." + +#: posix/gawkmisc.c:177 +#, c-format +msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" +msgstr "" +"%s %s „%s“: не могу да добавим заÑтавице опиÑника датотеке: (fcntl F_GETFD: " +"%s)" + +#: posix/gawkmisc.c:189 +#, c-format +msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" +msgstr "" +"%s %s „%s“: не могу да поÑтавим затварање након извршења: (fcntl F_GETFD: %s)" + +#: profile.c:73 +msgid "Program indentation level too deep. Consider refactoring your code" +msgstr "" +"Ðиво увлачења програма је предубок. РазмиÑлите о рефакториÑању вашег кода" + +#: profile.c:112 +msgid "sending profile to standard error" +msgstr "шаљем профил на Ñтандардну грешку" + +#: profile.c:275 +#, c-format +msgid "" +"\t# %s rule(s)\n" +"\n" +msgstr "" +"\t# %s правило(а)\n" +"\n" + +#: profile.c:283 +#, c-format +msgid "" +"\t# Rule(s)\n" +"\n" +msgstr "" +"\t# Правило(а)\n" +"\n" + +#: profile.c:371 +#, c-format +msgid "internal error: %s with null vname" +msgstr "унутрашња грешка: „%s“ Ñа ништавним називом променљиве" + +#: profile.c:663 +msgid "internal error: builtin with null fname" +msgstr "унутрашња грешка: уграђеноÑÑ‚ Ñа ништавним називом датотеке" + +#: profile.c:1318 +#, c-format +msgid "" +"%s# Loaded extensions (-l and/or @load)\n" +"\n" +msgstr "" +"%s# Учитана проширења („-l“ и/или „@load“)\n" +"\n" + +#: profile.c:1349 +#, c-format +msgid "" +"\n" +"# Included files (-i and/or @include)\n" +"\n" +msgstr "" +"\n" +"# Обухваћене датотеке („-i“ и/или „@include“)\n" +"\n" + +#: profile.c:1413 +#, c-format +msgid "\t# gawk profile, created %s\n" +msgstr "\t# „gawk“ профил, направљено „%s“\n" + +#: profile.c:1981 +#, c-format +msgid "" +"\n" +"\t# Functions, listed alphabetically\n" +msgstr "" +"\n" +"\t# Функције, иÑпиÑане азбучним редом\n" + +#: profile.c:2042 +#, c-format +msgid "redir2str: unknown redirection type %d" +msgstr "redir2str: непозната врÑта преуÑмерења %d" + +#: re.c:58 re.c:163 +msgid "" +"behavior of matching a regexp containing NUL characters is not defined by " +"POSIX" +msgstr "" +"понашање поклапања регуларног израза који Ñадржи ÐИШТÐÐ’ÐЕ знаке није " +"дефиниÑано „POSIX“-ом" + +#: re.c:127 +msgid "invalid NUL byte in dynamic regexp" +msgstr "неиÑправан ÐИШТÐÐ’ÐИ бајт у динамичком регуларном изразу" + +#: re.c:174 +#, c-format +msgid "regexp escape sequence `\\%c' treated as plain `%c'" +msgstr "низ промене реда регуларног израза „\\%c“ је узет као обичан „%c“" + +#: re.c:193 +#, c-format +msgid "regexp escape sequence `\\%c' is not a known regexp operator" +msgstr "" +"низ промене реда регуларног израза „\\%c“ није познат оператер регуларног " +"израза" + +#: re.c:663 +#, c-format +msgid "regexp component `%.*s' should probably be `[%.*s]'" +msgstr "ÑаÑтојак регуларног израза „%.*s“ треба вероватно бити „[%.*s]“" + +#: support/dfa.c:896 +msgid "unbalanced [" +msgstr "неуравнотежена [" + +#: support/dfa.c:1017 +msgid "invalid character class" +msgstr "неиÑправна клаÑа знака" + +#: support/dfa.c:1143 +msgid "character class syntax is [[:space:]], not [:space:]" +msgstr "ÑинтакÑа клаÑе знака је [[:space:]], а не [:space:]" + +#: support/dfa.c:1210 +msgid "unfinished \\ escape" +msgstr "недовршена \\ промене реда" + +#: support/dfa.c:1371 +msgid "invalid content of \\{\\}" +msgstr "неиÑправан Ñадржај \\{\\}" + +#: support/dfa.c:1374 +msgid "regular expression too big" +msgstr "регуларни израз је превелик" + +#: support/dfa.c:1858 +msgid "unbalanced (" +msgstr "неуравнотежена (" + +#: support/dfa.c:1975 +msgid "no syntax specified" +msgstr "није наведена ÑинтакÑа" + +#: support/dfa.c:1986 +msgid "unbalanced )" +msgstr "неуравнотежена )" + +#: support/getopt.c:605 support/getopt.c:634 +#, c-format +msgid "%s: option '%s' is ambiguous; possibilities:" +msgstr "%s: опција „%s“ је нејаÑна; могућноÑти:" + +#: support/getopt.c:680 support/getopt.c:684 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: опција „--%s“ не допушта аргумент\n" + +#: support/getopt.c:693 support/getopt.c:698 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: опција „%c%s“ не допушта аргумент\n" + +#: support/getopt.c:741 support/getopt.c:760 +#, c-format +msgid "%s: option '--%s' requires an argument\n" +msgstr "%s: опција „--%s“ захтева аргумент\n" + +#: support/getopt.c:798 support/getopt.c:801 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: непозната опција „--%s“\n" + +#: support/getopt.c:809 support/getopt.c:812 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: непозната опција „%c%s“\n" + +#: support/getopt.c:861 support/getopt.c:864 +#, c-format +msgid "%s: invalid option -- '%c'\n" +msgstr "%s: неиÑправна опција -- „%c“\n" + +#: support/getopt.c:917 support/getopt.c:934 support/getopt.c:1144 +#: support/getopt.c:1162 +#, c-format +msgid "%s: option requires an argument -- '%c'\n" +msgstr "%s: опција захтева аргумент -- „%c“\n" + +#: support/getopt.c:990 support/getopt.c:1006 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: опција „-W %s“ је нејаÑна\n" + +#: support/getopt.c:1030 support/getopt.c:1048 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: опција „-W %s“ не допушта аргумент\n" + +#: support/getopt.c:1069 support/getopt.c:1087 +#, c-format +msgid "%s: option '-W %s' requires an argument\n" +msgstr "%s: опција „-W %s“ захтева аргумент\n" + +#: support/regcomp.c:135 +msgid "Success" +msgstr "УÑпешно" + +#: support/regcomp.c:138 +msgid "No match" +msgstr "Ðема подударања" + +#: support/regcomp.c:141 +msgid "Invalid regular expression" +msgstr "ÐеиÑправан регуларни израз" + +#: support/regcomp.c:144 +msgid "Invalid collation character" +msgstr "ÐеиÑправан знак уÑпоређивања" + +#: support/regcomp.c:147 +msgid "Invalid character class name" +msgstr "ÐеиÑправан назив клаÑе знака" + +#: support/regcomp.c:150 +msgid "Trailing backslash" +msgstr "Пратећа контра коÑа црта" + +#: support/regcomp.c:153 +msgid "Invalid back reference" +msgstr "ÐеиÑправна повратна упута" + +#: support/regcomp.c:156 +msgid "Unmatched [, [^, [:, [., or [=" +msgstr "Ðе одговара [, [^, [:, [., или [=" + +#: support/regcomp.c:159 +msgid "Unmatched ( or \\(" +msgstr "Ðе одговара ( или \\(" + +#: support/regcomp.c:162 +msgid "Unmatched \\{" +msgstr "Ðе одговара \\{" + +#: support/regcomp.c:165 +msgid "Invalid content of \\{\\}" +msgstr "ÐеиÑправан Ñадржај \\{\\}" + +#: support/regcomp.c:168 +msgid "Invalid range end" +msgstr "ÐеиÑправан крај опÑега" + +#: support/regcomp.c:171 +msgid "Memory exhausted" +msgstr "Меморија је потрошена" + +#: support/regcomp.c:174 +msgid "Invalid preceding regular expression" +msgstr "ÐеиÑправан регуларан израз који претходи" + +#: support/regcomp.c:177 +msgid "Premature end of regular expression" +msgstr "Прерани крај регуларног израза" + +#: support/regcomp.c:180 +msgid "Regular expression too big" +msgstr "Регуларни израз је превелик" + +#: support/regcomp.c:183 +msgid "Unmatched ) or \\)" +msgstr "Ðе одговара ) или \\)" + +#: support/regcomp.c:676 +msgid "No previous regular expression" +msgstr "Ðема претходног регуларног израза" + +#: symbol.c:698 +#, c-format +msgid "function `%s': cannot use function `%s' as a parameter name" +msgstr "функција „%s“: не могу да кориÑтим функцију „%s“ као назив параметра" + +#: symbol.c:828 +msgid "cannot pop main context" +msgstr "не могу да прикажем главни контекÑÑ‚ у првом плану" + +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "„L“ је безначајно у форматима „awk“-а; занемарено" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "кобно: „L“ није дозвољено у форматима „POSIX awk“-а" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "„h“ је безначајно у форматима „awk“-а; занемарено" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "кобно: „h“ није дозвољено у форматима „POSIX awk“-а" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Ðема Ñимбола „%s“ у текућем контекÑту" diff -urN gawk-5.1.0/po/sv.po gawk-5.1.1/po/sv.po --- gawk-5.1.0/po/sv.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/sv.po 2021-10-27 07:58:42.000000000 +0300 @@ -1,18 +1,18 @@ # Swedish translation of gawk -# Copyright © 2003, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc. +# Copyright © 2003, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # # Martin Sjögren , 2001-2002. # Christer Andersson , 2007. -# Göran Uddeborg , 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020. +# Göran Uddeborg , 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. # -# $Revision: 1.38 $ +# $Revision: 1.41 $ msgid "" msgstr "" -"Project-Id-Version: gawk 5.0.64\n" +"Project-Id-Version: gawk 5.1.1e\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2020-03-16 20:57+0100\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2021-09-08 22:44+0200\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -21,233 +21,246 @@ "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "frÃ¥n %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "försök att använda ett skalärt värde som vektor" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "försök att använda skalärparametern â€%s†som en vektor" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "försök att använda skalären â€%s†som en vektor" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "försök att använda vektorn â€%s†i skalärsammanhang" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: indexet â€%.*s†finns inte i vektorn â€%sâ€" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "försök att använda skalären â€%s[\"%.*s\"]†som en vektor" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, c-format msgid "%s: first argument is not an array" msgstr "%s: första argumentet är inte en vektor" -#: array.c:824 +#: array.c:826 #, c-format msgid "%s: second argument is not an array" msgstr "%s: andra argumentet är inte en vektor" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "%s: första argumentet fÃ¥r inte vara SYMBAB" +msgid "%s: cannot use %s as second argument" +msgstr "%s: det gÃ¥r inte att använda %s som andra argument" -#: array.c:838 +#: array.c:837 #, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "%s: första argumentet fÃ¥r inte vara FUNCTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%s: första argumentet fÃ¥r inte vara SYMTAB utan ett andra argument" -#: array.c:844 +#: array.c:839 +#, c-format +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%s: första argumentet fÃ¥r inte vara FUNCTAB utan ett andra argument" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" +"asort/asorti: att använda samma vektor som källa och destination utan ett " +"tredje argument är dumt." + +#: array.c:851 #, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "%s: det gÃ¥r inte att använda en delvektor av första argumentet som andra " "argument" -#: array.c:849 +#: array.c:856 #, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "%s: det gÃ¥r inte att använda en delvektor av andra argumentet som första " "argument" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "â€%s†är ogiltigt som ett funktionsnamn" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "jämförelsefunktionen â€%s†för sortering är inte definierad" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s-block mÃ¥ste ha en Ã¥tgärdsdel" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "varje regel mÃ¥ste ha ett mönster eller en Ã¥tgärdsdel" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "gamla awk stöder inte flera â€BEGINâ€- eller â€ENDâ€-regler" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "â€%s“ är en inbyggd funktion, den kan inte definieras om" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "regexp-konstanten â€//†ser ut som en C++-kommentar men är inte det" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "regexp-konstanten â€/%s/†ser ut som en C-kommentar men är inte det" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "upprepade case-värden i switch-sats: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "flera â€default†upptäcktes i switch-sats" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "â€break†är inte tillÃ¥tet utanför en slinga eller switch" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "â€continue†är inte tillÃ¥tet utanför en slinga" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "â€next†använt i %s-Ã¥tgärd" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "â€nextfile†använt i %s-Ã¥tgärd" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "â€return†använd utanför funktion" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "ensamt â€print†i BEGIN eller END-regel bör troligen vara 'print \"\"'" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "â€delete†är inte tillÃ¥tet med SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "â€delete†är inte tillÃ¥tet med FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "â€delete(array)†är en icke portabel tawk-utökning" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "flerstegs dubbelriktade rör fungerar inte" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "konkatenering som omdirigeringsmÃ¥let för I/O â€>†är tvetydig" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "reguljärt uttryck i högerledet av en tilldelning" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "reguljärt uttryck pÃ¥ vänster sida om en â€~â€- eller â€!~â€-operator" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" -msgstr "gamla awk stöder inte operatorn â€**â€" +msgstr "gamla awk stöder inte nyckelordet â€in†utom efter â€forâ€" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "reguljärt uttryck i högerledet av en jämförelse" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "icke omdirigerad â€getline†är ogiltigt inuti â€%sâ€-regel" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "icke omdirigerad â€getline†odefinierad inuti END-Ã¥tgärd" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "gamla awk stöder inte flerdimensionella vektorer" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "anrop av â€length†utan parenteser är inte portabelt" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "indirekta funktionsanrop är en gawk-utökning" -#: awkgram.y:2010 +#: awkgram.y:2017 #, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "" -"det gÃ¥r inte att använda specialvariabeln â€%s†för indirekta fuktionsanrop" +"det gÃ¥r inte att använda specialvariabeln â€%s†för indirekta funktionsanrop" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "försök att använda en icke-funktion â€%s†i ett funktionsanrop" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" -msgstr "ogiltig indexuttryck" +msgstr "ogiltigt indexuttryck" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "varning: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "ödesdigert: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "oväntat nyradstecken eller slut pÃ¥ strängen" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" @@ -255,266 +268,266 @@ "källkodsfiler/kommandoradsargument mÃ¥ste innehÃ¥lla kompletta funktioner " "eller regler" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "kan inte öppna källfilen â€%s†för läsning: %s" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "kan inte öppna det delade biblioteket â€%s†för läsning: %s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "okänd anledning" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, c-format msgid "cannot include `%s' and use it as a program file" msgstr "kan inte inkludera â€%s†och använda den som en programfil" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "inkluderade redan källfilen â€%sâ€" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "inkluderade redan det delade biblioteket â€%sâ€" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include är en gawk-utökning" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "tomt filnamn efter @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load är en gawk-utökning" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "tomt filnamn efter @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "tom programtext pÃ¥ kommandoraden" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, c-format msgid "cannot read source file `%s': %s" msgstr "kan inte läsa källfilen â€%sâ€: %s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "källfilen â€%s†är tom" -#: awkgram.y:3310 +#: awkgram.y:3317 #, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "fel: ogiltigt tecken â€\\%03o†i källkoden" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "källfilen slutar inte med en ny rad" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "oavslutat reguljärt uttryck slutar med â€\\†i slutet av filen" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: tawk-modifierare för reguljära uttryck â€/.../%c†fungerar inte i gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk-modifierare för reguljära uttryck â€/.../%c†fungerar inte i gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "oavslutat reguljärt uttryck" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "oavslutat reguljärt uttryck i slutet av filen" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "Användning av â€\\ #...†för radfortsättning är inte portabelt" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "sista tecknet pÃ¥ raden är inte ett omvänt snedstreck" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "flerdimensionella matriser är en gawk-utökning" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX tillÃ¥ter inte operatorn â€%sâ€" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, c-format msgid "operator `%s' is not supported in old awk" msgstr "operatorn â€%s†stöds inte i gamla awk" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "oavslutad sträng" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX tillÃ¥ter inte fysiska nyrader i strängvärden" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "strängfortsättning med omvänt snedstreck är inte portabelt" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "ogiltigt tecken â€%c†i uttryck" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "â€%s†är en gawk-utökning" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillÃ¥ter inte â€%sâ€" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "â€%s†stöds inte i gamla awk" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "â€goto†anses skadligt!" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d är ett ogiltigt antal argument för %s" -#: awkgram.y:4604 +#: awkgram.y:4611 #, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: bokstavlig sträng som sista argument till ersättning har ingen effekt" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argumentet är inte ett ändringsbart objekt" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: tredje argumentet är en gawk-utökning" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: andra argumentet är en gawk-utökning" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index: reguljäruttryck som andra argumentet är inte tillÃ¥tet" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen â€%sâ€: parametern â€%s†överskuggar en global variabel" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kunde inte öppna â€%s†för skrivning: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "skickar variabellista till standard fel" -#: awkgram.y:4930 +#: awkgram.y:4937 #, c-format msgid "%s: close failed: %s" msgstr "%s: misslyckades att stänga: %s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() anropad tvÃ¥ gÃ¥nger!" -#: awkgram.y:4963 -msgid "there were shadowed variables." -msgstr "det fanns överskuggade variabler." +#: awkgram.y:4970 +msgid "there were shadowed variables" +msgstr "det fanns överskuggade variabler" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnamnet â€%s†är definierat sedan tidigare" -#: awkgram.y:5091 +#: awkgram.y:5098 #, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "funktionen â€%sâ€: kan inte använda funktionsnamn som parameternamn" -#: awkgram.y:5094 +#: awkgram.y:5101 #, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "" "funktionen â€%sâ€: det gÃ¥r inte att använda specialvariabeln â€%s†som en " "funktionsparameter" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "funktionen â€%sâ€: parametern â€%s†fÃ¥r inte innehÃ¥lla en namnrymd" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen â€%sâ€: parameter %d, â€%sâ€, är samma som parameter %d" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen â€%s†anropad men aldrig definierad" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen â€%s†definierad men aldrig anropad direkt" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstant reguljärt uttryck för parameter %d ger ett booleskt värde" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -523,60 +536,64 @@ "funktionen â€%s†anropad med blanktecken mellan namnet och â€(â€,\n" "eller använd som variabel eller vektor" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "försökte dividera med noll" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "försökte dividera med noll i â€%%â€" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "kan inte tilldela ett värde till uttryck som är en efterinkrementering av " "ett fält" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ogiltigt mÃ¥l för tilldelning (op-kod %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "satsen har ingen effekt" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" "identifierare %s: kvalificerade namn är inte tillÃ¥tna i traditionellt/POSIX-" "läge" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "identifierare %s: namnrymdsseparatorn är tvÃ¥ kolon, inte ett" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "den kvalificerade identifieraren â€%s†är felaktigt formad" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -"identifierare â€%sâ€: namnrymdsseparatorn kan endast förekomma in gÃ¥ng i ett " +"identifierare â€%sâ€: namnrymdsseparatorn kan endast förekomma en gÃ¥ng i ett " "kvalificerat namn" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" "att använda den reserverade identifieraren â€%s†som en namnrymd är inte " "tillÃ¥tet" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " @@ -585,11 +602,11 @@ "att använda den reserverade identifieraren â€%s†som den andra komponenten i " "ett kvalificerat namn är inte tillÃ¥tet" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "@namespace är en gawk-utökning" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -608,8 +625,8 @@ msgid "standard error" msgstr "standard fel" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: fick ett ickenumeriskt argument" @@ -646,7 +663,7 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush: â€%.*s†är inte en öppen fil, rör eller koprocess" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, c-format msgid "%s: received non-string first argument" msgstr "%s: första argumentet är inte en sträng" @@ -664,181 +681,167 @@ msgid "`length(array)' is a gawk extension" msgstr "â€length(array)†är en gawk-utökning" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, c-format msgid "%s: received non-string argument" msgstr "%s: fick ett argument som inte är en sträng" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, c-format msgid "%s: received negative argument %g" -msgstr "%s: fick ett negativt argumentet %g" +msgstr "%s: fick ett negativt argument %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "ödesdigert: mÃ¥ste använda â€count$†pÃ¥ alla eller inga format" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "fältbredd ignoreras för â€%%â€-specificerare" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precision ignoreras för â€%%â€-specificerare" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "fältbredd och precision ignoreras för â€%%â€-specificerare" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "ödesdigert: â€$†tillÃ¥ts inte i awk-format" -#: builtin.c:927 +#: builtin.c:933 msgid "fatal: argument index with `$' must be > 0" msgstr "ödesdigert: argumentindex med â€$†mÃ¥ste vara > 0" -#: builtin.c:931 +#: builtin.c:937 #, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "ödesdigert: argumentindex %ld är större än antalet givna argument" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "ödesdigert: â€$†tillÃ¥ts inte efter en punkt i formatet" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "ödesdigert: inget â€$†bifogat för positionsangiven fältbredd eller precision" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" -msgstr "â€l†är meningslös i awk-format, ignorerad" - -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" -msgstr "ödesdigert: â€l†tillÃ¥ts inte i POSIX awk-format" - -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "â€L†är meningslös i awk-format, ignorerad" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "ödesdigert: â€L†tillÃ¥ts inte i POSIX awk-format" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "â€h†är meningslös i awk-format, ignorerad" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "ödesdigert: â€h†tillÃ¥ts inte i POSIX awk-format" +#: builtin.c:1035 +#, c-format +msgid "`%c' is meaningless in awk formats; ignored" +msgstr "â€%c†är meningslöst i awk-format, ignorerad" + +#: builtin.c:1039 +#, c-format +msgid "fatal: `%c' is not permitted in POSIX awk formats" +msgstr "ödesdigert: â€%c†tillÃ¥ts inte i POSIX awk-format" -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: värdet %g är utanför formatet %%c giltiga intervall" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" -msgstr "[s]printf: värdet %g är inte ett giltigt brett tecken " +msgstr "[s]printf: värdet %g är inte ett giltigt brett tecken" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: värdet %g är utanför â€%%%câ€-formatets giltiga intervall" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: värdet %s är utanför formatet â€%%%c†giltiga intervall" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "formatet %%%c är POSIX-standard men inte portabelt till andra awk:ar" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerar okänt formatspecifikationstecken â€%câ€: inget argument konverterat" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "ödesdigert: för fÃ¥ argument för formatsträngen" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ tog slut här" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecificeraren har ingen kommandobokstav" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "för mÃ¥nga argument för formatsträngen" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: inga argument" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: inga argument" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "printf: försök att skriva till stängd skrivände av ett tvÃ¥vägsrör" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: längden %g är inte >= 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: längden %g är inte >= 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: längden %g som inte är ett heltal kommer huggas av" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" -msgstr "substr: längden %g är för stor för strängindexering, huggas av till %g" +msgstr "substr: längden %g är för stor för strängindexering, hugger av till %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g är ogiltigt, använder 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g som inte är ett heltal kommer huggas av" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: källsträngen är tom" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindex %g är bortom strängens slut" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -846,154 +849,158 @@ "substr: längden %g vid startindex %g överskrider det första argumentets " "längd (%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatvärde i PROCINFO[\"strftime\"] har numerisk typ" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, c-format msgid "%s: received non-numeric second argument" msgstr "%s: fick ett ickenumeriskt andra argument" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andra argumentet mindre än 0 eller för stort för time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" -msgstr "strftime: andra argumentet utanför intervallet för för time_t" +msgstr "strftime: andra argumentet utanför intervallet för time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: fick en tom formatsträng" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: Ã¥tminstone ett av värdena är utanför standardintervallet" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "funktionen â€system†är inte tillÃ¥ten i sandlÃ¥deläge" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "print: försök att skriva till stängd skrivände av ett tvÃ¥vägsrör" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referens till icke initierat fält â€$%dâ€" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, c-format msgid "%s: received non-numeric first argument" msgstr "%s: fick ett ickenumeriskt första argument" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: tredje argumentet är inte en vektor" -#: builtin.c:2923 +#: builtin.c:2673 +#, c-format +msgid "%s: cannot use %s as third argument" +msgstr "%s: det gÃ¥r inte att använda %s som tredje argument" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: tredje argumentet â€%.*s†behandlat som 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kan anropas indirekt endast med tvÃ¥ argument" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "indirekt anrop till %s kräver Ã¥tminstone tvÃ¥ argument" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): negativa värden är inte tillÃ¥tna" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): för stort skiftvärde kommer ge konstiga resultat" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): negativa värden är inte tillÃ¥tna" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" -msgstr "rshift(%f, %f): för stor skiftvärde kommer ge konstiga resultat" +msgstr "rshift(%f, %f): för stort skiftvärde kommer ge konstiga resultat" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, c-format msgid "%s: called with less than two arguments" msgstr "%s: anropad med färre än tvÃ¥ argument" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, c-format msgid "%s: argument %d is non-numeric" msgstr "%s: argument %d är inte numeriskt" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: argument %d:s negativa värde %g är inte tillÃ¥tet" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): negativt värde är inte tillÃ¥tet" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): flyttalsvärde kommer huggas av" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: â€%s†är inte en giltig lokalkategori" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: tredje argumentet är inte en vektor" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: försökte dividera med noll" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeof: andra argumentet är inte en vektor" -#: builtin.c:4152 +#: builtin.c:4178 #, c-format msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" -"typeof upptäckte en ogiltig flaggkompination â€%sâ€, skicka gärna en " -"felrapport." +"typeof upptäckte en ogiltig flaggkombination â€%sâ€, skicka gärna en felrapport" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: felaktig argumenttyp â€%sâ€" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: okänd argumenttyp â€%sâ€" @@ -1003,431 +1010,429 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "kan inte lägga till en ny fil (%.*s) till ARGV i sandlÃ¥deläge" -#: command.y:227 +#: command.y:228 #, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Skriv (g)awk-satser. Avsluta med kommandot â€endâ€\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "ogiltigt ramnummer: %d" -#: command.y:297 +#: command.y:298 #, c-format msgid "info: invalid option - `%s'" msgstr "info: ogiltig flagga — â€%sâ€" -#: command.y:323 +#: command.y:324 #, c-format -msgid "source: `%s': already sourced." -msgstr "source â€%sâ€: redan inläst." +msgid "source: `%s': already sourced" +msgstr "source: â€%sâ€: redan inläst" -#: command.y:328 +#: command.y:329 #, c-format -msgid "save: `%s': command not permitted." -msgstr "save â€%sâ€: kommandot inte tillÃ¥tet." +msgid "save: `%s': command not permitted" +msgstr "save: â€%sâ€: kommandot inte tillÃ¥tet" -#: command.y:341 +#: command.y:342 msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "" "det gÃ¥r inte att använda kommandot â€commands†i brytpunkts-/" "observationspunktskommandon" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "ingen brytpunkt/observationspunkt har satts ännu" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "ogiltigt brytpunkts-/observationspunktsnummer" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Skriv kommandon att användas när %s %d träffas, ett per rad.\n" -#: command.y:352 +#: command.y:353 #, c-format msgid "End with the command `end'\n" msgstr "Avsluta med kommandot â€endâ€\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "â€end†är giltigt endast i kommandona â€commands†och â€evalâ€" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "â€silent†är giltigt endast i kommandot â€commandsâ€" -#: command.y:375 +#: command.y:376 #, c-format msgid "trace: invalid option - `%s'" msgstr "trace: ogiltig flagga — â€%sâ€" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: ogiltigt brytpunkts-/observationspunktsnummer" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "argumentet är inte en sträng" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, c-format msgid "option: invalid parameter - `%s'" msgstr "option: ogiltig parameter — â€%sâ€" -#: command.y:476 +#: command.y:477 #, c-format msgid "no such function - `%s'" msgstr "ingen sÃ¥dan funktion — â€%sâ€" -#: command.y:533 +#: command.y:534 #, c-format msgid "enable: invalid option - `%s'" msgstr "enable: ogiltig flagga — â€%sâ€" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "ogiltigt intervallspecifikation: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "icke numeriskt värde som fältnummer" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "ickenumeriskt värde fanns, numeriskt förväntades" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "heltalsvärde som inte är noll" -#: command.y:819 +#: command.y:820 msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] — skriv ett spÃ¥r över alla eller N innersta (yttersta om N < " -"0) ramar." +"0) ramar" -#: command.y:821 +#: command.y:822 msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." -msgstr "break [[filename:]N|function] — sätt brytpunkt pÃ¥ den angivna platsen." +"break [[filename:]N|function] - set breakpoint at the specified location" +msgstr "break [[filename:]N|function] — sätt brytpunkt pÃ¥ den angivna platsen" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[filnamn:]N|funktion] — radera tidigare satta brytpunkter." +#: command.y:824 +msgid "clear [[filename:]N|function] - delete breakpoints previously set" +msgstr "clear [[filnamn:]N|funktion] — radera tidigare satta brytpunkter" -#: command.y:825 +#: command.y:826 msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [num] — startar en lista av kommandon att köra när en " -"brytpunkt(observationspunkt) träffas." +"brytpunkt(observationspunkt) träffas" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" "condition num [uttr] — sätt eller töm en brytpunkts eller observationspunkts " -"villkor." +"villkor" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [ANTAL] — fortsätt programmet som felsöks." +#: command.y:830 +msgid "continue [COUNT] - continue program being debugged" +msgstr "continue [ANTAL] — fortsätt programmet som felsöks" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "delete [brytpunkter] [intervall] — radera angivna brytpunkter." +#: command.y:832 +msgid "delete [breakpoints] [range] - delete specified breakpoints" +msgstr "delete [brytpunkter] [intervall] — radera angivna brytpunkter" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." -msgstr "disable [brytpunkter] [intervall] — avaktivera angivna brytpunkter." +#: command.y:834 +msgid "disable [breakpoints] [range] - disable specified breakpoints" +msgstr "disable [brytpunkter] [intervall] — avaktivera angivna brytpunkter" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +msgid "display [var] - print value of variable each time the program stops" msgstr "" -"display [var] — skriv ut värdet pÃ¥ variabeln varje gÃ¥ng programmet stoppar." +"display [var] — skriv ut värdet pÃ¥ variabeln varje gÃ¥ng programmet stoppar" -#: command.y:837 -msgid "down [N] - move N frames down the stack." -msgstr "down [N] — flytta N ramar ner i stacken." +#: command.y:838 +msgid "down [N] - move N frames down the stack" +msgstr "down [N] — flytta N ramar ner i stacken" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [filnamn] — skriv instruktioner till filen eller standard ut." +#: command.y:840 +msgid "dump [filename] - dump instructions to file or stdout" +msgstr "dump [filnamn] — skriv instruktioner till filen eller standard ut" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "" -"enable [once|del] [brytpunkter] [intervall] — aktivera angivna brytpunkter." +"enable [once|del] [brytpunkter] [intervall] — aktivera angivna brytpunkter" -#: command.y:843 -msgid "end - end a list of commands or awk statements." -msgstr "end — avsluta en lista av kommandon eller awk-satser." +#: command.y:844 +msgid "end - end a list of commands or awk statements" +msgstr "end — avsluta en lista av kommandon eller awk-satser" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval sats|[p1, p2, ...] — utför awk-sats(er)." +#: command.y:846 +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" +msgstr "eval sats|[p1, p2, …] — utför awk-sats(er)" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." -msgstr "exit — (samma som quit) avsluta felsökaren." +#: command.y:848 +msgid "exit - (same as quit) exit debugger" +msgstr "exit — (samma som quit) avsluta felsökaren" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." -msgstr "finish — kör tills den valda stackramen returnerar." +#: command.y:850 +msgid "finish - execute until selected stack frame returns" +msgstr "finish — kör tills den valda stackramen returnerar" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] — välj och skriv ut stackram nummer N." +#: command.y:852 +msgid "frame [N] - select and print stack frame number N" +msgstr "frame [N] — välj och skriv ut stackram nummer N" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +msgid "help [command] - print list of commands or explanation of command" msgstr "" -"help [kommando] — skriv listan av kommandon eller en förklaring av kommando." +"help [kommando] — skriv listan av kommandon eller en förklaring av kommando" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "" -"ignore N ANTAL — sätt ignoreringsantal pÃ¥ brytpunkt nummer N till ANTAL." +"ignore N ANTAL — sätt ignoreringsantal pÃ¥ brytpunkt nummer N till ANTAL" -#: command.y:857 +#: command.y:858 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info topic — source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." -msgstr "list [-|+|[filnamn:]radnr|funktion|intervall] — lista angivna rad(er)." +#: command.y:860 +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" +msgstr "list [-|+|[filnamn:]radnr|funktion|intervall] — lista angivna rad(er)" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." -msgstr "next [ANTAL] — stega programmet, passera genom subrutinanrop." +#: command.y:862 +msgid "next [COUNT] - step program, proceeding through subroutine calls" +msgstr "next [ANTAL] — stega programmet, passera genom subrutinanrop" -#: command.y:863 +#: command.y:864 msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." -msgstr "nexti [ANTAL] — stega en instruktion, men passera genom subrutinanrop." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" +msgstr "nexti [ANTAL] — stega en instruktion, men passera genom subrutinanrop" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [namn[=värde]] — sätt eller visa felsökningsalternativ." +#: command.y:866 +msgid "option [name[=value]] - set or display debugger option(s)" +msgstr "option [namn[=värde]] — sätt eller visa felsökningsalternativ" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." -msgstr "print var [var] — skriv värdet pÃ¥ en variabel eller vektor." +#: command.y:868 +msgid "print var [var] - print value of a variable or array" +msgstr "print var [var] — skriv värdet pÃ¥ en variabel eller vektor" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." -msgstr "printf format, [arg], … — formaterad utskrift." +#: command.y:870 +msgid "printf format, [arg], ... - formatted output" +msgstr "printf format, [arg], … — formaterad utskrift" -#: command.y:871 -msgid "quit - exit debugger." -msgstr "quit — avsluta felsökaren." +#: command.y:872 +msgid "quit - exit debugger" +msgstr "quit — avsluta felsökaren" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." -msgstr "return [värde] — lÃ¥t den valda stackramen returnera till sin anropare." +#: command.y:874 +msgid "return [value] - make selected stack frame return to its caller" +msgstr "return [värde] — lÃ¥t den valda stackramen returnera till sin anropare" -#: command.y:875 -msgid "run - start or restart executing program." -msgstr "run — starta eller starta om körningen av programmet." +#: command.y:876 +msgid "run - start or restart executing program" +msgstr "run — starta eller starta om körningen av programmet" -#: command.y:878 -msgid "save filename - save commands from the session to file." -msgstr "save filnamn — spara kommandon frÃ¥n sessionen i en fil." +#: command.y:879 +msgid "save filename - save commands from the session to file" +msgstr "save filnamn — spara kommandon frÃ¥n sessionen i en fil" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." -msgstr "set var = värde — tilldela värde till en skalär variabel." +#: command.y:882 +msgid "set var = value - assign value to a scalar variable" +msgstr "set var = värde — tilldela värde till en skalär variabel" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent — undertrycker normala meddelanden vid stopp pÃ¥ en brytpunkt/" -"observationspunkt. " +"observationspunkt" -#: command.y:885 -msgid "source file - execute commands from file." -msgstr "source fil — kör kommandon frÃ¥n fil." +#: command.y:886 +msgid "source file - execute commands from file" +msgstr "source fil — kör kommandon frÃ¥n fil" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." -msgstr "step [ANTAL] — stega programmet tills det nÃ¥r en annan källkodsrad." +#: command.y:888 +msgid "step [COUNT] - step program until it reaches a different source line" +msgstr "step [ANTAL] — stega programmet tills det nÃ¥r en annan källkodsrad" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [ANTAL] — stega exakt en instruktion." +#: command.y:890 +msgid "stepi [COUNT] - step one instruction exactly" +msgstr "stepi [ANTAL] — stega exakt en instruktion" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[filenamn:]N|funktion] — sätt en tillfällig brytpunkt." +#: command.y:892 +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" +msgstr "tbreak [[filnamn:]N|funktion] — sätt en tillfällig brytpunkt" -#: command.y:893 -msgid "trace on|off - print instruction before executing." -msgstr "trace on|off — skriv ut instruktioner före de körs." +#: command.y:894 +msgid "trace on|off - print instruction before executing" +msgstr "trace on|off — skriv ut instruktioner före de körs" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." -msgstr "undisplay [N] — ta bort variabler frÃ¥n listan över automatiskt visade." +#: command.y:896 +msgid "undisplay [N] - remove variable(s) from automatic display list" +msgstr "undisplay [N] — ta bort variabler frÃ¥n listan över automatiskt visade" -#: command.y:897 +#: command.y:898 msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" -"until [[filenamn:]N|funktion] — kör tills programmet nÃ¥r en annan rad eller " -"rad N inom aktuell ram." +"until [[filnamn:]N|funktion] — kör tills programmet nÃ¥r en annan rad eller " +"rad N inom aktuell ram" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] — ta bort variabler frÃ¥n observationslistan." +#: command.y:900 +msgid "unwatch [N] - remove variable(s) from watch list" +msgstr "unwatch [N] — ta bort variabler frÃ¥n observationslistan" -#: command.y:901 -msgid "up [N] - move N frames up the stack." -msgstr "up [N] — flytta N ramar uppÃ¥t i stacken." +#: command.y:902 +msgid "up [N] - move N frames up the stack" +msgstr "up [N] — flytta N ramar uppÃ¥t i stacken" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." -msgstr "watch var — sätt en observationspunkt för en variabel." +#: command.y:904 +msgid "watch var - set a watchpoint for a variable" +msgstr "watch var — sätt en observationspunkt för en variabel" -#: command.y:905 +#: command.y:906 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] — (samma som backtrace) skriv ett spÃ¥r över alla eller N innersta " -"(yttersta om N < 0) ramar." +"(yttersta om N < 0) ramar" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "fel: " -#: command.y:1060 +#: command.y:1061 #, c-format msgid "cannot read command: %s\n" msgstr "kan inte läsa kommando: %s\n" -#: command.y:1074 +#: command.y:1075 #, c-format msgid "cannot read command: %s" msgstr "kan inte läsa kommandot: %s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "ogiltigt tecken i kommandot" -#: command.y:1161 +#: command.y:1162 #, c-format msgid "unknown command - `%.*s', try help" msgstr "okänt kommando — â€%.*sâ€, försök med help" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "ogiltigt tecken" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "odefinierat kommando: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." -msgstr "sätt eller visa antalet rader att behÃ¥lla i historikfilen." +msgid "set or show the number of lines to keep in history file" +msgstr "sätt eller visa antalet rader att behÃ¥lla i historikfilen" #: debug.c:259 -msgid "set or show the list command window size." -msgstr "sätt eller visa fönsterstorleken för listkommandot." +msgid "set or show the list command window size" +msgstr "sätt eller visa fönsterstorleken för listkommandot" #: debug.c:261 -msgid "set or show gawk output file." -msgstr "sätt eller visa gawks utmatningsfil." +msgid "set or show gawk output file" +msgstr "sätt eller visa gawks utmatningsfil" #: debug.c:263 -msgid "set or show debugger prompt." -msgstr "sätt eller visa felsökningsprompten." +msgid "set or show debugger prompt" +msgstr "sätt eller visa felsökningsprompten" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." -msgstr "slÃ¥ av/pÃ¥ eller visa sparandet av kommandohistorik (värde=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" +msgstr "slÃ¥ av/pÃ¥ eller visa sparandet av kommandohistorik (värde=on|off)" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." -msgstr "slÃ¥ av/pÃ¥ eller visa sparandet av flaggor (värde=on|off)." +msgid "(un)set or show saving of options (value=on|off)" +msgstr "slÃ¥ av/pÃ¥ eller visa sparandet av flaggor (värde=on|off)" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." -msgstr "slÃ¥ av/pÃ¥ eller visa instruktionsspÃ¥rande (värde=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" +msgstr "slÃ¥ av/pÃ¥ eller visa instruktionsspÃ¥rande (värde=on|off)" #: debug.c:358 -msgid "program not running." -msgstr "programmet kör inte." +msgid "program not running" +msgstr "programmet kör inte" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "källfilen â€%s†är tom.\n" -#: debug.c:493 -msgid "no current source file." -msgstr "ingen aktuell källkodsfil." +#: debug.c:502 +msgid "no current source file" +msgstr "ingen aktuell källkodsfil" -#: debug.c:518 +#: debug.c:527 #, c-format msgid "cannot find source file named `%s': %s" msgstr "kan inte hitta nÃ¥gon källfil med namnet â€%sâ€: %s" -#: debug.c:542 +#: debug.c:551 #, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" -msgstr "VARNING: källfilen â€%s†ändrad sedan programmet kompilerades.\n" +msgid "warning: source file `%s' modified since program compilation.\n" +msgstr "varning: källfilen â€%s†ändrad sedan programmet kompilerades.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "radnummer %d utanför intervallet; â€%s†har %d rader" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "oväntat filslut när filen â€%s†lästes, rad %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "källfilen â€%s†ändrad sedan början av programkörningen" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Aktuell källfil: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Antalet rader: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Källfilen (rader): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1435,54 +1440,54 @@ "Nummer Visa Aktiv Plats\n" "\n" -#: debug.c:778 +#: debug.c:787 #, c-format -msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tantal träffar = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignorera nästa %ld träffar\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tstoppvillkor: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tkommandon:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Aktuell ram: " -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "Anropad av ramen: " -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Anropare av ramen: " -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Ingen i main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Inga argument.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Inga lokala.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1490,7 +1495,7 @@ "Alla definierade variabler:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1498,7 +1503,7 @@ "Alla definierade funktioner:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1506,7 +1511,7 @@ "Automatvisade variabler:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1514,384 +1519,389 @@ "Observerade variabler:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "ingen symbol â€%s†i aktuellt sammanhang\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "â€%s†är inte en vektor\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = oinitierat fält\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "vektorn â€%s†är tom\n" -#: debug.c:1132 debug.c:1184 +#: debug.c:1141 debug.c:1193 #, c-format -msgid "[\"%.*s\"] not in array `%s'\n" -msgstr "[\"%.*s\"] finns inte i vektorn â€%sâ€\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" +msgstr "indexet â€%.*s†finns inte i vektorn â€%sâ€\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "â€%s[\"%.*s\"]†är inte en vektor\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "â€%s†är inte en skalär variabel" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "försök att använda vektorn â€%s[\"%.*s\"]†i skalärt sammanhang" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "försök att använda skalären â€%s[\"%.*s\"]†som en vektor" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "â€%s†är en funktion" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "observationspunkt %d är ovillkorlig\n" -#: debug.c:1514 +#: debug.c:1523 #, c-format -msgid "No display item numbered %ld" -msgstr "Ingen visningspost med numret %ld" +msgid "no display item numbered %ld" +msgstr "ingen visningspost med numret %ld" -#: debug.c:1517 +#: debug.c:1526 #, c-format -msgid "No watch item numbered %ld" -msgstr "Ingen observationspost med numret %ld" +msgid "no watch item numbered %ld" +msgstr "ingen observationspost med numret %ld" -#: debug.c:1543 +#: debug.c:1552 #, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" -msgstr "%d: [\"%.*s\"] finns inte i vektorn â€%sâ€\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" +msgstr "%d: indexet â€%.*s†finns inte i vektorn â€%sâ€\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "försök att använda ett skalärt värde som vektor" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "" "Observationspunkt %d raderad för att parametern är utanför sin räckvidd.\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Visning %d raderad för att parametern är utanför sin räckvidd.\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " i filen â€%sâ€, rad %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " vid â€%sâ€:%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\ti " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Fler stackramar följer …\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "Ogiltigt ramnummer" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Observera: brytpunkt %d (aktiverad, ignorera följande %ld träffar), är ocksÃ¥ " "satt vid %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Observera: brytpunkt %d (aktiverad), är ocksÃ¥ satt vid %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Observera: brytpunkt %d (avaktiverad, ignorera följande %ld träffar), är " "ocksÃ¥ satt vid %s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Observera: brytpunkt %d (avaktiverad), är ocksÃ¥ satt vid %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Brytpunkt %d satt vid filen â€%sâ€, rad %d\n" -#: debug.c:2357 +#: debug.c:2366 #, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "kan inte sätta en brytpunkt i filen â€%sâ€\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 +#: debug.c:2395 #, c-format -msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "radnummer %d i filen â€%s†är utanför tillÃ¥tet intervall" -#: debug.c:2390 +#: debug.c:2399 #, c-format msgid "internal error: cannot find rule\n" msgstr "internt fel: kan inte hitta regeln\n" -#: debug.c:2392 +#: debug.c:2401 #, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "kan inte sätta en brytpunkt vid â€%sâ€:%d\n" -#: debug.c:2404 +#: debug.c:2413 #, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "kan inte sätta en brytpunkt i funktionen â€%sâ€\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "brytpunkt %d satt i filen â€%sâ€, rad %d är ovillkorlig\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "radnummer %d i filen â€%s†är utanför tillÃ¥tet intervall" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Raderade brytpunkt %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Inga brytpunkter vid ingÃ¥ngen till funktionen â€%sâ€\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Ingen brytpunkt i filen â€%sâ€, rad nr. %d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "ogiltigt brytpunktsnummer" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " -msgstr "Radera alla brytpunkter? (j eller n)" +msgstr "Radera alla brytpunkter? (j eller n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "j" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Kommer ignorera följande %ld passager av brytpunkt %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Kommer stanna nästa gÃ¥ng brytpunkt %d nÃ¥s.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Kan bara felsöka program som getts flaggan â€-fâ€.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Misslyckades att starta om felsökaren" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Programmet kör redan. Starta om frÃ¥n början (j/n)? " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Programmet inte omstartat\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "fel: kan inte starta om, Ã¥tgärden är inte tillÃ¥ten\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "fel (%s): kan inte starta om, ignorerar resten av kommandona\n" -#: debug.c:2967 +#: debug.c:2978 #, c-format -msgid "Starting program: \n" -msgstr "Startar programmet: \n" +msgid "Starting program:\n" +msgstr "Startar programmet:\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Programmet avslutade onormalt med slutvärdet: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Programmet avslutade normalt med slutvärdet: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "Programmet kör. Avsluta ändÃ¥ (j/n)? " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Inte stoppad vid nÃ¥gon brytpunkt, argumentet ignoreras.\n" -#: debug.c:3032 +#: debug.c:3043 #, c-format -msgid "invalid breakpoint number %d." -msgstr "ogiltigt brytpunktsnummer %d." +msgid "invalid breakpoint number %d" +msgstr "ogiltigt brytpunktsnummer %d" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Kommer ignorera de nästa %ld passagerna av brytpunkt %d.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "â€finish†är inte meningsfullt i den yttersta ramen main()\n" -#: debug.c:3229 +#: debug.c:3240 #, c-format -msgid "Run till return from " +msgid "Run until return from " msgstr "Kör till retur frÃ¥n " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "â€return†är inte meningsfullt i den yttersta ramen main()\n" -#: debug.c:3386 +#: debug.c:3397 #, c-format msgid "cannot find specified location in function `%s'\n" msgstr "kan inte hitta angiven plats i funktionen â€%sâ€\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "ogiltig källrad %d i filen â€%sâ€" -#: debug.c:3409 +#: debug.c:3420 #, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "kan inte hitta angiven plats %d i filen â€%sâ€\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "elementet finns inte i vektorn\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "otypad variabel\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Stannar i %s …\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "â€finish†är inte meningsfullt med icke lokalt hopp â€%sâ€\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "â€until†är inte meningsfullt med icke lokalt hopp â€%sâ€\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "" "\t------[Retur] för att fortsätta eller [q] + [Retur] för att avsluta------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] finns inte i vektorn â€%sâ€" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "skickar utdata till standard ut\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "ogiltigt tal" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "â€%s†är inte tillÃ¥tet i det aktuella sammanhanget; satsen ignoreras" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "" "â€return†är inte tillÃ¥tet i det aktuella sammanhanget; satsen ignoreras" -#: debug.c:5753 +#: debug.c:5764 #, c-format -msgid "No symbol `%s' in current context" -msgstr "Ingen symbol â€%s†i aktuell omgivning" +msgid "no symbol `%s' in current context" +msgstr "ingen symbol â€%s†i aktuellt sammanhang" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "okänd nodtyp %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "okänd op-kod %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "op-kod %s är inte en operator eller ett nyckelord" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "buffertöverflöd i genflags2str" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1902,71 +1912,71 @@ "\t# Funktionsanropsstack:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "â€IGNORECASE†är en gawk-utökning" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "â€BINMODE†är en gawk-utökning" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-värde â€%s†är ogiltigt, behandlas som 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "felaktig â€%sFMTâ€-specifikation â€%sâ€" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "slÃ¥r av â€--lint†pÃ¥ grund av en tilldelning till â€LINTâ€" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referens till icke initierat argument â€%sâ€" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referens till icke initierad variabel â€%sâ€" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "försök att fältreferera frÃ¥n ickenumeriskt värde" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "försök till fältreferens frÃ¥n en tom sträng" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "försök att komma Ã¥t fält nummer %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referens till icke initierat fält â€$%ldâ€" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen â€%s†anropad med fler argument än vad som deklarerats" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: oväntad typ â€%sâ€" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "försökte dividera med noll i â€/=â€" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "försökte dividera med noll i â€%%=â€" @@ -2054,78 +2064,78 @@ msgid "dynamic loading of libraries is not supported" msgstr "dynamisk laddning av bibliotek stödjs inte" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: kan inte läsa den symboliska länken â€%sâ€" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" msgstr "stat: första argumentet är inte en sträng" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" msgstr "stat: andra argumentet är inte en vektor" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: felaktiga parametrar" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: kunde inte skapa variabeln %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts stödjs inte pÃ¥ detta system" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: kunde inte skapa en vektor, slut pÃ¥ minne" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: kunde inte sätta ett element" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: kunde inte sätta ett element" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: kunde inte sätta ett element" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: kunde inte skapa en vektor" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: kunde inte sätta ett element" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: anropad med felaktigt antal argument, förväntade 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" msgstr "fts: första argumentet är inte en vektor" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" msgstr "fts: andra argumentet är inte ett tal" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" msgstr "fts: tredje argumentet är inte en vektor" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: kunde inte platta till en vektor\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignorerar lömsk FTS_NOSTAT-flagga, nä, nä, nä." @@ -2262,7 +2272,7 @@ msgid "chr: first argument is not a number" msgstr "chr: första argumentet är inte ett tal" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir misslyckades: %s" @@ -2349,183 +2359,188 @@ msgid "sleep: not supported on this platform" msgstr "sleep: stödjs inte pÃ¥ denna plattform" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "indataposten är för stor" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF satt till ett negativt värde" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "dekrementering av NF är inte portabelt till mÃ¥nga awk-versioner" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "att komma Ã¥t fält frÃ¥n en END-regel är inte med säkerhet portabelt" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split: fjärde argumentet är en gawk-utökning" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split: fjärde argumentet är inte en vektor" -#: field.c:992 +#: field.c:992 field.c:1089 +#, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "%s: det gÃ¥r inte att använda %s som fjärde argument" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: andra argumentet är inte en vektor" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: det gÃ¥r inte att använda samma vektor som andra och fjärde argument" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: det gÃ¥r inte att använda en delvektor av andra argumentet som fjärde " "argument" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: det gÃ¥r inte att använda en delvektor av fjärde argumentet som andra " "argument" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "split: tom sträng som tredje argument är en icke-standard-utökning" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: fjärde argumentet är inte en vektor" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: andra argumentet är inte en vektor" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: tredje argumentet fÃ¥r inte vara tomt" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: det gÃ¥r inte att använda samma vektor som andra och fjärde argument" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: det gÃ¥r inte att använda en delvektor av andra argumentet som " "fjärde argument" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: det gÃ¥r inte att använda en delvektor av fjärde argumentet som " "andra argument" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "â€FIELDWIDTHS†är en gawk-utökning" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "â€*†mÃ¥ste vara den sista beteckningen i FIELDWIDTHS" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" -msgstr "ogiltigt FIELDWITHS-värde, för fält %d, i närheten av â€%sâ€" +msgstr "ogiltigt FIELDWIDTHS-värde, för fält %d, i närheten av â€%sâ€" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "tom sträng som â€FS†är en gawk-utökning" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "gamla awk stöder inte reguljära uttryck som värden pÃ¥ â€FSâ€" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "â€FPAT†är en gawk-utökning" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: mottog null-returvärde" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: inte i MPFR-läge" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: MPFR stödjs inte" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: felaktig numerisk typ â€%dâ€" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func: mottog NULL-name_space-parameter" -#: gawkapi.c:523 +#: gawkapi.c:515 #, c-format msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" "node_to_awk_value: upptäckte felaktig kombination av numeriska flaggor â€%sâ€, " -"vänligen skicka en felrapport." +"vänligen skicka en felrapport" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: mottog null-nod" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: mottog null-värde" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 #, c-format msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value upptäckte felaktig kombination av numeriska flaggor â€%sâ€, " -"vänligen skicka en felrapport." +"vänligen skicka en felrapport" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: fick en null-vektor" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: mottog null-index" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed: kunde inte konvertera index %d till %s" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: kunde inte konvertera värdet %d till %s" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: MPFR stödjs inte" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" -msgstr "kan inte hitta sluten pÃ¥ BEGINFILE-regeln" +msgstr "kan inte hitta slutet pÃ¥ BEGINFILE-regeln" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "kan inte öppna okänd filtyp â€%s†för â€%sâ€" @@ -2535,31 +2550,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "kommandoradsargumentet â€%s†är en katalog: hoppas över" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, c-format msgid "cannot open file `%s' for reading: %s" msgstr "kan inte öppna filen â€%s†för läsning: %s" -#: io.c:675 +#: io.c:672 #, c-format msgid "close of fd %d (`%s') failed: %s" -msgstr "stängning av fd %d (â€%sâ€) misslyckades: %s" +msgstr "stängning av fb %d (â€%sâ€) misslyckades: %s" + +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "â€%.*s†använd som indatafil och som utdatafil" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "â€%.*s†använd som indatafil och indatarör" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "â€%.*s†använd som indatafil och tvÃ¥vägsrör" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "â€%.*s†använd som indatafil och utdatarör" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "onödig blandning av â€>†och â€>>†för filen â€%.*sâ€" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "â€%.*s†använd som indatarör och utdatafil" -#: io.c:753 +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "â€%.*s†använd som utdatafil och utdatarör" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "â€%.*s†använd som utdatafil och tvÃ¥vägsrör" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "â€%.*s†använd som indatarör och utdatarör" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "â€%.*s†använd som indatarör och tvÃ¥vägsrör" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "â€%.*s†använd som utdatarör och tvÃ¥vägsrör" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering är inte tillÃ¥ten i sandlÃ¥deläge" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "uttrycket i â€%sâ€-omdirigering är ett tal" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "uttrycket för â€%sâ€-omdirigering har en tom sträng som värde" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2567,273 +2637,273 @@ "filnamnet â€%.*s†för â€%sâ€-omdirigering kan vara resultatet av ett logiskt " "uttryck" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "onödig blandning av â€>†och â€>>†för filen â€%.*sâ€" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file kan inte skapa röret â€%s†med fb %d" -#: io.c:911 +#: io.c:968 #, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "kan inte öppna röret â€%s†för utmatning: %s" -#: io.c:926 +#: io.c:983 #, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "kan inte öppna röret â€%s†för inmatning: %s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "" -"att get_file skapar ett uttag stödjs inte pÃ¥ denna plattform för â€%s†med fd " +"att get_file skapar ett uttag stödjs inte pÃ¥ denna plattform för â€%s†med fb " "%d" -#: io.c:961 +#: io.c:1018 #, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "kan inte öppna tvÃ¥vägsröret â€%s†för in-/utmatning: %s" -#: io.c:1048 +#: io.c:1105 #, c-format msgid "cannot redirect from `%s': %s" msgstr "kan inte dirigera om frÃ¥n â€%sâ€: %s" -#: io.c:1051 +#: io.c:1108 #, c-format msgid "cannot redirect to `%s': %s" msgstr "kan inte dirigera om till â€%sâ€: %s" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -"nÃ¥dde systembegränsningen för öppna filer: börjar multiplexa fildeskriptorer" +"nÃ¥dde systembegränsningen för öppna filer: börjar multiplexa filbeskrivare" -#: io.c:1169 +#: io.c:1226 #, c-format -msgid "close of `%s' failed: %s." -msgstr "stängning av â€%s†misslyckades: %s." +msgid "close of `%s' failed: %s" +msgstr "att stänga â€%s†misslyckades: %s" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "för mÃ¥nga rör eller indatafiler öppna" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: andra argumentet mÃ¥ste vara â€to†eller â€fromâ€" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: â€%.*s†är inte en öppen fil, rör eller koprocess" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "stängning av omdirigering som aldrig öppnades" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omdirigeringen â€%s†öppnades inte med â€|&â€, andra argumentet ignorerat" -#: io.c:1342 +#: io.c:1399 #, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "felstatus (%d) frÃ¥n rörstängning av â€%sâ€: %s" -#: io.c:1345 +#: io.c:1402 +#, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "felstatus (%d) när tvÃ¥vägsrör stängdes av â€%sâ€: %s" + +#: io.c:1405 #, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "felstatus (%d) frÃ¥n filstängning av â€%sâ€: %s" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ingen explicit stängning av uttaget â€%s†tillhandahÃ¥llen" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ingen explicit stängning av koprocessen â€%s†tillhandahÃ¥llen" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ingen explicit stängning av röret â€%s†tillhandahÃ¥llen" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ingen explicit stängning av filen â€%s†tillhandahÃ¥llen" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: kan inte spola standard ut: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: kan inte spola standard fel: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, c-format msgid "error writing standard output: %s" msgstr "fel vid skrivning till standard ut: %s" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, c-format msgid "error writing standard error: %s" msgstr "fel vid skrivning till standard fel: %s" -#: io.c:1457 +#: io.c:1517 #, c-format -msgid "pipe flush of `%s' failed: %s." -msgstr "rörspolning av â€%s†misslyckades: %s." +msgid "pipe flush of `%s' failed: %s" +msgstr "rörspolning av â€%s†misslyckades: %s" -#: io.c:1460 +#: io.c:1520 #, c-format -msgid "co-process flush of pipe to `%s' failed: %s." -msgstr "koprocesspolning av röret till â€%s†misslyckades: %s." +msgid "co-process flush of pipe to `%s' failed: %s" +msgstr "koprocesspolning av röret till â€%s†misslyckades: %s" -#: io.c:1463 +#: io.c:1523 #, c-format -msgid "file flush of `%s' failed: %s." -msgstr "filspolning av â€%s†misslyckades: %s." +msgid "file flush of `%s' failed: %s" +msgstr "filspolning av â€%s†misslyckades: %s" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "lokal port %s ogiltig i â€/inet“: %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s ogiltig i â€/inetâ€" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "ogiltig information (%s, %s) för fjärrvärd och fjärrport: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "ogiltig information (%s, %s) för fjärrvärd och fjärrport" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation stöds inte" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunde inte öppna â€%sâ€, läge â€%sâ€" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, c-format msgid "close of master pty failed: %s" msgstr "stängning av huvudpty misslyckades: %s" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, c-format msgid "close of stdout in child failed: %s" msgstr "stängning av standard ut i barnet misslyckades: %s" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "flyttandet av slavpty till standard ut i barnet misslyckades (dup: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, c-format msgid "close of stdin in child failed: %s" msgstr "stängning av standard in i barnet misslyckades: %s" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "flyttandet av slavpty till standard in i barnet misslyckades (dup: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, c-format msgid "close of slave pty failed: %s" msgstr "stängning av slavpty misslyckades: %s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "kan inte skapa barnprocess eller öppna en pty" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "flyttande av rör till standard ut i barnet misslyckades (dup: %s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "flyttande av rör till standard in i barnet misslyckades (dup: %s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "Ã¥terställande av standard ut i föräldraprocessen misslyckades" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "Ã¥terställande av standard in i föräldraprocessen misslyckades" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, c-format msgid "close of pipe failed: %s" msgstr "stängning av röret misslyckades: %s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "â€|&†stöds inte" -#: io.c:2618 +#: io.c:2678 #, c-format msgid "cannot open pipe `%s': %s" msgstr "kan inte öppna röret â€%sâ€: %s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan inte skapa barnprocess för â€%s†(fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "getline: försök att läsa frÃ¥n stängd läsände av ett tvÃ¥vägsrör" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: mottog NULL-pekare" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "inmatningstolken â€%s†stÃ¥r i konflikt med tidigare installerad " "inmatningstolk â€%sâ€" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "inmatningstolken â€%s†misslyckades att öppna â€%sâ€" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: mottog NULL-pekare" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2841,16 +2911,16 @@ "utmatningsomslag â€%s†stÃ¥r i konflikt med tidigare installerat " "utmatningsomslag â€%sâ€" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "utmatningsomslag â€%s†misslyckades att öppna â€%sâ€" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: mottog NULL-pekare" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2859,213 +2929,217 @@ "tvÃ¥vägsprocessorn â€%s†stÃ¥r i konflikt med tidigare installerad " "tvÃ¥vägsprocessor â€%sâ€" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "tvÃ¥vägsprocessorn â€%s†misslyckades att öppna â€%sâ€" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "datafilen â€%s†är tom" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "kunde inte allokera mer indataminne" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "flerteckensvärdet av â€RS†är en gawk-utökning" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation stöds inte" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "miljövariabeln â€POSIXLY_CORRECT†satt: slÃ¥r pÃ¥ â€--posixâ€" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "â€--posix†åsidosätter â€--traditionalâ€" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "â€--posixâ€/â€--traditional†åsidosätter â€--non-decimal-dataâ€" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" -msgstr "â€--posix†åsidosätter â€--character-as-bytesâ€" +msgstr "â€--posix†åsidosätter â€--characters-as-bytesâ€" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "att köra %s setuid root kan vara ett säkerhetsproblem" -#: main.c:421 +#: main.c:424 #, c-format msgid "cannot set binary mode on stdin: %s" msgstr "kan inte sätta binärläge pÃ¥ standard in: %s" -#: main.c:424 +#: main.c:427 #, c-format msgid "cannot set binary mode on stdout: %s" msgstr "kan inte sätta binärläge pÃ¥ standard ut: %s" -#: main.c:426 +#: main.c:429 #, c-format msgid "cannot set binary mode on stderr: %s" msgstr "kan inte sätta binärläge pÃ¥ standard fel: %s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "ingen programtext alls!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Användning: %s [POSIX- eller GNU-stilsflaggor] -f progfil [--] fil ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Användning: %s [POSIX- eller GNU-stilsflaggor] %cprogram%c fil ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flaggor:\t\tGNU lÃ¥nga flaggor: (standard)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=värde\t\t--assign=var=värde\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Korta flaggor:\t\tGNU lÃ¥nga flaggor: (utökningar)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t\t--dump-variables[=fil]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fil]\t\t\t--debug[=fil]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtext'\t--source='programtext'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i inkluderingsfil\t--include=inkluderingsfil\n" -#: main.c:604 +#: main.c:607 +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-I\t\t\t--trace\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliotek\t\t--load=bibliotek\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fil]\t\t\t--pretty-print[=fil]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t\t--profile[=fil]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z lokalnamn\t\t--locale=lokalnamn\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3087,7 +3161,7 @@ "Rapportera synpunkter pÃ¥ översättningen till .\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3097,7 +3171,7 @@ "Normalt läser det frÃ¥n standard in och skriver till standard ut.\n" "\n" -#: main.c:647 +#: main.c:651 #, c-format msgid "" "Examples:\n" @@ -3108,7 +3182,7 @@ "\t%s '{ sum += $1 }; END { print sum }' fil\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3127,7 +3201,7 @@ "nÃ¥gon senare version.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3141,7 +3215,7 @@ "General Public License för ytterligare information.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3149,171 +3223,178 @@ "Du bör ha fÃ¥tt en kopia av GNU General Public License tillsammans\n" "med detta program. Om inte, se http://www.gnu.org/licenses/.\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft sätter inte FS till tab i POSIX-awk" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" -msgstr "%s: Argumentet â€%s†till â€-v†är inte pÃ¥ formatet â€var=värdeâ€\n" +msgstr "" +"%s: Argumentet â€%s†till â€-v†är inte pÃ¥ formatet â€var=värdeâ€\n" +"\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "â€%s†är inte ett giltigt variabelnamn" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "â€%s†är inte ett variabelnamn, letar efter filen â€%s=%sâ€" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "kan inte använda gawks inbyggda â€%s†som ett funktionsnamn" +msgstr "kan inte använda gawks inbyggda â€%s†som ett variabelnamn" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan inte använda funktionen â€%s†som variabelnamn" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "flyttalsundantag" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "ödesdigert fel: internt fel" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "ödesdigert fel: internt fel: segmenteringsfel" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "ödesdigert fel: internt fel: stackspill" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" -msgstr "ingen föröppnad fd %d" +msgstr "ingen föröppnad fb %d" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" -msgstr "kunde inte föröppna /dev/null för fd %d" +msgstr "kunde inte föröppna /dev/null för fb %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "tomt argument till â€-e/--source†ignorerat" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "â€--profile†åsidosätter â€--pretty-printâ€" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignoreras: MPFR/GMP-stöd är inte inkompilerat" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: flaggan â€-W %s†okänd, ignorerad\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaggan kräver ett argument -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-värdet â€%.*s†är ogiltigt" -#: mpfr.c:610 +#: mpfr.c:664 #, c-format -msgid "RNDMODE value `%.*s' is invalid" -msgstr "RNDMODE-värdet â€%.*s†är ogiltigt" +msgid "ROUNDMODE value `%.*s' is invalid" +msgstr "ROUNDMODE-värdet â€%.*s†är ogiltigt" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: fick ett ickenumeriskt första argument" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: fick ett ickenumeriskt andra argument" -#: mpfr.c:774 +#: mpfr.c:767 +#, c-format +msgid "%s: received negative argument %.*s" +msgstr "%s: fick ett negativt argument %.*s" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: fick ett ickenumeriskt argument" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: fick ett ickenumeriskt argument" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): negativt värde är inte tillÃ¥tet" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): flyttalsvärden kommer huggas av" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): negativa värden är inte tillÃ¥tna" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: fick ett ickenumeriskt argument nr. %d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument nr. %d har ogiltigt värde %Rg, använder 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: argument nr. %d:s negativa värde %Rg är inte tillÃ¥tet" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argument nr. %d flyttalsvärde %Rg kommer huggas av" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: argument nr. %d:s negativa värde %Zd är inte tillÃ¥tet" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: anropad med mindre än tvÃ¥ argument" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: anropad med färre än tvÃ¥ argument" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: anropad med färre än tvÃ¥ argument" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: fick ett ickenumeriskt argument" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: fick ett ickenumeriskt första argument" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: fick ett ickenumeriskt andra argument" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "kommandorad:" @@ -3322,20 +3403,20 @@ msgid "could not make typed regex" msgstr "kunde inte göra ett typat reguljärt uttryck" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "gamla awk stöder inte kontrollsekvensen â€\\%câ€" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tillÃ¥ter inte â€\\xâ€-kontrollsekvenser" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "inga hexadecimala siffror i â€\\xâ€-kontrollsekvenser" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3344,18 +3425,18 @@ "hexkod \\x%.*s med %d tecken tolkas förmodligen inte pÃ¥ det sätt du " "förväntar dig" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrollsekvensen â€\\%c†behandlad som bara â€%câ€" -#: node.c:784 +#: node.c:783 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Ogiltig multibytedata upptäckt. Dina data och din lokal stämmer kanske inte " -"överens." +"överens" #: posix/gawkmisc.c:177 #, c-format @@ -3369,7 +3450,7 @@ #: profile.c:73 msgid "Program indentation level too deep. Consider refactoring your code" -msgstr "ProgramindenteringsnivÃ¥n är för djup. Överväg att refkatorera din kod" +msgstr "ProgramindenteringsnivÃ¥n är för djup. Överväg att refaktorera din kod" #: profile.c:112 msgid "sending profile to standard error" @@ -3398,11 +3479,11 @@ msgid "internal error: %s with null vname" msgstr "internt fel: %s med null vname" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "internt fel: inbyggd med tomt fname" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3411,7 +3492,7 @@ "%s# Inlästa utvidgningar (-l och/eller @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3422,12 +3503,12 @@ "# Inkluderade filer (-i och/eller @include)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawkprofil, skapad %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3436,7 +3517,7 @@ "\n" "\t# Funktioner, listade alfabetiskt\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: okänd omdirigeringstyp %d" @@ -3470,39 +3551,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "komponenten â€%.*s†i reguljäruttryck skall förmodligen vara â€[%.*s]â€" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "obalanserad [" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "ogiltig teckenklass" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntaxen för teckenklass är [[:space:]], inte [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "oavslutad \\-följd" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "ogiltigt innehÃ¥ll i \\{\\}" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "reguljärt uttryck för stort" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "obalanserad (" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "ingen syntax angiven" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "obalanserad )" @@ -3634,12 +3715,12 @@ msgid "No previous regular expression" msgstr "Inget föregÃ¥ende reguljärt uttryck" -#: symbol.c:691 +#: symbol.c:698 #, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "" "funktionen â€%sâ€: kan inte använda funktionen â€%s†som ett parameternamn" -#: symbol.c:821 +#: symbol.c:828 msgid "cannot pop main context" msgstr "kan inte poppa huvudsammanhang" diff -urN gawk-5.1.0/po/vi.po gawk-5.1.1/po/vi.po --- gawk-5.1.0/po/vi.po 2020-04-14 14:48:03.000000000 +0300 +++ gawk-5.1.1/po/vi.po 2021-10-27 07:58:42.000000000 +0300 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gawk 4.2.0e\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" "PO-Revision-Date: 2018-01-30 08:07+0700\n" "Last-Translator: Trần Ngá»c Quân \n" "Language-Team: Vietnamese \n" @@ -21,513 +21,528 @@ "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 2.91.7\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "từ %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "cố dùng giá trị vô hướng như là má»™t mảng" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "cố dùng tham số vô hướng “%s†như là mảng" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "cố dùng “%s†vô hướng như là mảng" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "cố gắng dùng mảng “%s†trong má»™t ngữ cảnh vô hướng" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete: (xóa) chỉ số “%.*s†không nằm trong mảng “%sâ€" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "cố dùng “%s[\"%.*s\"]†vô hướng như là mảng" -#: array.c:783 array.c:831 +#: array.c:784 array.c:834 #, fuzzy, c-format msgid "%s: first argument is not an array" msgstr "asort: đối số thứ nhất không phải là má»™t mảng" -#: array.c:824 +#: array.c:826 #, fuzzy, c-format msgid "%s: second argument is not an array" msgstr "split: (chia tách) đối số thứ hai không phải là mảng" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" +msgid "%s: cannot use %s as second argument" +msgstr "" +"asort (má»™t chương trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con cá»§a tham " +"số thứ nhất cho tham số thứ hai" + +#: array.c:837 +#, fuzzy, c-format +msgid "%s: first argument cannot be SYMTAB without a second argument" msgstr "asort: đối số thứ nhất không phải là má»™t mảng" -#: array.c:838 +#: array.c:839 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" msgstr "asort: đối số thứ nhất không phải là má»™t mảng" -#: array.c:844 +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 #, fuzzy, c-format msgid "%s: cannot use a subarray of first argument for second argument" msgstr "" "asort (má»™t chương trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con cá»§a tham " "số thứ nhất cho tham số thứ hai" -#: array.c:849 +#: array.c:856 #, fuzzy, c-format msgid "%s: cannot use a subarray of second argument for first argument" msgstr "" "asort (má»™t chương trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con cá»§a tham " "số thứ hai cho tham số thứ nhất" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "“%s†không phải là tên hàm hợp lệ" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "chưa định nghÄ©a hàm so sánh xắp xếp “%sâ€" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "Má»i khối %s phải có má»™t phần kiểu hành động" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "Má»i quy tắc phải có má»™t mẫu hay phần kiểu hành động" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" "awk cÅ© không há»— trợ nhiá»u quy tắc kiểu “BEGIN†(bắt đầu) hay “END†(kết thúc)" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "“%s†là má»™t hàm có sẵn nên nó không thể được định nghÄ©a lại." -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "hằng biểu thức chính quy “//†trông giống như má»™t chú thích C++, nhưng mà " "không phải" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "hằng biểu thức chính quy “/%s/†trông giống như má»™t chú thích C, nhưng mà " "không phải" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "gặp giá trị case bị trùng trong phần thân switch: %s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "" "đã phát hiện trùng “default†trong thân cấu trúc Ä‘iá»u khiển chá»n lá»±a (switch)" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "" "không cho phép “break†(ngắt) nằm ở ngoại vòng lặp hay cấu trúc chá»n lá»±a" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "không cho phép “continue†(tiếp tục) ở ngoài má»™t vòng lặp" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "“next†(kế tiếp) được dùng trong hành động %s" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "“nextfile†(tập tin kế tiếp) được dùng trong hành động %s" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "“return†(trở vá») được dùng ở ngoại ngữ cảnh hàm" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "“print†(in) thưá»ng trong quy tắc “BEGIN†(bắt đầu) hay “END†(kết thúc) gần " "như chắc chắn nên là “printâ€â€â€" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "“delete†không được phép vá»›i SYMTAB" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "“delete†không được phép vá»›i FUNCTAB" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "“delete array†(xóa mảng) là phần mở rá»™ng gawk không khả chuyển" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "đưá»ng ống dẫn hai chiếu Ä‘a giai Ä‘oạn không phải hoạt động được" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "biểu thức chính quy nằm bên phải phép gán" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "biểu thức chính quy nằm bên trái toán tá»­ “~†hay “!~â€" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "awk cÅ© không há»— trợ từ khóa “inâ€, trừ khi nằm sau “forâ€" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "biểu thức chính quy nằm bên phải sá»± so sánh" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "“getline†không-chuyển-hướng không hợp lệ trong quy tắc “%sâ€" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "" "trong hành động “END†(kết thúc) có “getline†(lấy dòng) không được chuyển " "hướng lại và chưa được định nghÄ©a." -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "awk cÅ© không há»— trợ mảng Ä‘a chiá»u" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "" "lá»i gá»i “length†(độ dài) mà không có dấu ngoặc đơn là không tương thích " "trên các hệ thống khác" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "cuá»™c gá»i hàm gián tiếp là má»™t phần mở rá»™ng gawk" -#: awkgram.y:2010 +#: awkgram.y:2017 #, fuzzy, c-format msgid "cannot use special variable `%s' for indirect function call" msgstr "không thể dùng biến đặc biệt “%s†cho cú gá»i hàm gián tiếp" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "cố gắng dùng không-phải-hàm “%s†trong cú gá»i hàm" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "biểu thức in thấp không hợp lệ" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "cảnh báo: " -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "lá»—i nghiêm trá»ng: " -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "gặp dòng má»›i hay kết thúc chuá»—i bất ngá»" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 #, fuzzy, c-format msgid "cannot open source file `%s' for reading: %s" msgstr "không thể mở tập tin nguồn “%s†để Ä‘á»c (%s)" -#: awkgram.y:2856 awkgram.y:2993 +#: awkgram.y:2863 awkgram.y:3000 #, fuzzy, c-format msgid "cannot open shared library `%s' for reading: %s" msgstr "không thể mở tập thư viện chia sẻ “%s†để Ä‘á»c (%s)" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "không rõ lý do" -#: awkgram.y:2867 awkgram.y:2891 +#: awkgram.y:2874 awkgram.y:2898 #, fuzzy, c-format msgid "cannot include `%s' and use it as a program file" msgstr "không thể bao gồm “%s†và dùng nó như là tập tin chương trình" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "đã sẵn bao gồm tập tin nguồn “%sâ€" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "thư viện dùng chung “%s†đã được sẵn được tải rồi" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include là phần mở rá»™ng cá»§a gawk" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "tập tin trống sau @include" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load là má»™t phần mở rá»™ng gawk" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "tên tập tin trống sau @load" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "gặp Ä‘oạn chữ chương trình rá»—ng nằm trên dòng lệnh" -#: awkgram.y:3239 debug.c:461 debug.c:619 +#: awkgram.y:3246 debug.c:470 debug.c:628 #, fuzzy, c-format msgid "cannot read source file `%s': %s" msgstr "không thể Ä‘á»c tập tin nguồn “%s†(%s)" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "tập tin nguồn “%s†là rá»—ng" -#: awkgram.y:3310 +#: awkgram.y:3317 #, fuzzy, c-format msgid "error: invalid character '\\%03o' in source code" msgstr "Lá»—i PEBKAC: gặp ký tá»± không hợp lệ “\\%03o†trong mã nguồn" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "tập tin nguồn không kết thúc bằng má»™t dòng trống" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "biểu thức chính quy chưa được chấm dứt kết thúc vá»›i “\\†tại kết thúc cá»§a " "tập tin" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: bá»™ sá»­a đổi biểu thức chính quy tawk “/…/%c†không hoạt động được " "trong gawk" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "bá»™ sá»­a đổi biểu thức chính quy tawk “/…/%c†không hoạt động được trong gawk" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "biểu thức chính quy chưa được chấm dứt" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "biểu thức chính quy chưa được chấm dứt nằm tại kết thúc cá»§a tập tin" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "không thể mang khả năng dùng “\\#…†để tiếp tục dòng" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "dấu gạch ngược không phải là ký tá»± cuối cùng nằm trên dòng" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "mảng nhiá»u chiá»u là má»™t phần mở rá»™ng gawk" -#: awkgram.y:3891 awkgram.y:3902 +#: awkgram.y:3898 awkgram.y:3909 #, fuzzy, c-format msgid "POSIX does not allow operator `%s'" msgstr "POSIX không cho phép toán tá»­ “**â€" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 #, fuzzy, c-format msgid "operator `%s' is not supported in old awk" msgstr "awk cÅ© không há»— trợ toán tá»­ “^â€" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "chuá»—i không được chấm dứt" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 #, fuzzy msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX không cho phép thoát chuá»—i “\\xâ€" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 #, fuzzy msgid "backslash string continuation is not portable" msgstr "không thể mang khả năng dùng “\\#…†để tiếp tục dòng" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "có ký tá»± không hợp lệ “%c†nằm trong biểu thức" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "“%s†là má»™t phần mở rá»™ng gawk" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX không cho phép “%sâ€" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" msgstr "awk kiểu cÅ© không há»— trợ “%sâ€" -#: awkgram.y:4500 +#: awkgram.y:4507 #, fuzzy msgid "`goto' considered harmful!" msgstr "“goto†được xem là có hại!\n" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "“%d†không hợp lệ khi là số đối số cho “%sâ€" -#: awkgram.y:4604 +#: awkgram.y:4611 #, fuzzy, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "" "%s: khi đối số cuối cùng cá»§a sá»± thay thế, hằng mã nguồn chuá»—i không có tác " "dụng" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "tham số thứ ba %s không phải là má»™t đối tượng có thể thay đổi" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "match: (khá»›p) đối số thứ ba là phần mở rá»™ng gawk" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "close: (đóng) đối số thứ hai là phần mở rá»™ng gawk" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dùng “dcgettext(_\"…\")†không đúng: hãy gỡ bá» gạch dưới nằm trước" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dùng “dcgettext(_\"…\")†không đúng: hãy gỡ bá» gạch dưới nằm trước" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index: (chỉ mục) không cho phép hằng biểu thức chính quy làm đối số thứ hai" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "hàm “%sâ€: tham số “%s†che biến toàn cục" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "không thể mở “%s†để ghi: %s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "Ä‘ang gởi danh sách biến tá»›i thiết bị lá»—i chuẩn" -#: awkgram.y:4930 +#: awkgram.y:4937 #, fuzzy, c-format msgid "%s: close failed: %s" msgstr "%s: gặp lá»—i khi đóng (%s)" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() (hàm bóng) được gá»i hai lần!" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "có biến bị bóng." -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "tên hàm “%s†trước đây đã được định nghÄ©a rồi" -#: awkgram.y:5091 +#: awkgram.y:5098 #, fuzzy, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "hàm “%sâ€: không thể dùng tên hàm như là tên tham số" -#: awkgram.y:5094 +#: awkgram.y:5101 #, fuzzy, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "hàm “%sâ€: không thể dùng biến đặc biệt “%s†như là tham số hàm" -#: awkgram.y:5098 +#: awkgram.y:5105 #, fuzzy, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "hàm “%sâ€: tham số “%s†che biến toàn cục" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "hàm “%sâ€: tham số “#%dâ€, “%sâ€, nhân đôi tham số “#%dâ€" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "hàm “%s†được gá»i nhưng mà chưa định nghÄ©a" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "hàm “%s†được định nghÄ©a nhưng mà chưa được gá»i trá»±c tiếp bao giá»" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "hằng biểu thức chính quy cho tham số “#%d†làm giá trị luận lý (bun)" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -536,64 +551,68 @@ "hàm “%s†được gá»i vá»›i dấu cách nằm giữa tên và “(â€\n" "hoặc được dùng như là biến hay mảng" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "gặp phép chia cho số không" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "gặp phép chia cho số không trong “%%â€" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "không thể gán giá trị cho kết quả cá»§a biểu thức trưá»ng tăng-trước" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "gán Ä‘ich không hợp lệ (mã thi hành “%sâ€)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "câu không có tác dụng" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "" -#: awkgram.y:6799 +#: awkgram.y:6830 #, fuzzy msgid "@namespace is a gawk extension" msgstr "@include là phần mở rá»™ng cá»§a gawk" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "" @@ -611,8 +630,8 @@ msgid "standard error" msgstr "lá»—i tiêu chuẩn" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: đã nhận đối số không phải thuá»™c số" @@ -654,7 +673,7 @@ msgstr "" "fflush: “%.*s†không phải là má»™t tập tin, ống dẫn hay đồng tiến trình được mở" -#: builtin.c:378 builtin.c:2034 +#: builtin.c:378 builtin.c:2023 #, fuzzy, c-format msgid "%s: received non-string first argument" msgstr "index: (chỉ số) đã nhận đối số thứ nhất không phải là chuá»—i" @@ -672,188 +691,176 @@ msgid "`length(array)' is a gawk extension" msgstr "“length(array)†(độ dài mảng) là má»™t phần mở rá»™ng gawk" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 #, fuzzy, c-format msgid "%s: received non-string argument" msgstr "system: (hệ thống) đã nhận đối số khác chuá»—i" -#: builtin.c:586 builtin.c:1801 +#: builtin.c:586 builtin.c:1790 #, fuzzy, c-format msgid "%s: received negative argument %g" msgstr "log: (nhật ký) đã nhận đối số âm “%gâ€" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "lá»—i nghiêm trá»ng: phải dùng “count$†vá»›i má»i dạng thức hay không gì cả" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "chiá»u rá»™ng trưá»ng bị bá» qua đối vá»›i bá»™ chỉ định “%%â€" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "độ chính xác bị bá» qua đối vá»›i bá»™ chỉ định “%%â€" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "chiá»u rá»™ng trưá»ng và độ chính xác bị bá» qua đối vá»›i bá»™ chỉ định “%%â€" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "lá»—i nghiêm trá»ng: không cho phép “$†trong định dạng awk" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy msgid "fatal: argument index with `$' must be > 0" msgstr "lá»—i nghiêm trá»ng: số lượng đối số vá»›i “$†phải >0" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "" "lá»—i nghiêm trá»ng: số lượng đối số %ld lá»›n hÆ¡n tổng số đối số được cung cấp" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "lá»—i nghiêm trá»ng: không cho phép “$†nằm sau dấu chấm trong định dạng" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "lá»—i nghiêm trá»ng: chưa cung cấp “$†cho độ rá»™ng trưá»ng thuá»™c vị trí hay cho " "độ chính xác" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "chữ “l†không có nghÄ©a trong định dạng awk nên bị bá» qua" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “l†nằm trong định dạng awk POSIX" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "chữ “L†không có nghÄ©a trong định dạng awk nên bị bá» qua" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “L†nằm trong định dạng awk POSIX" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "chữ “h†không có nghÄ©a trong định dạng awk nên bị bá» qua" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “h†nằm trong định dạng awk POSIX" - -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: giá trị %g quá lá»›n cho định dạng “%%câ€" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: giá trị %g phải là má»™t ký tá»± rá»™ng hợp lệ" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: giá trị %g ở ngoại phạm vi cho dạng thức “%%%câ€" -#: builtin.c:1505 +#: builtin.c:1483 #, fuzzy, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf: giá trị %g ở ngoại phạm vi cho dạng thức “%%%câ€" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "Ä‘ang bá» qua ký tá»± ghi rõ định dạng không rõ “%câ€: không có đối số được " "chuyển đổi" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "lá»—i nghiêm trá»ng: chưa có đủ đối số để đáp ứng chuá»—i định dạng" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "bị hết “^†cho cái này" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: chỉ định định dạng không có ký hiệu Ä‘iá»u khiển" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "quá nhiá»u đối số được cung cấp cho chuá»—i định dạng" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintf: không có đối số" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printf: không có đối số" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "printf: cố ghi vào má»™t đưá»ng ống hai chiá»u mà chiá»u ghi đã đóng" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: (chuá»—i con) độ dài %g không ≥1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: (chuá»—i con) độ dài %g không ≥0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: (chuá»—i con) sẽ cắt xén độ dài không phải số nguyên “%gâ€" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: (chuá»—i con) độ dài %g là quá lá»›n cho chỉ số chuá»—i, nên xén ngắn " "thành %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: (chuá»—i con) chỉ số đầu “%g†không hợp lệ nên dùng 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" "substr: (chuá»—i con) chỉ số đầu không phải số nguyên “%g†sẽ bị cắt ngắn" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr: (chuá»—i con) chuá»—i nguồn có độ dài số không" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: (chuá»—i con) chỉ số đầu %g nằm sau kết thúc cá»§a chuá»—i" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -861,157 +868,165 @@ "substr: (chuá»—i con) độ dài %g chỉ số đầu %g vượt quá độ dài cá»§a đối số đầu " "(%lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: giá trị định dạng trong PROCINFO[\"strftime\"] phải thuá»™c kiểu số" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 #, fuzzy, c-format msgid "%s: received non-numeric second argument" msgstr "or: (hoặc) đã nhận đối số thứ hai khác thuá»™c số" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: tham số thứ hai nhá» hÆ¡n 0 hay quá lá»›n dành cho time_t" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftime: tham số thứ hai nằm ngoài phạm vi cho phép cá»§a kiểu time_t" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime: đã nhận chuá»—i định dạng rá»—ng" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: ít nhất má»™t cá»§a những giá trị nằm ở ngoại phạm vi mặc định" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "hàm “system†không cho phép ở chế độ khuôn đúc" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "print: cố ghi vào má»™t đưá»ng ống hai chiá»u mà chiá»u ghi đã đóng" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "gặp tham chiếu đến trưá»ng chưa được khởi tạo “$%dâ€" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 #, fuzzy, c-format msgid "%s: received non-numeric first argument" msgstr "or: (hoặc) đã nhận đối số đầu không phải thuá»™c số" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "match: (khá»›p) đối số thứ ba không phải là mảng" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch: không thể lấy tham số thứ ba" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: đối số thứ ba “%.*s†được xá»­ lý như 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: được gá»i má»™t cách gián tiếp vá»›i ít hÆ¡n hai đối số" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "cú gá»i gián tiếp đến %s cần ít nhất hai đối số" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f): giá trị âm l không được phép" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): giá trị thuá»™c phân số sẽ bị cắt ngắn" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): giá trị dịch quá lá»›n sẽ gây ra kết quả không như mong muốn" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f): giá trị âm là không được phép" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): giá trị thuá»™c kiểu phân số sẽ bị xén ngắn" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): giá trị dịch quá lá»›n sẽ gây ra kết quả không như mong muốn" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 #, fuzzy, c-format msgid "%s: called with less than two arguments" msgstr "or: (hoặc) được gá»i vá»›i ít hÆ¡n hai đối số" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 #, fuzzy, c-format msgid "%s: argument %d is non-numeric" msgstr "or: (hoặc) đối số %d không thuá»™c kiểu số" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format msgid "%s: argument %d negative value %g is not allowed" msgstr "%s: đối số #%d giá trị âm %Rg là không được phép" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f): giá trị âm là không được phép" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): giá trị thuá»™c phân số sẽ bị cắt ngắn" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: “%s†không phải là má»™t phân loại miá»n địa phương hợp lệ" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdiv: đối số thứ ba không phải là mảng" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv: gặp phép chia cho số không" -#: builtin.c:4080 +#: builtin.c:4106 #, fuzzy msgid "typeof: second argument is not an array" msgstr "split: (chia tách) đối số thứ hai không phải là mảng" -#: builtin.c:4152 -#, c-format +#: builtin.c:4178 +#, fuzzy, c-format +#| msgid "" +#| "typeof detected invalid flags combination `%s'; please file a bug report." msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "" "typeof dò tìm thấy tổ hợp các cá» không hợp lệ “%sâ€; vui lòng báo cáo lá»—i này." -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeof: tùy chá»n không hợp lệ “%sâ€" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeof: không biết kiểu tham số “%sâ€" @@ -1021,434 +1036,555 @@ msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" msgstr "" -#: command.y:227 +#: command.y:228 #, fuzzy, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "Gõ các câu lệnh (g)awk. Kết thúc bằng lệnh “endâ€\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "số khung không hợp lệ: %d" -#: command.y:297 +#: command.y:298 #, fuzzy, c-format msgid "info: invalid option - `%s'" msgstr "info: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." +msgid "source: `%s': already sourced" msgstr "nguồn “%sâ€: đã sẵn có trong nguồn rồi." -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." +msgid "save: `%s': command not permitted" msgstr "ghi “%sâ€: lệnh không đủ thẩm quyá»n." -#: command.y:341 +#: command.y:342 #, fuzzy msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "Không thể dùng lệnh “commands†cho lệnh breakpoint/watchpoint" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "chưa có Ä‘iểm ngắt hay Ä‘iểm theo dõi nào được đặt cả" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "số Ä‘iểm ngắt hay Ä‘iểm theo dõi không hợp lệ" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Gõ lệnh cho %s khi %d được gợi ý, má»—i lệnh má»™t dòng.\n" -#: command.y:352 +#: command.y:353 #, fuzzy, c-format msgid "End with the command `end'\n" msgstr "Kết thúc vá»›i lệnh “endâ€\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "“end†chỉ hợp lệ trong “commands†hay “evalâ€" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "“silent†chỉ hợp lệ vá»›i lệnh “commandsâ€" -#: command.y:375 +#: command.y:376 #, fuzzy, c-format msgid "trace: invalid option - `%s'" msgstr "trace: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: Ä‘iá»u kiện: số hiệu Ä‘iểm ngắt hay Ä‘iểm theo dõi không hợp lệ" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "tham số không phải là má»™t chuá»—i" -#: command.y:461 command.y:466 +#: command.y:462 command.y:467 #, fuzzy, c-format msgid "option: invalid parameter - `%s'" msgstr "option: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:476 +#: command.y:477 #, fuzzy, c-format msgid "no such function - `%s'" msgstr "không có hàm nào như thế cả - “%sâ€" -#: command.y:533 +#: command.y:534 #, fuzzy, c-format msgid "enable: invalid option - `%s'" msgstr "enable: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "đặc tả vùng không hợp lệ: %d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "giá trị cho trưá»ng số mà không thuá»™c kiểu số" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "cần giá trị kiểu số nhưng lại nhận được giá trị không thuá»™c kiểu này" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "giá trị số nguyên khác không" -#: command.y:819 +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "" "backtrace [N] - in vết cá»§a tất cả hay N khung trong cùng nhất (ngoài cùng " "nhất nếu N < 0)." -#: command.y:821 +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "break [[tên_tập_tin:]N|hàm] - đặt Ä‘iểm ngắt tại vị trí đã cho." -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "" "clear [[tên_tập_tin:]N|function] - xóa các Ä‘iểm ngắt được đặt trước đây." -#: command.y:825 +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "" "commands [số] - chạy má»™t danh sách các câu lệnh được thá»±c thi tại Ä‘iểm ngắt " "(hay Ä‘iểm theo dõi) tìm được." -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "" "condition num [expr] - đặt hay xóa Ä‘iểm ngắt hay Ä‘iá»u kiện Ä‘iểm theo dõi." -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" msgstr "continue [Sá»_LƯỢNG] - tiếp tục chương trình Ä‘ang được gỡ lá»—i." -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "delete [Ä‘iểm_ngắt] [vùng] - xóa các Ä‘iểm ngắt đã chỉ ra." -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "disable [Ä‘iểm_ngắt] [vùng] - tắt các Ä‘iểm ngắt đã chỉ định." -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" msgstr "display [var] - in giá trị cá»§a biến má»—i lần chương trình dừng." -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" msgstr "down [N] - chuyển xuống N khung stack." -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" msgstr "" "dump [tên_tập_tin] - dump các chỉ lệnh ra tập tin hay đầu ra tiêu chuẩn." -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "enable [once|del] [Ä‘iểm_ngắt] [range] - bật các Ä‘iểm ngắt đã chỉ ra." -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" msgstr "end - kết thúc má»™t danh sách các câu lệnh hay biểu thức awk" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "eval stmt|[p1, p2, …] - định giá các câu lệnh awk." -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +#, fuzzy +#| msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" msgstr "exit - (giống vá»›i quit) thoát khá»i gỡ lá»—i." -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" msgstr "finish - thá»±c thi cho đến khi khung stack đã chá»n trả vá»." -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" msgstr "frame [N] - chá»n và in khung stack số hiệu N." -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" msgstr "help [lệnh] - hiển thị danh sách các lệnh hay giải thích câu lệnh." -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "ignore N Sá»-LƯỢNG - đặt số lượng Ä‘iểm ngắt bị bá» qua." -#: command.y:857 +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info chá»§_đỠ- nguồn|nguồn|biến|hàm|break|frame|args|locals|display|watch." -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "list [-|+|[tập_tin:]số_dòng|hàm|vùng] - liệt kê các dòng đã chỉ định." -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "" "next [Sá»_LƯỢNG] - nhảy má»™t chỉ lệnh, nhưng được xá»­ lý thông qua gá»i thá»§ tục " "con." -#: command.y:863 +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "" "nexti [Sá»_LƯỢNG] - nhảy từng chỉ lệnh, nhưng được xá»­ lý thông qua gá»i thá»§ " "tục con." -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "option [tên[=giá trị]] - đặt hay hiển thị tùy chá»n gỡ lá»—i." -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" msgstr "print var [var] - in giá trị cá»§a biến hay mảng." -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" msgstr "printf format, [arg], … - kết xuất có định dạng." -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" msgstr "quit - thoát khá»i chương trình gỡ lá»—i." -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" msgstr "" "return [giá-trị] - làm cho khung stack đã chá»n trả vá» giá trị này cho bá»™ gá»i " "nó." -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" msgstr "run - khởi chạy hay khởi động lại chương trình." -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" msgstr "save tên_tập_tin - ghi các câu lệnh từ phiên làm việc vào tập tin." -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" msgstr "set biến = giá_trị - gán giá trị cho má»™t biến vô hướng." -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "" "silent - chặn các lá»i nhắn thông thưá»ng khi dừng tại Ä‘iểm ngăt hay Ä‘iểm theo " "dõi." -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" msgstr "source file - thá»±c hiện các câu lệnh từ tập tin." -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "" "step [Sá»_LƯỢNG] - chạy từng bước chương trình cho đến khi nó gặp má»™t dòng " "nguồn khác." -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" msgstr "stepi [Sá»_LƯỢNG] - chạy từng lệnh má»™t." -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "tbreak [[tên_tập_tin:]N|hàm] - đặt Ä‘iểm ngắt tạm thá»i." -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" msgstr "trace on|off - hiển thị chỉ lệnh trước khi thá»±c hiện." -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "undisplay [N] - gỡ bá» các biến từ danh sách hiển thị tá»± động." -#: command.y:897 +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "" "until [[tên_tập_tin:]N|hàm] - thá»±c hiện cho đến khi chương trình đạt đến " "dòng khác hay dòng N trong khung hiện tại." -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "unwatch [N] - gỡ bá» các biến từ danh sách theo dõi." -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" msgstr "up [N] - chuyển xuống N khung stack." -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" msgstr "watch var - đặt Ä‘iểm theo dõi cho má»™t biến." -#: command.y:905 +#: command.y:906 +#, fuzzy +#| msgid "" +#| "where [N] - (same as backtrace) print trace of all or N innermost " +#| "(outermost if N < 0) frames." msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] - (giống như backtrace) in vết cá»§a tất cả hay N khung trong cùng " "nhất (ngoài cùng nhất nếu N < 0)." -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "lá»—i: " -#: command.y:1060 +#: command.y:1061 #, fuzzy, c-format msgid "cannot read command: %s\n" msgstr "không thể Ä‘á»c lệnh (%s)\n" -#: command.y:1074 +#: command.y:1075 #, fuzzy, c-format msgid "cannot read command: %s" msgstr "không thể Ä‘á»c lệnh (%s)" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "ký tá»± trong câu lệnh không hợp lệ" -#: command.y:1161 +#: command.y:1162 #, fuzzy, c-format msgid "unknown command - `%.*s', try help" msgstr "không hiểu lệnh - “%.*sâ€, hãy gõ lệnh trợ giúp “helpâ€" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "ký tá»± không hợp lệ" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "lệnh chưa định nghÄ©a: %s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "đặt hay hiển thị số dòng được lưu giữ trong tập tin lịch sá»­." #: debug.c:259 -msgid "set or show the list command window size." +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "đặt hay hiển thị kích thước cá»­a sổ danh sách lệnh." #: debug.c:261 -msgid "set or show gawk output file." +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "đặt hay hiển thị tập tin kết xuất gawk." #: debug.c:263 -msgid "set or show debugger prompt." +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "đặt hay hiển thị dấu nhắc gỡ lá»—i." #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "(bá») đặt hay ghi lại lịch sá»­ lệnh (giá trị=on|off)." #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "đặt/bỠđặt hay hiển thị các tùy chá»n được ghi lại (giá_trị=on|off)." #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "(bá») đặt hay hiển thị việc theo vết chỉ lệnh (giá trị=on|off)." #: debug.c:358 -msgid "program not running." +#, fuzzy +#| msgid "program not running." +msgid "program not running" msgstr "chương trình không chạy." -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "tập tin nguồn “%s†bị trống rá»—ng.\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "không có tập tin nguồn hiện tại." -#: debug.c:518 +#: debug.c:527 #, fuzzy, c-format msgid "cannot find source file named `%s': %s" msgstr "không thể tìm thấy tập tin nguồn có tên “%s†(%s)" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "CẢNH BÃO: tập tin nguồn “%s†bị sá»­a đổi kể từ lúc nó được dịch.\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "số dòng %d nằm ngoài phạm vi; “%s†có %d dòng" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "gặp kết thúc tập tin bất ngá» khi Ä‘ang Ä‘á»c tập tin “%sâ€, dòng %d" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "tập tin nguồn “%s†đã bị sá»­a đổi kể từ lúc chưong trình được khởi chạy" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "Tập tin nguồn hiện tại: %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "Số dòng: %d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Tập tin nguồn (dòng): %s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1456,54 +1592,55 @@ "Số Hthị Bật Vị trí\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\tkhông gợi ý = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tbá» qua %ld gợi ý tiếp\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tdừng Ä‘iá»u kiện: %s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\tlệnh:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "Khung hiện tại:" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "ÄÆ°á»£c gá»i bởi khung:" -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "Bá»™ gá»i cá»§a khung:" -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "Không có gì trong main().\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "Không có đối số nào.\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "Không có ná»™i bá»™.\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1511,7 +1648,7 @@ "Tất cả các biến đã định nghÄ©a:\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1519,7 +1656,7 @@ "Tất cả các hàm đã định nghÄ©a:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1527,7 +1664,7 @@ "Các biến hiển thị tá»± động:\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1535,383 +1672,397 @@ "Các biến theo dõi:\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "không có ký hiệu “%s†trong ngữ cảnh hiện tại\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "“%s†không phải là má»™t mảng\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = trưá»ng chưa được khởi tạo\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "mảng “%s†trống rá»—ng\n" -#: debug.c:1132 debug.c:1184 -#, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +#: debug.c:1141 debug.c:1193 +#, fuzzy, c-format +#| msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[“%.*sâ€] không nằm trong mảng “%sâ€\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "“%s[\"%.*s\"]†không phải là má»™t mảng\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "“%s†không phải là biến scalar" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "cố dùng mảng “%s[\"%.*s\"]†trong má»™t ngữ cảnh vô hướng" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "cố dùng kiểu vô hướng “%s[\"%.*s\"]†như là mảng" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "“%s†là má»™t hàm" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "Ä‘iểm kiểm tra %d là vô Ä‘iá»u kiện\n" -#: debug.c:1514 -#, c-format -msgid "No display item numbered %ld" +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "Không có mục tin hiển thị nào đánh số %ld" -#: debug.c:1517 -#, c-format -msgid "No watch item numbered %ld" +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "Không có mục tin theo dõi nào đánh số %ld" -#: debug.c:1543 -#, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +#: debug.c:1552 +#, fuzzy, c-format +#| msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d: [\"%.*s\"] không trong mảng “%sâ€\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "cố dùng biến vô hướng như là má»™t mảng" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Äiểm theo dõi %d bị xóa bởi vì đối số nằm ngoài phạm vi\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Trình bày %d bị xóa bởi vì đối số nằm ngoài phạm vi\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr " tại tập tin “%sâ€, dòng %d\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr " tại “%sâ€:%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\ttrong " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "Nhiá»u khung ngăn xếp theo sau …\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "số khung không hợp lệ" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Chú ý: Ä‘iểm ngắt %d (được bật, bá» qua %ld gợi ý tiếp), đồng thá»i được đặt " "tại %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Chú ý: Ä‘iểm ngắt %d (được bật), đồng thá»i được đặt tại %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Chú ý: Ä‘iểm ngắt %d (bị tắt, bá» qua %ld gợi ý tiếp), đồng thá»i được đặt tại " "%s:%d" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Chú ý: Ä‘iểm ngắt %d (bị tắt), đồng thá»i được đặt tại %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Äiểm ngắt %d đặt tại tập tin “%sâ€, dòng %d\n" -#: debug.c:2357 +#: debug.c:2366 #, fuzzy, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "Không thể đặt Ä‘iểm ngắt trong tập tin “%sâ€\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "số dòng %d trong tập tin “%s†nằm ngoài phạm vi" -#: debug.c:2390 +#: debug.c:2399 #, fuzzy, c-format msgid "internal error: cannot find rule\n" msgstr "lá»—i ná»™i bá»™: %s vá»›i vname (tên biến?) vô giá trị" -#: debug.c:2392 +#: debug.c:2401 #, fuzzy, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "Không thể đặt Ä‘iểm ngắt tại “%sâ€:%d\n" -#: debug.c:2404 +#: debug.c:2413 #, fuzzy, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "Không thể đặt Ä‘iểm ngắt trong hàm “%sâ€\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "Ä‘iểm ngắt %d đặt tại tập tin “%sâ€, dòng %d là vô Ä‘iá»u kiện\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "số dòng %d trong tập tin “%s†nằm ngoài phạm vi" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "Xóa Ä‘iểm dừng %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "Không có Ä‘iểm ngắt tại Ä‘iểm vào cá»§a hàm “%sâ€\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "Không có Ä‘iểm ngắt tại tập tin “%sâ€, dòng #%d\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "số Ä‘iểm ngắt không hợp lệ" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "Xóa tất cả các Ä‘iểm ngắt? (c hay k) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "c" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Sẽ bá» qua %ld Ä‘iểm giao chéo cá»§a Ä‘iểm ngắt %d.\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Sẽ dừng lần gặp Ä‘iểm ngắt %d tiếp theo.\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "" "Chỉ có thể gỡ lá»—i các chương trình được cung cấp cùng vá»›i tùy chá»n “-fâ€.\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "Gặp lá»—i khi khởi động lại bá»™ gỡ lá»—i" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Chương trình Ä‘ang chạy. Khởi động từ đầu (c/không)?" -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "Chương trình không khởi động lại\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "lá»—i: không thể khởi động lại, thao tác không được cho phép\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "lá»—i (%s): không thể khởi động lại, bá» qua các lệnh còn lại\n" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "Äang khởi động chương trình:\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "Chương trình đã thoát ra dị thưá»ng vá»›i mã thoát là: %d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "Chương trình đã thoát bình thưá»ng vá»›i mã thoát là: %d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "Chương trình này Ä‘ang chạy. Vẫn thoát (c/k)?" -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Không dừng tại bất ký Ä‘iểm ngắt nào; đối số bị bá» qua.\n" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "số Ä‘iểm ngắt không hợp lệ %d." -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Sẽ bá» qua %ld Ä‘iểm ngắt xuyên chéo %d kế tiếp.\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "“finish†không có nghÄ©a trong khung ngoài cùng nhất main()\n" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "Chạy cho đến khi có trả vá» từ " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "“return†không có nghÄ©a trong khung ngoài cùng nhất main()\n" -#: debug.c:3386 +#: debug.c:3397 #, fuzzy, c-format msgid "cannot find specified location in function `%s'\n" msgstr "Không tìm thấy vị trí đã cho trong hàm “%sâ€\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "dòng nguồn không hợp lệ %d trong tập tin “%sâ€" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format msgid "cannot find specified location %d in file `%s'\n" msgstr "Không thể tìm thấy vị trí %d được chỉ ra trong tập tin “%sâ€\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "phần tá»­ không trong mảng\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "biến chưa định kiểu\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "Dừng trong %s …\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "“finish†không có nghÄ©a vá»›i lệnh nhảy non-local “%sâ€\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "“until†không có nghÄ©a vá»›i cú nhảy non-local “%sâ€\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 +#: debug.c:4335 #, fuzzy msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" msgstr "\t------Nhấn [Enter] để tiếp tục hay t [Enter] để thoát------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] không trong mảng “%sâ€" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "gá»­i kết xuất ra stdout\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "số không hợp lệ" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "“%s†không được phép trong ngữ cảnh hiện hành; câu lệnh bị bá» qua" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "“return†không được phép trong ngữ cảnh hiện hành; câu lệnh bị bá» qua" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "Không có ký hiệu “%s†trong ngữ cảnh hiện thá»i" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "không có ký hiệu “%s†trong ngữ cảnh hiện tại\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "không biết kiểu nút %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "gặp opcode (mã thao tác) không rõ %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "mã lệnh %s không phải là má»™t toán tá»­ hoặc từ khóa" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "tràn bá»™ đệm trong “genflags2str†(tạo ra cỠđến chuá»—i)" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1922,71 +2073,71 @@ "\t# Ngăn xếp gá»i hàm:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "“IGNORECASE†(bá» qua chữ HOA/thưá»ng) là phần mở rá»™ng gawk" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "“BINMODE†(chế độ nhị phân) là phần mở rá»™ng gawk" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "Giá trị BINMODE (chế độ nhị phân) “%s†không hợp lệ nên đã coi là 3" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "đặc tả “%sFMT†sai “%sâ€" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "Ä‘ang tắt “--lint†do việc gán cho “LINTâ€" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "gặp tham chiếu đến đối số chưa được khởi tạo “%sâ€" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "gặp tham chiếu đến biến chưa được khởi tạo “%sâ€" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "cố gắng tham chiếu trưá»ng từ giá trị khác thuá»™c số" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "cố gắng tham chiếu trưá»ng từ chuá»—i trống rá»—ng" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "cố gắng để truy cập trưá»ng %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "tham chiếu đến trưá»ng chưa được khởi tạo “$%ldâ€" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "hàm “%s†được gá»i vá»›i nhiá»u số đối số hÆ¡n số được khai báo" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: không cần kiểu “%sâ€" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "gặp phép chia cho số không trong “/=â€" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "gặp phép chia cho số không trong “%%=â€" @@ -2077,84 +2228,84 @@ msgid "dynamic loading of libraries is not supported" msgstr "tải động cá»§a thư viện không được há»— trợ" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: không thể Ä‘á»c liên kết má»m “%sâ€" -#: extension/filefuncs.c:475 +#: extension/filefuncs.c:479 #, fuzzy msgid "stat: first argument is not a string" msgstr "do_writea: đối số 0 không phải là má»™t chuá»—i\n" -#: extension/filefuncs.c:480 +#: extension/filefuncs.c:484 #, fuzzy msgid "stat: second argument is not an array" msgstr "split: (chia tách) đối số thứ hai không phải là mảng" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "stat: các đối số sai" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "khởi tạo fts: không thể tạo biến %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "fts không được há»— trợ trên hệ thống này" -#: extension/filefuncs.c:629 +#: extension/filefuncs.c:634 #, fuzzy msgid "fill_stat_element: could not create array, out of memory" msgstr "fill_stat_element: không thể tạo mảng" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: không thể đặt phần tá»­" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element: không thể đặt phần tá»­" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element: không thể đặt phần tá»­" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process: không thể tạo mảng" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process: không thể đặt phần tá»­" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: được gá»i vá»›i số lượng đối số không đúng, cần 3" -#: extension/filefuncs.c:848 +#: extension/filefuncs.c:853 #, fuzzy msgid "fts: first argument is not an array" msgstr "asort: đối số thứ nhất không phải là má»™t mảng" -#: extension/filefuncs.c:854 +#: extension/filefuncs.c:859 #, fuzzy msgid "fts: second argument is not a number" msgstr "split: (chia tách) đối số thứ hai không phải là mảng" -#: extension/filefuncs.c:860 +#: extension/filefuncs.c:865 #, fuzzy msgid "fts: third argument is not an array" msgstr "match: (khá»›p) đối số thứ ba không phải là mảng" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts: không thể làm phẳng mảng\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: bá» qua cá» FTS_NOSTAT vụng trá»™m. nyah, nyah, nyah." @@ -2296,7 +2447,7 @@ msgid "chr: first argument is not a number" msgstr "asort: đối số thứ nhất không phải là má»™t mảng" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir gặp lá»—i: %s" @@ -2395,189 +2546,202 @@ msgid "sleep: not supported on this platform" msgstr "sleep: không được há»— trợ trên ná»n tảng này" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "bản ghi đầu vào quá lá»›n" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "“NF†được đặt thành giá trị âm" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "" -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "split (chia tách): đối số thứ tư là phần mở rá»™ng gawk" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "split (chia tách): đối số thứ tư không phải là mảng" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +msgid "%s: cannot use %s as fourth argument" +msgstr "" +"asort (má»™t chương trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con cá»§a tham " +"số thứ hai cho tham số thứ nhất" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "split: (chia tách) đối số thứ hai không phải là mảng" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split (chia tách): không thể sá»­ dụng cùng má»™t mảng có cả đối số thứ hai và " "thứ tư" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split (phân tách): không thể sá»­ dụng mảng con cá»§a tham số thứ hai cho tham " "số thứ tư" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split (phân tách): không thể sá»­ dụng mảng con cá»§a tham số thứ tư cho tham số " "thứ hai" -#: field.c:1038 +#: field.c:1050 #, fuzzy msgid "split: null string for third arg is a non-standard extension" msgstr "" "split: (chia tách) chuá»—i vô giá trị cho đối số thứ ba là phần mở rá»™ng gawk" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: đối số thứ tư không phải là mảng" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplit: đối số thứ hai không phải là mảng" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplit: đối số thứ ba không phải không rá»—ng" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit (chương trình chia tách): không thể sá»­ dụng cùng má»™t mảng cho cả " "hai đối số thứ hai và thứ tư" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit (chương trình phân tách): không thể sá»­ dụng mảng con cá»§a tham số " "thứ hai cho tham số thứ tư" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit (chương trình phân tách): không thể sá»­ dụng mảng con cá»§a tham số " "thứ tư cho tham số thứ hai" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "“FIELDWIDTHS†(độ rá»™ng trưá»ng) là phần mở rá»™ng gawk" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "“*†phải là bá»™ định danh cuối cùng trong FIELDWIDTHS" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "" "giá trị FIELDWIDTHS (độ rá»™ng trưá»ng) không hợp lệ, cho trưá»ng %d, gần “%sâ€" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "chuá»—i vô giá trị cho “FS†là phần mở rá»™ng gawk" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "awk cÅ© không há»— trợ biểu thức chính quy làm giá trị cá»§a “FSâ€" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "“FPAT†là phần mở rá»™ng cá»§a gawk" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: retval nhận được là null" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node: không trong chế độ MPFR" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_node: không há»— trợ MPFR" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node: kiểu số không hợp lệ “%dâ€" -#: gawkapi.c:385 +#: gawkapi.c:377 #, fuzzy msgid "add_ext_func: received NULL name_space parameter" msgstr "load_ext: nhận được NULL lib_name" -#: gawkapi.c:523 -#, c-format +#: gawkapi.c:515 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value: detected invalid numeric flags combination `%s'; " +#| "please file a bug report." msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "" "node_to_awk_value: tìm thấy tổ hợp cá» dạng số không hợp lệ “%sâ€; vui lòng " "báo cáo đây là lá»—i." -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: nút nhận được là null" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: biến nhận được là null" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 -#, c-format +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value detected invalid flags combination `%s'; please file a " +#| "bug report." msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "" "node_to_awk_value tìm thấy tổ hợp cá» dạng số không hợp lệ “%sâ€; vui lòng báo " "cáo đây là lá»—i." -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element: mảng nhận được là null" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element: nhận được là null" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed: không thể chuyển đổi chỉ số %d sang %s\n" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, fuzzy, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed: không thể chuyển đổi giá trị %d sang %s\n" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfr: không há»— trợ MPFR" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "không thể tìm thấy Ä‘iểm kết thúc cá»§a quy tắc BEGINFILE" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "không thể mở kiểu tập tin chưa biết “%s†cho “%sâ€" @@ -2587,31 +2751,86 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "tham số dòng lệnh “%s†là má»™t thư mục: đã bị bá» qua" -#: io.c:429 io.c:546 +#: io.c:429 io.c:543 #, fuzzy, c-format msgid "cannot open file `%s' for reading: %s" msgstr "không mở được tập tin “%s†để Ä‘á»c (%s)" -#: io.c:675 +#: io.c:672 #, fuzzy, c-format msgid "close of fd %d (`%s') failed: %s" msgstr "lá»—i đóng fd %d (“%sâ€) (%s)" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "không cần hợp “>†và “>>†cho tập tin “%.*sâ€" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "chuyển hướng không cho phép ở chế độ khuôn đúc" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "biểu thức trong Ä‘iá»u chuyển hướng “%s†là má»™t con số" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "biểu thức cho Ä‘iá»u chuyển hướng “%s†có giá trị chuá»—i vô giá trị" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" @@ -2619,27 +2838,22 @@ "tên tập tin “%.*s†cho Ä‘iá»u chuyển hướng “%s†có lẽ là kết quả cá»§a biểu thức " "luận lý" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "không cần hợp “>†và “>>†cho tập tin “%.*sâ€" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file không thể tạo đưá»ng ống “%s†vá»›i fd %d" -#: io.c:911 +#: io.c:968 #, fuzzy, c-format msgid "cannot open pipe `%s' for output: %s" msgstr "không thể mở ống dẫn “%s†để xuất (%s)" -#: io.c:926 +#: io.c:983 #, fuzzy, c-format msgid "cannot open pipe `%s' for input: %s" msgstr "không thể mở ống dẫn “%s†để nhập (%s)" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" @@ -2647,274 +2861,279 @@ "việc tạo ổ cắm mạng get_file không được há»— trợ trên ná»n tảng này cho “%s†" "vá»›i fd %d" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "không thể mở ống dẫn hai chiá»u “%s†để nhập/xuất (%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format msgid "cannot redirect from `%s': %s" msgstr "không thể chuyển hướng từ “%s†(%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format msgid "cannot redirect to `%s': %s" msgstr "không thể chuyển hướng đến “%s†(%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "đã tá»›i giá»›i hạn hệ thống vá» tập tin được mở nên bắt đầu phối hợp nhiá»u dòng " "Ä‘iá»u mô tả tập tin" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" msgstr "lá»—i đóng “%s†(%s)" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "quá nhiá»u ống dẫn hay tập tin nhập được mở" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "close: (đóng) đối số thứ hai phải là “to†(đến) hay “from†(từ)" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" "close: (đóng) “%.*s†không phải là tập tin, ống dẫn hay đồng tiến trình đã " "được mở" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "đóng má»™t chuyển hướng mà nó chưa từng được mở" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: chuyển hướng “%s†không được mở bởi “|&†nên đối số thứ hai bị bá» qua" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format msgid "failure status (%d) on pipe close of `%s': %s" msgstr "trạng thái thất bại (%d) khi đóng ống dẫn “%s†(%s)" -#: io.c:1345 +#: io.c:1402 +#, fuzzy, c-format +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "trạng thái thất bại (%d) khi đóng ống dẫn “%s†(%s)" + +#: io.c:1405 #, fuzzy, c-format msgid "failure status (%d) on file close of `%s': %s" msgstr "trạng thái thất bại (%d) khi đóng tập tin “%s†(%s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "không cung cấp lệnh đóng ổ cắm “%s†rõ ràng" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "không cung cấp lệnh đóng đồng tiến trình “%s†rõ ràng" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "không cung cấp lệnh đóng đưá»ng ống dẫn lệnh “%s†rõ ràng" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "không cung cấp lệnh đóng tập tin “%s†rõ ràng" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush: không thể đẩy dữ liệu lên đĩa đầu ra tiêu chuẩn: %s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush: không thể đẩy dữ liệu lên đĩa đầu ra lá»—i tiêu chuẩn: %s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format msgid "error writing standard output: %s" msgstr "gặp lá»—i khi ghi đầu ra tiêu chuẩn (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format msgid "error writing standard error: %s" msgstr "gặp lá»—i khi ghi thiết bị lá»—i chuẩn (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +msgid "pipe flush of `%s' failed: %s" msgstr "lá»—i xóa sạch ống dẫn “%s†(%s)" -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "lá»—i xóa sạch ống dẫn đồng tiến trình đến “%s†(%s)" -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +msgid "file flush of `%s' failed: %s" msgstr "lá»—i xóa sạch tập tin “%s†(%s)" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "cổng cục bá»™ %s không hợp lệ trong “/inetâ€: %s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "cổng cục bá»™ %s không hợp lệ trong “/inetâ€" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "thông tin vá» máy/cổng máy mạng (%s, %s) không hợp lệ: %s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "thông tin vá» máy/cổng ở xa (%s, %s) không phải hợp lệ" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "truyá»n thông TCP/IP không được há»— trợ" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "không mở được “%sâ€, chế độ “%sâ€" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format msgid "close of master pty failed: %s" msgstr "gặp lá»—i khi đóng thiết bị cuối giả (%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format msgid "close of stdout in child failed: %s" msgstr "lá»—i đóng đầu ra tiêu chuẩn trong tiến trình con (%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "gặp lá»—i khi di chuyển pty (thiết bị cuối giả) phụ thuá»™c đến thiết bị đầu ra " "tiêu chuẩn trong con (trùng: %s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format msgid "close of stdin in child failed: %s" msgstr "lá»—i đóng thiết bị nhập chuẩn trong tiến trình con (%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "lá»—i di chuyển pty (thiết bị cuối giả) phụ tá»›i thiết bị nhập chuẩn trong Ä‘iá»u " "con (nhân đôi: %s)" -#: io.c:2029 io.c:2081 io.c:2103 +#: io.c:2089 io.c:2141 io.c:2163 #, fuzzy, c-format msgid "close of slave pty failed: %s" msgstr "đóng pty (thiết bị cuối giả) phụ thuá»™c gặp lá»—i (%s)" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "không thể tạo tiến trình con hoặc mở tpy" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "lá»—i di chuyển ống dẫn đến thiết bị xuất chuẩn trong tiến trình con (trùng: " "%s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "lá»—i di chuyển ống dẫn đến thiết bị nhập chuẩn trong tiến trình con (trùng: " "%s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 #, fuzzy msgid "restoring stdout in parent process failed" msgstr "phục hồi đầu ra tiêu chuẩn trong tiến trình mẹ gặp lá»—i\n" -#: io.c:2394 +#: io.c:2454 #, fuzzy msgid "restoring stdin in parent process failed" msgstr "phục hồi đầu vào tiêu chuẩn trong tiến trình mẹ gặp lá»—i\n" -#: io.c:2429 io.c:2667 io.c:2682 +#: io.c:2489 io.c:2727 io.c:2742 #, fuzzy, c-format msgid "close of pipe failed: %s" msgstr "đóng ống dẫn gặp lá»—i (%s)" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "“|&†không được há»— trợ" -#: io.c:2618 +#: io.c:2678 #, fuzzy, c-format msgid "cannot open pipe `%s': %s" msgstr "không thể mở ống dẫn “%s†(%s)" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "không thể tạo tiến trình con cho “%s†(fork: %s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "getline: cố ghi vào má»™t đưá»ng ống hai chiá»u mà chiá»u ghi đã đóng" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: nhận được con trá» NULL" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "bá»™ phân tích đầu vào “%s†xung đột vá»›i bá»™ phân tích đầu vào được cài đặt " "trước đó “%sâ€" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "bá»™ phân tích đầu vào “%s†gặp lá»—i khi mở “%sâ€" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: nhận được con trá» NULL" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "bá»™ bao kết xuất “%s†xung đột vá»›i bá»™ bao kết xuất được cài đặt trước đó “%sâ€" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "bá»™ bao kết xuất “%s†gặp lá»—i khi mở “%sâ€" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: nhận được con trá» NULL" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2923,225 +3142,231 @@ "bá»™ xá»­ lý hai hướng “%s†xung đột vá»›i bá»™ xá»­ lý hai hướng đã được cài đặt " "trước đó “%sâ€" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "bá»™ xá»­ lý hai hướng “%s†gặp lá»—i khi mở “%sâ€" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "tập tin dữ liệu “%s†là rá»—ng" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "không thể cấp phát bá»™ nhá»› nhập thêm nữa" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "giá trị Ä‘a ký tá»± cá»§a “RS†là phần mở rá»™ng gawk" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "Truyá»n thông trên IPv6 không được há»— trợ" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "biến môi trưá»ng “POSIXLY_CORRECT†(đúng kiểu POSIX) đã được đặt; Ä‘ang bật " "tùy chá»n “--posixâ€" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "tùy chá»n “--posix†có quyá»n cao hÆ¡n “--traditional†(truyá»n thống)" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "“--posixâ€/“--traditional†(cổ Ä‘iển) có quyá»n cao hÆ¡n “--non-decimal-" "data†(dữ liệu khác thập phân)" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "“--posix†đè lên “--characters-as-bytesâ€" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "việc chạy %s vá»›i tư cách “setuid root†có thể rá»§i rá» bảo mật" -#: main.c:421 +#: main.c:424 #, fuzzy, c-format msgid "cannot set binary mode on stdin: %s" msgstr "không thể đặt chế độ nhị phân trên đầu vào tiêu chuẩn (%s)" -#: main.c:424 +#: main.c:427 #, fuzzy, c-format msgid "cannot set binary mode on stdout: %s" msgstr "không thể đặt chế độ nhị phân trên đầu ra tiêu chuẩn (%s)" -#: main.c:426 +#: main.c:429 #, fuzzy, c-format msgid "cannot set binary mode on stderr: %s" msgstr "không thể đặt chế độ nhị phân trên đầu ra lá»—i tiêu chuẩn (%s)" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "không có Ä‘oạn chữ chương trình nào cả!" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Cách dùng: %s [tùy chá»n kiểu POSIX hay GNU] -f tập_tin_chương_trình [--] " "tập_tin …\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Cách dùng: %s [tùy chá»n kiểu POSIX hay GNU] [--] %cchương_trình%c tập_tin …\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Tùy chá»n POSIX:\t\t\tTùy chá»n dài GNU: (tiêu chuẩn)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f tập_tin_chương_trình\t--file=tập_tin_chương_trình\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=ký_hiệu_phân_cách_trưá»ng\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" "\t-v var=giá_trị\t\t--assign=biến=giá_trị\n" "(assign: gán)\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Tùy chá»n ngắn:\t\t\tTùy chá»n GNU dạng dài: (mở rá»™ng)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[tập_tin]\t\t--dump-variables[=tập_tin]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[tập_tin]\t\t--debug[=tập_tin]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e “program-textâ€\t--source=“program-textâ€\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=tập_tin\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=tập-tin-bao-gồm\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l library\t\t--load=thư-viện\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 +#: main.c:613 #, fuzzy msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" msgstr "\t-L [fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[tập_tin]\t\t--pretty-print[=tập_tin]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize (tối_ưu_hóa)\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[tập_tin]\t\t--profile[=tập_tin]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" "\t-W nostalgia\t\t--nostalgia\n" "(ná»—i luyến tiếc quá khứ)\n" -#: main.c:626 +#: main.c:630 #, fuzzy msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 +#: main.c:639 #, fuzzy msgid "" "\n" @@ -3164,7 +3389,7 @@ "Thông báo lá»—i dịch cho: .\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3174,7 +3399,7 @@ "Mặc định, nó Ä‘á»c từ đầu vào tiêu chuẩn và ghi ra đầu ra tiêu chuẩn.\n" "\n" -#: main.c:647 +#: main.c:651 #, fuzzy, c-format msgid "" "Examples:\n" @@ -3185,7 +3410,7 @@ "\tgawk \"{ sum += $1 }; END { print sum }\" tập_tin\n" "\tgawk -F: \"{ print $1 }\" /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3204,7 +3429,7 @@ "cá»§a Giấy Phép này, hoặc là (tùy chá»n) bất kỳ phiên bản má»›i hÆ¡n.\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3218,7 +3443,7 @@ "Hãy xem Giấy phép Công Chung GNU (GPL) để biết chi tiết.\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3226,11 +3451,11 @@ "Bạn nên nhận má»™t bản sao cá»§a Giấy Phép Công Cá»™ng GNU cùng vá»›i chương\n" "trình này. Nếu chưa có, bạn xem tại .\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft không đặt FS (hệ thống tập tin?) vào tab trong awk POSIX" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3239,161 +3464,167 @@ "%s: đối số “%s†cho “-v†không có dạng “biến=giá_trịâ€\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "“%s†không phải là tên biến hợp lệ" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "“%s†không phải là tên biến; Ä‘ang tìm tập tin “%s=%sâ€" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "không thể dùng builtin (dá»±ng sẵn) cá»§a gawk “%s†như là tên biến" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "không thể dùng hàm “%s†như là tên biến" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "ngoại lệ số thá»±c dấu chấm động" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™: lá»—i phân Ä‘oạn" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™: tràn ngăn xếp" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "không có fd (bá»™ mô tả tập tin) %d đã mở trước" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "không thể mở trước “/dev/null†cho fd %d" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "đối số rá»—ng cho tùy chá»n “-e/--source†bị bá» qua" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 #, fuzzy msgid "`--profile' overrides `--pretty-print'" msgstr "tùy chá»n “--posix†có quyá»n cao hÆ¡n “--traditional†(truyá»n thống)" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M bị bá» qua: chưa biên dịch phần há»— trợ MPFR/GMP" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: tùy chá»n “-W %s†không được nhận diện nên bị bá» qua\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tùy chá»n cần đến đối số “-- %câ€\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "giá trị PREC “%.*s†là không hợp lệ" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "giá trị RNDMODE “%.*s†là không hợp lệ" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2: đã nhận đối số thứ nhất khác thuá»™c số" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2: đã nhận đối số thứ hai khác thuá»™c số" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +msgid "%s: received negative argument %.*s" +msgstr "log: (nhật ký) đã nhận đối số âm “%gâ€" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "int: (số nguyên?) đã nhận đối số không phải thuá»™c số" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "compl: (biên dịch) đã nhận được đối số không-phải-số" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg): giá trị âm là không được phép" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): giá trị thuá»™c phân số sẽ bị cắt ngắn" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd): giá trị âm là không được phép" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: đã nhận đối số không phải thuá»™c số #%d" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: đối số #%d có giá trị không hợp lệ %Rg, dùng 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s: đối số #%d giá trị âm %Rg là không được phép" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: đối số #%d giá trị phần phân số %Rg sẽ bị cắt cụt" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s: đối số #%d có giá trị âm %Zd là không được phép" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "and: được gá»i vá»›i ít hÆ¡n hai đối số" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "or: (hoặc) được gá»i vá»›i ít hÆ¡n hai đối số" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xor: được gá»i vá»›i ít hÆ¡n hai đối số" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srand: đã nhận đối số không thuá»™c kiểu số há»c" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdiv: đã nhận đối số đầu không phải thuá»™c số" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdiv: đã nhận đối số thứ hai không thuá»™c số" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "dòng lệnh:" @@ -3402,20 +3633,20 @@ msgid "could not make typed regex" msgstr "không thể tạo biểu thức chính quy kiểu mẫu" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "awk cÅ© không há»— trợ thoát chuá»—i “\\%câ€" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX không cho phép thoát chuá»—i “\\xâ€" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "không có số thập lúc nằm trong thoát chuá»—i “\\xâ€" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3424,15 +3655,19 @@ "thoát chuá»—i thập lục \\x%.*s chứa %d ký tá»± mà rất có thể không phải được Ä‘á»c " "bằng cách dá»± định" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "thoát chuá»—i “\\%c†được xá»­ lý như là “%c†chuẩn" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "" "Dữ liệu dạng Ä‘a byte (multibyte) không hợp lệ được tìm thấy. Tại đó có lẽ " "không khá»›p giữa dữ liệu cá»§a bạn và nÆ¡i xảy ra." @@ -3480,11 +3715,11 @@ msgid "internal error: %s with null vname" msgstr "lá»—i ná»™i bá»™: %s vá»›i vname (tên biến?) vô giá trị" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "lá»—i ná»™i bá»™: phần dá»±ng sẵn vá»›i fname là null" -#: profile.c:1317 +#: profile.c:1318 #, fuzzy, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3493,7 +3728,7 @@ "\t# Các phần mở rá»™ng được tải (-l và/hoặc @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, fuzzy, c-format msgid "" "\n" @@ -3503,12 +3738,12 @@ "\t# Các phần mở rá»™ng được tải (-l và/hoặc @load)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# hồ sÆ¡ gawk, được tạo %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3517,7 +3752,7 @@ "\n" "\t# Danh sách các hàm theo thứ tá»± abc\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: không hiểu kiểu chuyển hướng %d" @@ -3549,39 +3784,39 @@ "thành phần cá»§a biểu thức chính qui (regexp) “%.*s†gần như chắc chắn nên là " "“[%.*s]â€" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "thiếu dấu ngoặc vuông mở [" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "sai lá»›p ký tá»±" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "cú pháp lá»›p ký tá»± là [[:dấu_cách:]], không phải [:dấu_cách:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "chưa kết thúc dãy thoát \\" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "ná»™i dung cá»§a “\\{\\}†không hợp lệ" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "biểu thức chính quy quá lá»›n" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "thiếu dấu (" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "chưa chỉ rõ cú pháp" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr "thiếu dấu )" @@ -3713,16 +3948,34 @@ msgid "No previous regular expression" msgstr "Không có biểu thức chính quy nằm trước" -#: symbol.c:691 +#: symbol.c:698 #, fuzzy, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "hàm “%sâ€: không thể dùng hàm “%s†như là tên tham số" -#: symbol.c:821 +#: symbol.c:828 #, fuzzy msgid "cannot pop main context" msgstr "không thể pop (lấy ra) ngữ cảnh chính" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "chữ “L†không có nghÄ©a trong định dạng awk nên bị bá» qua" + +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "" +#~ "lá»—i nghiêm trá»ng: không cho phép chữ “L†nằm trong định dạng awk POSIX" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "chữ “h†không có nghÄ©a trong định dạng awk nên bị bá» qua" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "" +#~ "lá»—i nghiêm trá»ng: không cho phép chữ “h†nằm trong định dạng awk POSIX" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "Không có ký hiệu “%s†trong ngữ cảnh hiện thá»i" + #, fuzzy #~ msgid "fts: first parameter is not an array" #~ msgstr "asort: đối số thứ nhất không phải là má»™t mảng" @@ -4068,9 +4321,6 @@ #~ msgid "assignment used in conditional context" #~ msgstr "Ä‘iá»u gán được dùng trong ngữ cảnh Ä‘iá»u kiện" -#~ msgid "statement has no effect" -#~ msgstr "câu không có tác dụng" - #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" diff -urN gawk-5.1.0/po/zh_CN.po gawk-5.1.1/po/zh_CN.po --- gawk-5.1.0/po/zh_CN.po 2020-04-14 14:48:04.000000000 +0300 +++ gawk-5.1.1/po/zh_CN.po 2021-10-27 07:58:42.000000000 +0300 @@ -8,11 +8,11 @@ # msgid "" msgstr "" -"Project-Id-Version: gawk 4.2.63\n" +"Project-Id-Version: gawk 5.0.64\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2020-04-14 14:48+0300\n" -"PO-Revision-Date: 2019-03-19 17:46+0100\n" -"Last-Translator: Tianze Wang \n" +"POT-Creation-Date: 2021-10-27 07:58+0300\n" +"PO-Revision-Date: 2020-05-06 17:44-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" @@ -20,487 +20,503 @@ "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.7\n" +"X-Generator: Poedit 2.3\n" -#: array.c:248 +#: array.c:249 #, c-format msgid "from %s" msgstr "从 %s" -#: array.c:349 +#: array.c:350 msgid "attempt to use a scalar value as array" msgstr "试图把标é‡å½“数组使用" -#: array.c:351 +#: array.c:352 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "试图把标é‡å‚数“%sâ€å½“数组使用" -#: array.c:354 +#: array.c:355 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "试图把标é‡â€œ%sâ€å½“数组使用" -#: array.c:401 array.c:568 builtin.c:89 builtin.c:1688 builtin.c:1734 -#: builtin.c:1747 builtin.c:2242 builtin.c:2269 eval.c:1151 eval.c:1155 -#: eval.c:1530 +#: array.c:402 array.c:569 builtin.c:89 builtin.c:1677 builtin.c:1723 +#: builtin.c:1736 builtin.c:2233 builtin.c:2260 eval.c:1155 eval.c:1159 +#: eval.c:1541 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "试图在标é‡çŽ¯å¢ƒä¸­ä½¿ç”¨æ•°ç»„â€œ%sâ€" -#: array.c:575 +#: array.c:576 #, c-format msgid "delete: index `%.*s' not in array `%s'" msgstr "delete:索引“%.*sâ€ä¸åœ¨æ•°ç»„“%sâ€ä¸­" -#: array.c:589 +#: array.c:590 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "试图把标é‡â€œ%s[\"%.*s\"]â€å½“数组使用" -#: array.c:783 array.c:831 -#, fuzzy, c-format +#: array.c:784 array.c:834 +#, c-format msgid "%s: first argument is not an array" -msgstr "asortï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +msgstr "%sï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: array.c:824 -#, fuzzy, c-format +#: array.c:826 +#, c-format msgid "%s: second argument is not an array" -msgstr "splitï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +msgstr "%sï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: array.c:835 +#: array.c:829 field.c:1004 field.c:1096 #, fuzzy, c-format -msgid "%s: first argument cannot be SYMTAB" -msgstr "asortï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +#| msgid "%s: cannot use a subarray of first argument for second argument" +msgid "%s: cannot use %s as second argument" +msgstr "%sï¼šæ— æ³•å°†ç¬¬ä¸€ä¸ªå‚æ•°çš„å­æ•°ç»„ä½œä¸ºç¬¬äºŒä¸ªå‚æ•°" -#: array.c:838 +#: array.c:837 #, fuzzy, c-format -msgid "%s: first argument cannot be FUNCTAB" -msgstr "asortï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +#| msgid "%s: first argument cannot be SYMTAB" +msgid "%s: first argument cannot be SYMTAB without a second argument" +msgstr "%sï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸èƒ½ä¸º SYMTAB" -#: array.c:844 +#: array.c:839 #, fuzzy, c-format +#| msgid "%s: first argument cannot be FUNCTAB" +msgid "%s: first argument cannot be FUNCTAB without a second argument" +msgstr "%sï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸èƒ½ä¸º FUNCTAB" + +#: array.c:846 +msgid "" +"asort/asorti: using the same array as source and destination without a third " +"argument is silly." +msgstr "" + +#: array.c:851 +#, c-format msgid "%s: cannot use a subarray of first argument for second argument" -msgstr "asortï¼šæ— æ³•å°†ç¬¬ä¸€ä¸ªå‚æ•°çš„å­æ•°ç»„ä½œä¸ºç¬¬äºŒä¸ªå‚æ•°" +msgstr "%sï¼šæ— æ³•å°†ç¬¬ä¸€ä¸ªå‚æ•°çš„å­æ•°ç»„ä½œä¸ºç¬¬äºŒä¸ªå‚æ•°" -#: array.c:849 -#, fuzzy, c-format +#: array.c:856 +#, c-format msgid "%s: cannot use a subarray of second argument for first argument" -msgstr "asortï¼šæ— æ³•å°†ç¬¬äºŒä¸ªå‚æ•°çš„å­æ•°ç»„ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°" +msgstr "%sï¼šæ— æ³•å°†ç¬¬äºŒä¸ªå‚æ•°çš„å­æ•°ç»„ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°" -#: array.c:1355 +#: array.c:1370 #, c-format msgid "`%s' is invalid as a function name" msgstr "“%sâ€ç”¨äºŽå‡½æ•°å是无效的" -#: array.c:1359 +#: array.c:1374 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "æŽ’åºæ¯”较函数“%sâ€æœªå®šä¹‰" -#: awkgram.y:275 +#: awkgram.y:276 #, c-format msgid "%s blocks must have an action part" msgstr "%s å—必须有一个行为部分" -#: awkgram.y:278 +#: awkgram.y:279 msgid "each rule must have a pattern or an action part" msgstr "æ¯ä¸ªè§„åˆ™å¿…é¡»æœ‰ä¸€ä¸ªæ¨¡å¼æˆ–行为部分" -#: awkgram.y:419 awkgram.y:431 +#: awkgram.y:420 awkgram.y:432 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "è€çš„ awk 䏿”¯æŒå¤šä¸ªâ€œBEGINâ€æˆ–“ENDâ€è§„则" -#: awkgram.y:484 +#: awkgram.y:485 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "“%sâ€æ˜¯å†…置函数,ä¸èƒ½è¢«é‡å®šä¹‰" -#: awkgram.y:548 +#: awkgram.y:549 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "正则表达å¼å¸¸é‡â€œ//â€çœ‹èµ·æ¥åƒ C++ æ³¨é‡Šï¼Œä½†å…¶å®žä¸æ˜¯" -#: awkgram.y:552 +#: awkgram.y:553 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "正则表达å¼å¸¸é‡â€œ/%s/â€çœ‹èµ·æ¥åƒ C æ³¨é‡Šï¼Œä½†å…¶å®žä¸æ˜¯" -#: awkgram.y:679 +#: awkgram.y:680 #, c-format msgid "duplicate case values in switch body: %s" msgstr "switch 中有é‡å¤çš„ case 值:%s" -#: awkgram.y:700 +#: awkgram.y:701 msgid "duplicate `default' detected in switch body" msgstr "switch 中有é‡å¤çš„“defaultâ€" -#: awkgram.y:1036 awkgram.y:4463 +#: awkgram.y:1037 awkgram.y:4470 msgid "`break' is not allowed outside a loop or switch" msgstr "“breakâ€åœ¨å¾ªçŽ¯æˆ– switch外使用是ä¸å…许的" -#: awkgram.y:1046 awkgram.y:4455 +#: awkgram.y:1047 awkgram.y:4462 msgid "`continue' is not allowed outside a loop" msgstr "“continueâ€åœ¨å¾ªçŽ¯å¤–ä½¿ç”¨æ˜¯ä¸å…许的" -#: awkgram.y:1057 +#: awkgram.y:1058 #, c-format msgid "`next' used in %s action" msgstr "“nextâ€è¢«ç”¨äºŽ %s æ“作" -#: awkgram.y:1068 +#: awkgram.y:1069 #, c-format msgid "`nextfile' used in %s action" msgstr "“nextfileâ€è¢«ç”¨äºŽ %s æ“作" -#: awkgram.y:1096 +#: awkgram.y:1097 msgid "`return' used outside function context" msgstr "“returnâ€åœ¨å‡½æ•°å¤–使用" -#: awkgram.y:1169 +#: awkgram.y:1170 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "在 BEGIN 或 END 规则中,“printâ€ä¹Ÿè®¸åº”该写åšâ€œprint \"\"â€" -#: awkgram.y:1239 awkgram.y:1288 +#: awkgram.y:1240 awkgram.y:1289 msgid "`delete' is not allowed with SYMTAB" msgstr "“deleteâ€ä¸èƒ½ä¸Ž SYMTAB 共用" -#: awkgram.y:1241 awkgram.y:1290 +#: awkgram.y:1242 awkgram.y:1291 msgid "`delete' is not allowed with FUNCTAB" msgstr "“deleteâ€ä¸èƒ½ä¸Ž FUNCTAB 共用" -#: awkgram.y:1275 awkgram.y:1279 +#: awkgram.y:1276 awkgram.y:1280 msgid "`delete(array)' is a non-portable tawk extension" msgstr "“delete(array)â€æ˜¯ä¸å¯ç§»æ¤çš„ tawk 扩展" -#: awkgram.y:1415 +#: awkgram.y:1416 msgid "multistage two-way pipelines don't work" msgstr "多阶åŒå‘ç®¡é“æ— æ³•工作" -#: awkgram.y:1417 +#: awkgram.y:1418 msgid "concatenation as I/O `>' redirection target is ambiguous" msgstr "输入输出é‡å®šå‘符“>â€ï¼ˆåˆå¹¶å†…容)的目标有歧义" -#: awkgram.y:1623 +#: awkgram.y:1630 msgid "regular expression on right of assignment" msgstr "正则表达å¼åœ¨èµ‹å€¼ç®—符的å³è¾¹" -#: awkgram.y:1638 awkgram.y:1651 +#: awkgram.y:1645 awkgram.y:1658 msgid "regular expression on left of `~' or `!~' operator" msgstr "正则表达å¼åœ¨â€œ~â€æˆ–“!~â€ç®—符的左边" -#: awkgram.y:1668 awkgram.y:1818 +#: awkgram.y:1675 awkgram.y:1825 msgid "old awk does not support the keyword `in' except after `for'" msgstr "è€ awk åªæ”¯æŒå…³é”®è¯â€œinâ€åœ¨â€œforâ€çš„åŽé¢" -#: awkgram.y:1678 +#: awkgram.y:1685 msgid "regular expression on right of comparison" msgstr "正则表达å¼åœ¨æ¯”较算符的å³è¾¹" -#: awkgram.y:1797 +#: awkgram.y:1804 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "éžé‡å®šå‘的“getline†在“%sâ€è§„则中无效" -#: awkgram.y:1800 +#: awkgram.y:1807 msgid "non-redirected `getline' undefined inside END action" msgstr "在 END 环境中,éžé‡å®šå‘的“getlineâ€æœªå®šä¹‰" -#: awkgram.y:1820 +#: awkgram.y:1827 msgid "old awk does not support multidimensional arrays" msgstr "è€ awk 䏿”¯æŒå¤šç»´æ•°ç»„" -#: awkgram.y:1923 +#: awkgram.y:1930 msgid "call of `length' without parentheses is not portable" msgstr "ä¸å¸¦æ‹¬å·è°ƒç”¨â€œlengthâ€æ˜¯ä¸å¯ä»¥ç§»æ¤çš„" -#: awkgram.y:1997 +#: awkgram.y:2004 msgid "indirect function calls are a gawk extension" msgstr "间接函数调用是一个 gawk 扩展" -#: awkgram.y:2010 -#, fuzzy, c-format +#: awkgram.y:2017 +#, c-format msgid "cannot use special variable `%s' for indirect function call" -msgstr "无法使用特殊å˜é‡â€œ%sâ€ä½œä¸ºé—´æŽ¥å‡½æ•°çš„傿•°" +msgstr "ä¸èƒ½ä¸ºé—´æŽ¥å‡½æ•°è°ƒç”¨ä½¿ç”¨ç‰¹æ®Šå˜é‡â€œ%sâ€" -#: awkgram.y:2043 +#: awkgram.y:2050 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "试图把éžå‡½æ•°â€œ%sâ€å½“函数æ¥è°ƒç”¨" -#: awkgram.y:2108 +#: awkgram.y:2115 msgid "invalid subscript expression" msgstr "无效的下标表达å¼" -#: awkgram.y:2481 awkgram.y:2501 gawkapi.c:273 gawkapi.c:290 msg.c:137 +#: awkgram.y:2488 awkgram.y:2508 gawkapi.c:265 gawkapi.c:282 msg.c:133 msgid "warning: " msgstr "警告:" -#: awkgram.y:2499 gawkapi.c:245 gawkapi.c:288 msg.c:169 +#: awkgram.y:2506 gawkapi.c:237 gawkapi.c:280 msg.c:165 msgid "fatal: " msgstr "致命错误:" -#: awkgram.y:2552 +#: awkgram.y:2559 msgid "unexpected newline or end of string" msgstr "未预期的新行或字符串结æŸ" -#: awkgram.y:2573 +#: awkgram.y:2580 msgid "" "source files / command-line arguments must contain complete functions or " "rules" msgstr "æºæ–‡ä»¶ / å‘½ä»¤è¡Œä¸­çš„å‚æ•°å¿…须包å«å®Œæ•´çš„函数或规则" -#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:536 debug.c:552 -#: debug.c:2829 debug.c:5195 -#, fuzzy, c-format +#: awkgram.y:2862 awkgram.y:2940 awkgram.y:3178 debug.c:545 debug.c:561 +#: debug.c:2840 debug.c:5206 +#, c-format msgid "cannot open source file `%s' for reading: %s" -msgstr "æ— æ³•æ‰“å¼€æºæ–‡ä»¶â€œ%sâ€è¿›è¡Œè¯»å–(%s)" +msgstr "æ— æ³•æ‰“å¼€æºæ–‡ä»¶â€œ%sâ€è¿›è¡Œè¯»å–:%s" -#: awkgram.y:2856 awkgram.y:2993 -#, fuzzy, c-format +#: awkgram.y:2863 awkgram.y:3000 +#, c-format msgid "cannot open shared library `%s' for reading: %s" -msgstr "无法打开共享库“%sâ€è¿›è¡Œè¯»å–(%s)" +msgstr "无法打开共享库“%sâ€è¿›è¡Œè¯»å–:%s" -#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:150 debug.c:5346 +#: awkgram.y:2865 awkgram.y:2941 awkgram.y:3001 builtin.c:150 debug.c:5357 msgid "reason unknown" msgstr "未知原因" -#: awkgram.y:2867 awkgram.y:2891 -#, fuzzy, c-format +#: awkgram.y:2874 awkgram.y:2898 +#, c-format msgid "cannot include `%s' and use it as a program file" msgstr "无法包å«â€œ%sâ€å¹¶å°†å…¶ä½œä¸ºç¨‹åºæ–‡ä»¶ä½¿ç”¨" -#: awkgram.y:2880 +#: awkgram.y:2887 #, c-format msgid "already included source file `%s'" msgstr "å·²ç»åŒ…å«äº†æºæ–‡ä»¶â€œ%sâ€" -#: awkgram.y:2881 +#: awkgram.y:2888 #, c-format msgid "already loaded shared library `%s'" msgstr "å·²ç»åŠ è½½äº†å…±äº«åº“â€œ%sâ€" -#: awkgram.y:2918 +#: awkgram.y:2925 msgid "@include is a gawk extension" msgstr "@include 是 gawk 扩展" -#: awkgram.y:2924 +#: awkgram.y:2931 msgid "empty filename after @include" msgstr "@include åŽçš„æ–‡ä»¶å为空" -#: awkgram.y:2973 +#: awkgram.y:2980 msgid "@load is a gawk extension" msgstr "@load 是 gawk 扩展" -#: awkgram.y:2980 +#: awkgram.y:2987 msgid "empty filename after @load" msgstr "@load åŽçš„æ–‡ä»¶å为空" -#: awkgram.y:3123 +#: awkgram.y:3130 msgid "empty program text on command line" msgstr "命令行中程åºä½“为空" -#: awkgram.y:3239 debug.c:461 debug.c:619 -#, fuzzy, c-format +#: awkgram.y:3246 debug.c:470 debug.c:628 +#, c-format msgid "cannot read source file `%s': %s" -msgstr "æ— æ³•è¯»å–æºæ–‡ä»¶â€œ%sâ€(%s)" +msgstr "æ— æ³•è¯»å–æºæ–‡ä»¶â€œ%sâ€ï¼š%s" -#: awkgram.y:3250 +#: awkgram.y:3257 #, c-format msgid "source file `%s' is empty" msgstr "æºæ–‡ä»¶â€œ%sâ€ä¸ºç©º" -#: awkgram.y:3310 -#, fuzzy, c-format +#: awkgram.y:3317 +#, c-format msgid "error: invalid character '\\%03o' in source code" -msgstr "PEBKAC 错误:æºä»£ç ä¸­æœ‰æ— æ•ˆçš„字符“\\%03oâ€" +msgstr "错误:æºä»£ç ä¸­æœ‰æ— æ•ˆçš„字符“\\%03oâ€" -#: awkgram.y:3537 +#: awkgram.y:3544 msgid "source file does not end in newline" msgstr "æºæ–‡ä»¶ä¸ä»¥æ¢è¡Œç¬¦ç»“æŸ" -#: awkgram.y:3658 +#: awkgram.y:3665 msgid "unterminated regexp ends with `\\' at end of file" msgstr "未终止的正则表达å¼åœ¨æ–‡ä»¶ç»“æŸå¤„以“\\â€ç»“æŸ" -#: awkgram.y:3685 +#: awkgram.y:3692 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s:%d:tawk 正则表达å¼ä¿®é¥°ç¬¦â€œ/.../%câ€æ— æ³•在 gawk 中工作" -#: awkgram.y:3689 +#: awkgram.y:3696 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk 正则表达å¼ä¿®é¥°ç¬¦â€œ/.../%câ€æ— æ³•在 gawk 中工作" -#: awkgram.y:3702 +#: awkgram.y:3709 msgid "unterminated regexp" msgstr "未终止的正则表达å¼" -#: awkgram.y:3706 +#: awkgram.y:3713 msgid "unterminated regexp at end of file" msgstr "未终止的正则表达å¼åœ¨æ–‡ä»¶ç»“æŸå¤„" -#: awkgram.y:3795 +#: awkgram.y:3802 msgid "use of `\\ #...' line continuation is not portable" msgstr "使用“\\ #...â€æ¥ç»­è¡Œæ˜¯ä¸å¯ç§»æ¤çš„" -#: awkgram.y:3817 +#: awkgram.y:3824 msgid "backslash not last character on line" msgstr "åæ–œæ ä¸æ˜¯è¡Œçš„æœ€åŽä¸€ä¸ªå­—符" -#: awkgram.y:3864 awkgram.y:3866 +#: awkgram.y:3871 awkgram.y:3873 msgid "multidimensional arrays are a gawk extension" msgstr "多维数组是一个 gawk 扩展" -#: awkgram.y:3891 awkgram.y:3902 -#, fuzzy, c-format +#: awkgram.y:3898 awkgram.y:3909 +#, c-format msgid "POSIX does not allow operator `%s'" -msgstr "POSIX ä¸å…许æ“作符“**â€" +msgstr "POSIX ä¸å…许æ“作符“%sâ€" -#: awkgram.y:3893 awkgram.y:3904 awkgram.y:3939 awkgram.y:3947 -#, fuzzy, c-format +#: awkgram.y:3900 awkgram.y:3911 awkgram.y:3946 awkgram.y:3954 +#, c-format msgid "operator `%s' is not supported in old awk" -msgstr "è€ awk 䏿”¯æŒæ“作符“^â€" +msgstr "æ—§ awk 䏿”¯æŒæ“作符“%sâ€" -#: awkgram.y:4044 awkgram.y:4066 command.y:1187 +#: awkgram.y:4051 awkgram.y:4073 command.y:1188 msgid "unterminated string" msgstr "未结æŸçš„字符串" -#: awkgram.y:4054 main.c:1218 +#: awkgram.y:4061 main.c:1223 msgid "POSIX does not allow physical newlines in string values" msgstr "POSIX ä¸å…è®¸å­—ç¬¦ä¸²çš„å€¼ä¸­åŒ…å«æ¢è¡Œç¬¦" -#: awkgram.y:4056 node.c:453 +#: awkgram.y:4063 node.c:453 msgid "backslash string continuation is not portable" msgstr "使用“\\ #...â€æ¥ç»­è¡Œä¼šå¯¼è‡´ä»£ç ç¼ºä¹å…¼å®¹æ€§ï¼ˆå¯ç§»æ¤æ€§ï¼‰" -#: awkgram.y:4294 +#: awkgram.y:4301 #, c-format msgid "invalid char '%c' in expression" msgstr "表达å¼ä¸­çš„æ— æ•ˆå­—符“%câ€" -#: awkgram.y:4389 +#: awkgram.y:4396 #, c-format msgid "`%s' is a gawk extension" msgstr "“%sâ€æ˜¯ gawk 扩展" -#: awkgram.y:4394 +#: awkgram.y:4401 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ä¸å…许“%sâ€" -#: awkgram.y:4402 +#: awkgram.y:4409 #, c-format msgid "`%s' is not supported in old awk" -msgstr "è€ awk 䏿”¯æŒâ€œ%sâ€" +msgstr "æ—§ awk 䏿”¯æŒâ€œ%sâ€" -#: awkgram.y:4500 +#: awkgram.y:4507 msgid "`goto' considered harmful!" msgstr "“gotoâ€æœ‰å®³ï¼Œè¯·æ…Žç”¨ï¼" -#: awkgram.y:4569 +#: awkgram.y:4576 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d 是 %s çš„æ— æ•ˆå‚æ•°ä¸ªæ•°" -#: awkgram.y:4604 -#, fuzzy, c-format +#: awkgram.y:4611 +#, c-format msgid "%s: string literal as last argument of substitute has no effect" msgstr "%s:字符串作为 substitute 的最åŽä¸€ä¸ªå‚数无任何效果" -#: awkgram.y:4609 +#: awkgram.y:4616 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s ç¬¬ä¸‰ä¸ªå‚æ•°ä¸æ˜¯ä¸€ä¸ªå¯å˜å¯¹è±¡" -#: awkgram.y:4713 awkgram.y:4716 +#: awkgram.y:4720 awkgram.y:4723 msgid "match: third argument is a gawk extension" msgstr "matchï¼šç¬¬ä¸‰ä¸ªå‚æ•°æ˜¯ gawk 扩展" -#: awkgram.y:4770 awkgram.y:4773 +#: awkgram.y:4777 awkgram.y:4780 msgid "close: second argument is a gawk extension" msgstr "closeï¼šç¬¬äºŒä¸ªå‚æ•°æ˜¯ gawk 扩展" -#: awkgram.y:4785 +#: awkgram.y:4792 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "使用 dcgettext(_\"...\") 是错误的:去掉开始的下划线" -#: awkgram.y:4800 +#: awkgram.y:4807 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "使用 dcngettext(_\"...\") 是错误的:去掉开始的下划线" -#: awkgram.y:4819 +#: awkgram.y:4826 msgid "index: regexp constant as second argument is not allowed" msgstr "index:ä¸å…许将正则表达å¼å¸¸é‡ä½œä¸ºç¬¬äºŒä¸ªå‚æ•°" -#: awkgram.y:4872 +#: awkgram.y:4879 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "函数“%sâ€ï¼šå‚数“%sâ€æŽ©ç›–äº†å…¬å…±å˜é‡" -#: awkgram.y:4921 debug.c:4179 debug.c:4222 debug.c:5344 profile.c:110 +#: awkgram.y:4928 debug.c:4190 debug.c:4233 debug.c:5355 profile.c:110 #, c-format msgid "could not open `%s' for writing: %s" msgstr "æ— æ³•ä»¥å†™æ¨¡å¼æ‰“开“%sâ€ï¼š%s" -#: awkgram.y:4922 +#: awkgram.y:4929 msgid "sending variable list to standard error" msgstr "å‘é€å˜é‡åˆ—表到标准错误输出" -#: awkgram.y:4930 -#, fuzzy, c-format +#: awkgram.y:4937 +#, c-format msgid "%s: close failed: %s" -msgstr "%s:关闭失败(%s)" +msgstr "%s:关闭失败:%s" -#: awkgram.y:4955 +#: awkgram.y:4962 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() 被调用两次ï¼" -#: awkgram.y:4963 -msgid "there were shadowed variables." +#: awkgram.y:4970 +#, fuzzy +#| msgid "there were shadowed variables." +msgid "there were shadowed variables" msgstr "有å˜é‡è¢«æŽ©ç›–。" -#: awkgram.y:5040 +#: awkgram.y:5047 #, c-format msgid "function name `%s' previously defined" msgstr "函数å“%sâ€å‰é¢å·²å®šä¹‰" -#: awkgram.y:5091 -#, fuzzy, c-format +#: awkgram.y:5098 +#, c-format msgid "function `%s': cannot use function name as parameter name" msgstr "函数“%sâ€ï¼šæ— æ³•使用函数åä½œä¸ºå‚æ•°å" -#: awkgram.y:5094 -#, fuzzy, c-format +#: awkgram.y:5101 +#, c-format msgid "function `%s': cannot use special variable `%s' as a function parameter" msgstr "函数“%sâ€ï¼šæ— æ³•使用特殊å˜é‡â€œ%sâ€ä½œä¸ºå‡½æ•°å‚æ•°" -#: awkgram.y:5098 +#: awkgram.y:5105 #, c-format msgid "function `%s': parameter `%s' cannot contain a namespace" msgstr "函数“%sâ€ï¼šå‚数“%sâ€ä¸­ä¸å…许包å«å‘½å空间(namespace)" -#: awkgram.y:5105 +#: awkgram.y:5112 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "函数“%sâ€ï¼šç¬¬ %d ä¸ªå‚æ•°, “%sâ€, 与第 %d ä¸ªå‚æ•°é‡å¤" -#: awkgram.y:5194 +#: awkgram.y:5201 #, c-format msgid "function `%s' called but never defined" msgstr "调用了函数“%sâ€ï¼Œä½†å…¶æœªè¢«å®šä¹‰" -#: awkgram.y:5198 +#: awkgram.y:5205 #, c-format msgid "function `%s' defined but never called directly" msgstr "定义了函数“%sâ€ï¼Œä½†ä»Žæœªè¢«è°ƒç”¨" -#: awkgram.y:5230 +#: awkgram.y:5237 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "第 %d ä¸ªå‚æ•°çš„æ­£åˆ™è¡¨è¾¾å¼å¸¸é‡äº§ç”Ÿå¸ƒå°”值" -#: awkgram.y:5245 +#: awkgram.y:5252 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -509,71 +525,75 @@ "函数“%sâ€è¢«è°ƒç”¨æ—¶å字与“(â€é—´æœ‰ç©ºæ ¼ï¼Œ\n" "或被用作å˜é‡æˆ–数组" -#: awkgram.y:5454 +#: awkgram.y:5471 mpfr.c:1513 mpfr.c:1548 msgid "division by zero attempted" msgstr "试图除0" -#: awkgram.y:5463 +#: awkgram.y:5480 mpfr.c:1558 #, c-format msgid "division by zero attempted in `%%'" msgstr "在“%%â€ä¸­è¯•图除 0" -#: awkgram.y:5802 +#: awkgram.y:5825 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "无法将值赋给字段åŽå¢žè¡¨è¾¾å¼" -#: awkgram.y:5805 +#: awkgram.y:5828 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "赋值的目标无效(æ“ä½œç  %s)" -#: awkgram.y:6697 +#: awkgram.y:6212 +msgid "statement has no effect" +msgstr "è¡¨è¾¾å¼æ— ä»»ä½•作用" + +#: awkgram.y:6728 #, c-format msgid "identifier %s: qualified names not allowed in traditional / POSIX mode" msgstr "标识符 %s:传统 / POSIX 模å¼ä¸‹ä¸å…许使用åˆè§„å称(qualified name)" -#: awkgram.y:6702 +#: awkgram.y:6733 #, c-format msgid "identifier %s: namespace separator is two colons, not one" msgstr "标识符 %s:命å空间的分隔符应为åŒå†’å·ï¼ˆ::)" -#: awkgram.y:6708 +#: awkgram.y:6739 #, c-format msgid "qualified identifier `%s' is badly formed" msgstr "åˆè§„标识符“%sâ€æ ¼å¼é”™è¯¯" -#: awkgram.y:6715 +#: awkgram.y:6746 #, c-format msgid "" "identifier `%s': namespace separator can only appear once in a qualified name" msgstr "标识符“%sâ€ï¼šåˆè§„å称中的命å空间分隔符最多åªèƒ½å‡ºçŽ°ä¸€æ¬¡" -#: awkgram.y:6764 awkgram.y:6815 +#: awkgram.y:6795 awkgram.y:6846 #, c-format msgid "using reserved identifier `%s' as a namespace is not allowed" msgstr "ä¸å…许将å呿 ‡è¯†ç¬¦â€œ%sâ€ä½œä¸ºå‘½å空间" -#: awkgram.y:6771 awkgram.y:6781 +#: awkgram.y:6802 awkgram.y:6812 #, c-format msgid "" "using reserved identifier `%s' as second component of a qualified name is " "not allowed" msgstr "ä¸å…许将å呿 ‡è¯†ç¬¦â€œ%sâ€ä½œä¸ºåˆè§„å称的第二个组æˆéƒ¨åˆ†" -#: awkgram.y:6799 +#: awkgram.y:6830 msgid "@namespace is a gawk extension" msgstr "@namespace 是 gawk ä¿ç•™å­—" -#: awkgram.y:6806 +#: awkgram.y:6837 #, c-format msgid "namespace name `%s' must meet identifier naming rules" msgstr "命å空间“%sâ€å¿…é¡»ç¬¦åˆæ ‡è¯†ç¬¦çš„命å规则" #: builtin.c:144 -#, fuzzy, c-format +#, c-format msgid "%s to \"%s\" failed: %s" -msgstr "%s 到 \"%s\" 失败 (%s)" +msgstr "%s 到 \"%s\" 失败:%s" #: builtin.c:148 msgid "standard output" @@ -583,8 +603,8 @@ msgid "standard error" msgstr "标准错误输出" -#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1797 builtin.c:2519 -#: builtin.c:2535 builtin.c:2649 builtin.c:3606 mpfr.c:707 +#: builtin.c:163 builtin.c:493 builtin.c:583 builtin.c:1786 builtin.c:2510 +#: builtin.c:2526 builtin.c:2640 builtin.c:3627 mpfr.c:761 #, c-format msgid "%s: received non-numeric argument" msgstr "%sï¼šæ”¶åˆ°éžæ•°å­—傿•°" @@ -619,15 +639,15 @@ msgid "fflush: `%.*s' is not an open file, pipe or co-process" msgstr "fflush:“%.*sâ€ä¸æ˜¯ä¸€ä¸ªå·²æ‰“开文件ã€ç®¡é“或åˆä½œè¿›ç¨‹" -#: builtin.c:378 builtin.c:2034 -#, fuzzy, c-format +#: builtin.c:378 builtin.c:2023 +#, c-format msgid "%s: received non-string first argument" -msgstr "indexï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯å­—符串" +msgstr "%sï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯å­—符串" #: builtin.c:380 -#, fuzzy, c-format +#, c-format msgid "%s: received non-string second argument" -msgstr "indexï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯å­—符串" +msgstr "%sï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯å­—符串" #: builtin.c:532 msgid "length: received array argument" @@ -637,331 +657,330 @@ msgid "`length(array)' is a gawk extension" msgstr "“length(array)â€æ˜¯ gawk 扩展" -#: builtin.c:554 builtin.c:2124 builtin.c:2182 builtin.c:2434 builtin.c:2465 -#, fuzzy, c-format +#: builtin.c:554 builtin.c:2113 builtin.c:2173 builtin.c:2425 builtin.c:2456 +#, c-format msgid "%s: received non-string argument" -msgstr "system:收到éžå­—ç¬¦ä¸²å‚æ•°" +msgstr "%s:收到éžå­—ç¬¦ä¸²å‚æ•°" -#: builtin.c:586 builtin.c:1801 -#, fuzzy, c-format +#: builtin.c:586 builtin.c:1790 +#, c-format msgid "%s: received negative argument %g" -msgstr "logï¼šæ”¶åˆ°è´Ÿæ•°å‚æ•° %g" +msgstr "%sï¼šæ”¶åˆ°è´Ÿæ•°å‚æ•° %g" -#: builtin.c:786 builtin.c:791 builtin.c:944 +#: builtin.c:791 builtin.c:796 builtin.c:950 msgid "fatal: must use `count$' on all formats or none" msgstr "致命错误:è¦ä¹ˆåœ¨æ‰€æœ‰æ ¼å¼ä¸Šä½¿ç”¨â€œcount$â€ï¼Œè¦ä¹ˆå®Œå…¨ä¸ä½¿ç”¨" -#: builtin.c:863 +#: builtin.c:869 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "“%%â€é™å®šç¬¦çš„字段宽度被忽略" -#: builtin.c:865 +#: builtin.c:871 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "“%%â€æè¿°ç¬¦çš„ç²¾åº¦è¢«å¿½ç•¥" -#: builtin.c:867 +#: builtin.c:873 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "“%%â€æè¿°ç¬¦çš„å­—æ®µå®½åº¦å’Œç²¾åº¦è¢«å¿½ç•¥" -#: builtin.c:918 +#: builtin.c:924 msgid "fatal: `$' is not permitted in awk formats" msgstr "致命错误:awk æ ¼å¼ä¸­ä¸å…许 “$â€" -#: builtin.c:927 +#: builtin.c:933 #, fuzzy +#| msgid "fatal: arg count with `$' must be > 0" msgid "fatal: argument index with `$' must be > 0" msgstr "è‡´å‘½é”™è¯¯ï¼šå«æœ‰â€œ$â€çš„傿•°ä¸ªæ•°å¿…须大于0" -#: builtin.c:931 +#: builtin.c:937 #, fuzzy, c-format +#| msgid "fatal: arg count %ld greater than total number of supplied arguments" msgid "" "fatal: argument index %ld greater than total number of supplied arguments" msgstr "è‡´å‘½é”™è¯¯ï¼šå‚æ•°ä¸ªæ•° %ld 大于æä¾›å‚数的总数" -#: builtin.c:935 +#: builtin.c:941 msgid "fatal: `$' not permitted after period in format" msgstr "致命错误:ä¸å…许在格å¼ä¸­çš„“.â€åŽä½¿ç”¨â€œ$â€" -#: builtin.c:954 +#: builtin.c:960 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "致命错误:没有为格å¼å®½åº¦æˆ–精度æä¾›â€œ$â€" -#: builtin.c:1024 -msgid "`l' is meaningless in awk formats; ignored" +#: builtin.c:1035 +#, fuzzy, c-format +#| msgid "`l' is meaningless in awk formats; ignored" +msgid "`%c' is meaningless in awk formats; ignored" msgstr "“lâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" -#: builtin.c:1028 -msgid "fatal: `l' is not permitted in POSIX awk formats" +#: builtin.c:1039 +#, fuzzy, c-format +#| msgid "fatal: `l' is not permitted in POSIX awk formats" +msgid "fatal: `%c' is not permitted in POSIX awk formats" msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œlâ€" -#: builtin.c:1041 -msgid "`L' is meaningless in awk formats; ignored" -msgstr "“Lâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" - -#: builtin.c:1045 -msgid "fatal: `L' is not permitted in POSIX awk formats" -msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œLâ€" - -#: builtin.c:1058 -msgid "`h' is meaningless in awk formats; ignored" -msgstr "“hâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" - -#: builtin.c:1062 -msgid "fatal: `h' is not permitted in POSIX awk formats" -msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œhâ€" - -#: builtin.c:1092 +#: builtin.c:1070 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf:值 %g 对“%%câ€æ ¼å¼æ¥è¯´è¶…出范围" -#: builtin.c:1105 +#: builtin.c:1083 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf:值 %g 䏿˜¯æœ‰æ•ˆçš„宽字符" -#: builtin.c:1497 +#: builtin.c:1475 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf:值 %g 对“%%%câ€æ ¼å¼æ¥è¯´è¶…出范围" -#: builtin.c:1505 +#: builtin.c:1483 #, c-format msgid "[s]printf: value %s is out of range for `%%%c' format" msgstr "[s]printf:值 %s 对“%%%câ€æ ¼å¼æ¥è¯´è¶…出范围" -#: builtin.c:1530 +#: builtin.c:1508 #, c-format msgid "%%%c format is POSIX standard but not portable to other awks" msgstr "%%%c æ ¼å¼ç¬¦åˆ POSIX 规范,但å¯èƒ½æ— æ³•与其他的 awk 兼容" -#: builtin.c:1630 +#: builtin.c:1619 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "忽略ä½ç½®çš„æ ¼å¼åŒ–字符“%câ€ï¼šæ— å‚数被转化" -#: builtin.c:1635 +#: builtin.c:1624 msgid "fatal: not enough arguments to satisfy format string" msgstr "è‡´å‘½é”™è¯¯ï¼šå‚æ•°æ•°é‡å°‘äºŽæ ¼å¼æ•°é‡" -#: builtin.c:1637 +#: builtin.c:1626 msgid "^ ran out for this one" msgstr "^ 跑出范围" -#: builtin.c:1644 +#: builtin.c:1633 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf:指定格å¼ä¸å«æŽ§åˆ¶å­—符" -#: builtin.c:1647 +#: builtin.c:1636 msgid "too many arguments supplied for format string" msgstr "ç›¸å¯¹æ ¼å¼æ¥è¯´å‚数个数过多" -#: builtin.c:1707 +#: builtin.c:1696 msgid "sprintf: no arguments" msgstr "sprintfï¼šæ²¡æœ‰å‚æ•°" -#: builtin.c:1730 builtin.c:1741 +#: builtin.c:1719 builtin.c:1730 msgid "printf: no arguments" msgstr "printfï¼šæ²¡æœ‰å‚æ•°" -#: builtin.c:1756 +#: builtin.c:1745 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "printf:试图å‘写入端已被关闭的åŒå‘管é“中写入数æ®" -#: builtin.c:1832 +#: builtin.c:1821 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr:长度 %g å°äºŽ 1" -#: builtin.c:1834 +#: builtin.c:1823 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr:长度 %g å°äºŽ 0" -#: builtin.c:1848 +#: builtin.c:1837 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substrï¼šéžæ•´æ•°çš„长度 %g 会被截断" -#: builtin.c:1853 +#: builtin.c:1842 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr:长度 %g 作为字符串索引过大,截断至 %g" -#: builtin.c:1865 +#: builtin.c:1854 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substrï¼šå¼€å§‹åæ ‡ %g 无效,使用 1" -#: builtin.c:1870 +#: builtin.c:1859 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substrï¼šéžæ•´æ•°çš„开始索引 %g 会被截断" -#: builtin.c:1893 +#: builtin.c:1882 msgid "substr: source string is zero length" msgstr "substr:æºå­—符串长度为0" -#: builtin.c:1907 +#: builtin.c:1896 #, c-format msgid "substr: start index %g is past end of string" msgstr "substrï¼šå¼€å§‹åæ ‡ %g 超出字符串尾部" -#: builtin.c:1915 +#: builtin.c:1904 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "substrï¼šåœ¨å¼€å§‹åæ ‡ %2$g 下长度 %1$g è¶…å‡ºç¬¬ä¸€ä¸ªå‚æ•°çš„长度 (%3$lu)" -#: builtin.c:1988 +#: builtin.c:1977 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime:PROCINFO[\"strftime\"] 中的格å¼å€¼å«æœ‰æ•°å€¼ç±»åž‹" -#: builtin.c:2008 builtin.c:2500 builtin.c:3438 builtin.c:3477 builtin.c:4032 -#, fuzzy, c-format +#: builtin.c:1997 builtin.c:2491 builtin.c:3459 builtin.c:3498 builtin.c:4058 +#, c-format msgid "%s: received non-numeric second argument" -msgstr "or: ç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" +msgstr "%sï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: builtin.c:2018 +#: builtin.c:2007 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftimeï¼šç¬¬äºŒä¸ªå‚æ•°å°äºŽ0,或对于 time_t æ¥è¯´å¤ªå¤§" -#: builtin.c:2025 +#: builtin.c:2014 msgid "strftime: second argument out of range for time_t" msgstr "strftimeï¼šç¬¬äºŒä¸ªå‚æ•°å¯¹äºŽ time_t æ¥è¯´å¤ªå¤§" -#: builtin.c:2041 +#: builtin.c:2030 msgid "strftime: received empty format string" msgstr "strftime:收到空格å¼å­—符串" -#: builtin.c:2141 +#: builtin.c:2132 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime:至少有一个值超出默认范围" -#: builtin.c:2177 +#: builtin.c:2168 msgid "'system' function not allowed in sandbox mode" msgstr "沙箱模å¼ä¸­ä¸å…许使用\"system\"函数" -#: builtin.c:2251 builtin.c:2326 +#: builtin.c:2242 builtin.c:2317 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "print:试图å‘写入端已被关闭的åŒå‘管é“中写入数æ®" -#: builtin.c:2349 +#: builtin.c:2340 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "引用未åˆå§‹åŒ–的字段“$%dâ€" -#: builtin.c:2498 builtin.c:3436 builtin.c:3475 builtin.c:4030 -#, fuzzy, c-format +#: builtin.c:2489 builtin.c:3457 builtin.c:3496 builtin.c:4056 +#, c-format msgid "%s: received non-numeric first argument" -msgstr "or: ç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" +msgstr "%sï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: builtin.c:2680 +#: builtin.c:2671 msgid "match: third argument is not an array" msgstr "matchï¼šç¬¬ä¸‰ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: builtin.c:2923 +#: builtin.c:2673 +#, fuzzy, c-format +#| msgid "fnmatch: could not get third argument" +msgid "%s: cannot use %s as third argument" +msgstr "fnmatch:无法获å–ç¬¬ä¸‰ä¸ªå‚æ•°" + +#: builtin.c:2916 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensubï¼šç¬¬ä¸‰ä¸ªå‚æ•°â€œ%.*sâ€è¢«å½“作 1" -#: builtin.c:3246 +#: builtin.c:3267 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s:间接调用时åªèƒ½ä¼ é€’ä¸¤ä¸ªå‚æ•°" -#: builtin.c:3369 +#: builtin.c:3390 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "间接调用 %s 需è¦ä¼ é€’è‡³å°‘ä¸¤ä¸ªå‚æ•°" -#: builtin.c:3444 +#: builtin.c:3465 #, c-format msgid "lshift(%f, %f): negative values are not allowed" msgstr "lshift(%f, %f):ä¸å…许传入负值" -#: builtin.c:3448 +#: builtin.c:3469 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f)ï¼šå°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" -#: builtin.c:3450 +#: builtin.c:3471 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f):过大的移ä½ä¼šå¾—到奇怪的结果" -#: builtin.c:3483 +#: builtin.c:3504 #, c-format msgid "rshift(%f, %f): negative values are not allowed" msgstr "rshift(%f, %f):ä¸å…许传入负值" -#: builtin.c:3487 +#: builtin.c:3508 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f)ï¼šå°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" -#: builtin.c:3489 +#: builtin.c:3510 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f):过大的移ä½ä¼šå¾—到奇怪的结果" -#: builtin.c:3513 builtin.c:3544 builtin.c:3574 -#, fuzzy, c-format +#: builtin.c:3534 builtin.c:3565 builtin.c:3595 +#, c-format msgid "%s: called with less than two arguments" -msgstr "orï¼šè°ƒç”¨æ—¶ä¼ é€’çš„å‚æ•°ä¸è¶³2个" +msgstr "%sï¼šè°ƒç”¨æ—¶ä¼ é€’çš„å‚æ•°ä¸è¶³2个" -#: builtin.c:3518 builtin.c:3549 builtin.c:3580 -#, fuzzy, c-format +#: builtin.c:3539 builtin.c:3570 builtin.c:3601 +#, c-format msgid "%s: argument %d is non-numeric" -msgstr "orï¼šå‚æ•° %d 䏿˜¯æ•°å€¼" +msgstr "%sï¼šå‚æ•° %d 䏿˜¯æ•°å€¼" -#: builtin.c:3522 builtin.c:3553 builtin.c:3584 +#: builtin.c:3543 builtin.c:3574 builtin.c:3605 #, fuzzy, c-format +#| msgid "%s: argument #%d negative value %Rg is not allowed" msgid "%s: argument %d negative value %g is not allowed" msgstr "%s:第 %d ä¸ªå‚æ•° %Rg ä¸èƒ½ä¸ºè´Ÿå€¼" -#: builtin.c:3611 +#: builtin.c:3632 #, c-format msgid "compl(%f): negative value is not allowed" msgstr "compl(%f):ä¸å…许使用负值" -#: builtin.c:3614 +#: builtin.c:3635 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f)ï¼šå°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" -#: builtin.c:3798 +#: builtin.c:3821 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext:“%sâ€ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„区域目录" -#: builtin.c:4022 mpfr.c:1203 +#: builtin.c:4048 mpfr.c:1261 msgid "intdiv: third argument is not an array" msgstr "intdivï¼šç¬¬ä¸‰ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: builtin.c:4041 mpfr.c:1252 +#: builtin.c:4067 mpfr.c:1310 msgid "intdiv: division by zero attempted" msgstr "intdiv:试图除0" -#: builtin.c:4080 +#: builtin.c:4106 msgid "typeof: second argument is not an array" msgstr "typeofï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: builtin.c:4152 -#, c-format +#: builtin.c:4178 +#, fuzzy, c-format +#| msgid "" +#| "typeof detected invalid flags combination `%s'; please file a bug report." msgid "" -"typeof detected invalid flags combination `%s'; please file a bug report." +"typeof detected invalid flags combination `%s'; please file a bug report" msgstr "typeof 函数å‘现一个无效的选项组åˆâ€œ%sâ€ï¼›è¯·å‘å¼€å‘者汇报此错误。" -#: builtin.c:4172 +#: builtin.c:4198 #, c-format msgid "typeof: invalid argument type `%s'" msgstr "typeofï¼šå‚æ•°ç±»åž‹â€œ%sâ€æ— æ•ˆ" -#: builtin.c:4176 +#: builtin.c:4202 #, c-format msgid "typeof: unknown argument type `%s'" msgstr "typeofï¼šå‚æ•°ç±»åž‹â€œ%sâ€æœªçŸ¥" @@ -969,418 +988,542 @@ #: cint_array.c:1268 cint_array.c:1296 #, c-format msgid "cannot add a new file (%.*s) to ARGV in sandbox mode" -msgstr "" +msgstr "无法在沙盒模å¼ä¸‹æ·»åŠ æ–°æ–‡ä»¶ï¼ˆ%.*s)至 ARGV" -#: command.y:227 -#, fuzzy, c-format +#: command.y:228 +#, c-format msgid "Type (g)awk statement(s). End with the command `end'\n" msgstr "输入 (g)awk 语å¥ï¼Œå¹¶ä»¥â€œendâ€å‘½ä»¤ç»“æŸ\n" -#: command.y:291 +#: command.y:292 #, c-format msgid "invalid frame number: %d" msgstr "层数无效:%d" -#: command.y:297 -#, fuzzy, c-format +#: command.y:298 +#, c-format msgid "info: invalid option - `%s'" msgstr "info:选项无效 - “%sâ€" -#: command.y:323 +#: command.y:324 #, fuzzy, c-format -msgid "source: `%s': already sourced." +#| msgid "source \"%s\": already sourced." +msgid "source: `%s': already sourced" msgstr "source \"%s\"ï¼šå·²ç»æ·»åŠ ã€‚" -#: command.y:328 +#: command.y:329 #, fuzzy, c-format -msgid "save: `%s': command not permitted." +#| msgid "save \"%s\": command not permitted." +msgid "save: `%s': command not permitted" msgstr "save \"%s\":ä¸å…许使用该命令。" -#: command.y:341 +#: command.y:342 #, fuzzy +#| msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgid "cannot use command `commands' for breakpoint/watchpoint commands" msgstr "无法对断点/监视点使用命令“commandsâ€" -#: command.y:343 +#: command.y:344 msgid "no breakpoint/watchpoint has been set yet" msgstr "尚未设置断点/监视点" -#: command.y:345 +#: command.y:346 msgid "invalid breakpoint/watchpoint number" msgstr "断点/ç›‘è§†ç‚¹ç¼–å·æ— æ•ˆ" -#: command.y:350 +#: command.y:351 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "当命中 %s %d 时,请输入命令,æ¯è¡Œä¸€å¥ã€‚\n" -#: command.y:352 -#, fuzzy, c-format +#: command.y:353 +#, c-format msgid "End with the command `end'\n" msgstr "以命令“endâ€ç»“æŸ\n" -#: command.y:359 +#: command.y:360 msgid "`end' valid only in command `commands' or `eval'" msgstr "“endâ€ä»…在命令“commandsâ€æˆ–“evalâ€ä¸­æœ‰æ•ˆ" -#: command.y:369 +#: command.y:370 msgid "`silent' valid only in command `commands'" msgstr "“silentâ€ä»…在命令“commandsâ€ä¸­æœ‰æ•ˆ" -#: command.y:375 -#, fuzzy, c-format +#: command.y:376 +#, c-format msgid "trace: invalid option - `%s'" msgstr "trace:选项无效 - “%sâ€" -#: command.y:389 +#: command.y:390 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition:断点/ç›‘è§†ç‚¹ç¼–å·æ— æ•ˆ" -#: command.y:451 +#: command.y:452 msgid "argument not a string" msgstr "傿•°ä¸æ˜¯å­—符串" -#: command.y:461 command.y:466 -#, fuzzy, c-format +#: command.y:462 command.y:467 +#, c-format msgid "option: invalid parameter - `%s'" msgstr "optionï¼šå‚æ•°æ— æ•ˆ - “%sâ€" -#: command.y:476 -#, fuzzy, c-format +#: command.y:477 +#, c-format msgid "no such function - `%s'" msgstr "函数ä¸å­˜åœ¨ - “%sâ€" -#: command.y:533 -#, fuzzy, c-format +#: command.y:534 +#, c-format msgid "enable: invalid option - `%s'" msgstr "enable:选项无效 - “%sâ€" -#: command.y:599 +#: command.y:600 #, c-format msgid "invalid range specification: %d - %d" msgstr "指定的范围无效:%d - %d" -#: command.y:661 +#: command.y:662 msgid "non-numeric value for field number" msgstr "字段编å·ä¸æ˜¯æ•°å€¼" -#: command.y:682 command.y:689 +#: command.y:683 command.y:690 msgid "non-numeric value found, numeric expected" msgstr "å‘çŽ°äº†éžæ•°å­—值,请æä¾›æ•°å€¼" -#: command.y:714 command.y:720 +#: command.y:715 command.y:721 msgid "non-zero integer value" msgstr "éžé›¶æ•´æ•°å€¼" -#: command.y:819 +#: command.y:820 +#, fuzzy +#| msgid "" +#| "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +#| "frames." msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames" msgstr "backtrace [N] - 显示所有或最近 N 层 (è‹¥ N < 0,则显示最远 N 层) 调用。" -#: command.y:821 +#: command.y:822 +#, fuzzy +#| msgid "" +#| "break [[filename:]N|function] - set breakpoint at the specified location." msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +"break [[filename:]N|function] - set breakpoint at the specified location" msgstr "break [[文件å:]N|函数] - 在指定处设置断点。" -#: command.y:823 -msgid "clear [[filename:]N|function] - delete breakpoints previously set." +#: command.y:824 +#, fuzzy +#| msgid "clear [[filename:]N|function] - delete breakpoints previously set." +msgid "clear [[filename:]N|function] - delete breakpoints previously set" msgstr "clear [[文件å:]N|函数] - 删除之å‰è®¾ç½®çš„æ–­ç‚¹ã€‚" -#: command.y:825 +#: command.y:826 +#, fuzzy +#| msgid "" +#| "commands [num] - starts a list of commands to be executed at a " +#| "breakpoint(watchpoint) hit." msgid "" "commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +"breakpoint(watchpoint) hit" msgstr "commands [ç¼–å·] - 在断点 (监视点) 处执行一系列命令。" -#: command.y:827 -msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." +#: command.y:828 +#, fuzzy +#| msgid "" +#| "condition num [expr] - set or clear breakpoint or watchpoint condition." +msgid "condition num [expr] - set or clear breakpoint or watchpoint condition" msgstr "condition ç¼–å· [表达å¼] - 设置或清除断点/监视点æ¡ä»¶ã€‚" -#: command.y:829 -msgid "continue [COUNT] - continue program being debugged." +#: command.y:830 +#, fuzzy +#| msgid "continue [COUNT] - continue program being debugged." +msgid "continue [COUNT] - continue program being debugged" msgstr "continue [次数] - ç»§ç»­è¿è¡Œæ‰€è°ƒè¯•的程åºã€‚" -#: command.y:831 -msgid "delete [breakpoints] [range] - delete specified breakpoints." +#: command.y:832 +#, fuzzy +#| msgid "delete [breakpoints] [range] - delete specified breakpoints." +msgid "delete [breakpoints] [range] - delete specified breakpoints" msgstr "delete [断点] [范围] - 删除指定断点。" -#: command.y:833 -msgid "disable [breakpoints] [range] - disable specified breakpoints." +#: command.y:834 +#, fuzzy +#| msgid "disable [breakpoints] [range] - disable specified breakpoints." +msgid "disable [breakpoints] [range] - disable specified breakpoints" msgstr "disable [断点] [范围] - ç¦ç”¨æŒ‡å®šæ–­ç‚¹ã€‚" -#: command.y:835 -msgid "display [var] - print value of variable each time the program stops." +#: command.y:836 +#, fuzzy +#| msgid "display [var] - print value of variable each time the program stops." +msgid "display [var] - print value of variable each time the program stops" msgstr "display [å˜é‡] - æ¯å½“程åºåœæ­¢æ—¶ï¼Œæ˜¾ç¤ºæŒ‡å®šå˜é‡çš„值。" -#: command.y:837 -msgid "down [N] - move N frames down the stack." +#: command.y:838 +#, fuzzy +#| msgid "down [N] - move N frames down the stack." +msgid "down [N] - move N frames down the stack" msgstr "down [N] - 在栈中å‘下移动 N 层。" -#: command.y:839 -msgid "dump [filename] - dump instructions to file or stdout." +#: command.y:840 +#, fuzzy +#| msgid "dump [filename] - dump instructions to file or stdout." +msgid "dump [filename] - dump instructions to file or stdout" msgstr "dump [文件å] - 将指令转储到文件或标准输出。" -#: command.y:841 -msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +#: command.y:842 +#, fuzzy +#| msgid "" +#| "enable [once|del] [breakpoints] [range] - enable specified breakpoints." +msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints" msgstr "enable [once|del] [断点] [范围] - å¯ç”¨æŒ‡å®šæ–­ç‚¹ã€‚" -#: command.y:843 -msgid "end - end a list of commands or awk statements." +#: command.y:844 +#, fuzzy +#| msgid "end - end a list of commands or awk statements." +msgid "end - end a list of commands or awk statements" msgstr "end - 结æŸä¸€ç³»åˆ—命令或 awk 语å¥ã€‚" -#: command.y:845 -msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +#: command.y:846 +#, fuzzy +#| msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." +msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)" msgstr "eval 语å¥|[p1, p2, ...] - 对 awk è¯­å¥æ±‚值。" -#: command.y:847 -msgid "exit - (same as quit) exit debugger." +#: command.y:848 +#, fuzzy +#| msgid "exit - (same as quit) exit debugger." +msgid "exit - (same as quit) exit debugger" msgstr "exit - (与 quit 相åŒï¼‰é€€å‡ºè°ƒè¯•器。" -#: command.y:849 -msgid "finish - execute until selected stack frame returns." +#: command.y:850 +#, fuzzy +#| msgid "finish - execute until selected stack frame returns." +msgid "finish - execute until selected stack frame returns" msgstr "finish - 执行到选定的栈层结æŸã€‚" -#: command.y:851 -msgid "frame [N] - select and print stack frame number N." +#: command.y:852 +#, fuzzy +#| msgid "frame [N] - select and print stack frame number N." +msgid "frame [N] - select and print stack frame number N" msgstr "frame [N] - 选定并显示栈的第 N 层。" -#: command.y:853 -msgid "help [command] - print list of commands or explanation of command." +#: command.y:854 +#, fuzzy +#| msgid "help [command] - print list of commands or explanation of command." +msgid "help [command] - print list of commands or explanation of command" msgstr "help [命令] - 显示命令列表,或有关命令的说明。" -#: command.y:855 -msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +#: command.y:856 +#, fuzzy +#| msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." +msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT" msgstr "ignore N 次数 - 设置忽略断点 N 的次数。" -#: command.y:857 +#: command.y:858 +#, fuzzy +#| msgid "" +#| "info topic - source|sources|variables|functions|break|frame|args|locals|" +#| "display|watch." msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +"display|watch" msgstr "" "info 主题 - 查看 info ä¿¡æ¯ï¼Œä¸»é¢˜å¯ä»¥ä¸º source|sources|variables|functions|" "break|frame|args|locals|display|watch。" -#: command.y:859 -msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +#: command.y:860 +#, fuzzy +#| msgid "" +#| "list [-|+|[filename:]lineno|function|range] - list specified line(s)." +msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)" msgstr "list [-|+|[文件å:]行å·|函数|范围] - 列出指定行。" -#: command.y:861 -msgid "next [COUNT] - step program, proceeding through subroutine calls." +#: command.y:862 +#, fuzzy +#| msgid "next [COUNT] - step program, proceeding through subroutine calls." +msgid "next [COUNT] - step program, proceeding through subroutine calls" msgstr "next [次数] - 啿­¥è¿è¡Œç¨‹åºï¼Œå¹¶ä¸”步过å­è°ƒç”¨ã€‚" -#: command.y:863 +#: command.y:864 +#, fuzzy +#| msgid "" +#| "nexti [COUNT] - step one instruction, but proceed through subroutine " +#| "calls." msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +"nexti [COUNT] - step one instruction, but proceed through subroutine calls" msgstr "nexti [次数] - å•è¿è¡Œä¸€æ­¥æŒ‡ä»¤ï¼Œä½†æ­¥è¿‡å…¶å­è°ƒç”¨ã€‚" -#: command.y:865 -msgid "option [name[=value]] - set or display debugger option(s)." +#: command.y:866 +#, fuzzy +#| msgid "option [name[=value]] - set or display debugger option(s)." +msgid "option [name[=value]] - set or display debugger option(s)" msgstr "option [åç§°[=值]] - 设置或显示调试器选项。" -#: command.y:867 -msgid "print var [var] - print value of a variable or array." +#: command.y:868 +#, fuzzy +#| msgid "print var [var] - print value of a variable or array." +msgid "print var [var] - print value of a variable or array" msgstr "print var [å˜é‡] - 显示å˜é‡æˆ–数组的值" -#: command.y:869 -msgid "printf format, [arg], ... - formatted output." +#: command.y:870 +#, fuzzy +#| msgid "printf format, [arg], ... - formatted output." +msgid "printf format, [arg], ... - formatted output" msgstr "printf æ ¼å¼, [傿•°], ... - æ ¼å¼åŒ–输出。" -#: command.y:871 -msgid "quit - exit debugger." +#: command.y:872 +#, fuzzy +#| msgid "quit - exit debugger." +msgid "quit - exit debugger" msgstr "quit - 退出调试器。" -#: command.y:873 -msgid "return [value] - make selected stack frame return to its caller." +#: command.y:874 +#, fuzzy +#| msgid "return [value] - make selected stack frame return to its caller." +msgid "return [value] - make selected stack frame return to its caller" msgstr "return [值] - 使选定的栈层返回到上层调用。" -#: command.y:875 -msgid "run - start or restart executing program." +#: command.y:876 +#, fuzzy +#| msgid "run - start or restart executing program." +msgid "run - start or restart executing program" msgstr "run - å¼€å§‹æˆ–é‡æ–°å¼€å§‹ç¨‹åºã€‚" -#: command.y:878 -msgid "save filename - save commands from the session to file." +#: command.y:879 +#, fuzzy +#| msgid "save filename - save commands from the session to file." +msgid "save filename - save commands from the session to file" msgstr "save 文件å - ä¿å­˜ä¼šè¯ä¸­çš„命令到文件。" -#: command.y:881 -msgid "set var = value - assign value to a scalar variable." +#: command.y:882 +#, fuzzy +#| msgid "set var = value - assign value to a scalar variable." +msgid "set var = value - assign value to a scalar variable" msgstr "set å˜é‡ = 值 - 给标é‡å˜é‡èµ‹å€¼ã€‚" -#: command.y:883 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +#: command.y:884 +#, fuzzy +#| msgid "" +#| "silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint" msgstr "silent - 在断点/监视点处中断时,éšè—常规消æ¯ã€‚" -#: command.y:885 -msgid "source file - execute commands from file." +#: command.y:886 +#, fuzzy +#| msgid "source file - execute commands from file." +msgid "source file - execute commands from file" msgstr "source 文件 - 执行指定文件中的命令。" -#: command.y:887 -msgid "step [COUNT] - step program until it reaches a different source line." +#: command.y:888 +#, fuzzy +#| msgid "" +#| "step [COUNT] - step program until it reaches a different source line." +msgid "step [COUNT] - step program until it reaches a different source line" msgstr "set [次数] - 啿­¥æ‰§è¡Œç¨‹åºï¼Œåœ¨æºæ–‡ä»¶ä¸­çš„下一行处暂åœã€‚" -#: command.y:889 -msgid "stepi [COUNT] - step one instruction exactly." +#: command.y:890 +#, fuzzy +#| msgid "stepi [COUNT] - step one instruction exactly." +msgid "stepi [COUNT] - step one instruction exactly" msgstr "stepi [次数] - 执行一步指令。" -#: command.y:891 -msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +#: command.y:892 +#, fuzzy +#| msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." +msgid "tbreak [[filename:]N|function] - set a temporary breakpoint" msgstr "tbreak [[文件å:]N|函数] - 设置一个临时断点。" -#: command.y:893 -msgid "trace on|off - print instruction before executing." +#: command.y:894 +#, fuzzy +#| msgid "trace on|off - print instruction before executing." +msgid "trace on|off - print instruction before executing" msgstr "trace on|off - æ‰§è¡Œå‰æ˜¾ç¤ºæŒ‡ä»¤ã€‚" -#: command.y:895 -msgid "undisplay [N] - remove variable(s) from automatic display list." +#: command.y:896 +#, fuzzy +#| msgid "undisplay [N] - remove variable(s) from automatic display list." +msgid "undisplay [N] - remove variable(s) from automatic display list" msgstr "undisplay [N] - 从自动显示列表中移除指定å˜é‡ã€‚" -#: command.y:897 +#: command.y:898 +#, fuzzy +#| msgid "" +#| "until [[filename:]N|function] - execute until program reaches a different " +#| "line or line N within current frame." msgid "" "until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +"line or line N within current frame" msgstr "until [[文件å:]N|函数] - 在当å‰å±‚中执行,在下一行或第 N 行处暂åœã€‚" -#: command.y:899 -msgid "unwatch [N] - remove variable(s) from watch list." +#: command.y:900 +#, fuzzy +#| msgid "unwatch [N] - remove variable(s) from watch list." +msgid "unwatch [N] - remove variable(s) from watch list" msgstr "unwatch [N] - 从监视列表中移除å˜é‡ã€‚" -#: command.y:901 -msgid "up [N] - move N frames up the stack." +#: command.y:902 +#, fuzzy +#| msgid "up [N] - move N frames up the stack." +msgid "up [N] - move N frames up the stack" msgstr "up [N] - 在栈中å‘上移动 N 层。" -#: command.y:903 -msgid "watch var - set a watchpoint for a variable." +#: command.y:904 +#, fuzzy +#| msgid "watch var - set a watchpoint for a variable." +msgid "watch var - set a watchpoint for a variable" msgstr "watch å˜é‡ - 为å˜é‡è®¾ç½®ç›‘视点。" -#: command.y:905 +#: command.y:906 +#, fuzzy +#| msgid "" +#| "where [N] - (same as backtrace) print trace of all or N innermost " +#| "(outermost if N < 0) frames." msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +"if N < 0) frames" msgstr "" "where [N] - (与backtrace相åŒ) 显示所有或最近 N 层 (è‹¥ N < 0,则显示最远 N " "层) 调用。" -#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:146 +#: command.y:1017 debug.c:423 gawkapi.c:251 msg.c:142 #, c-format msgid "error: " msgstr "错误:" -#: command.y:1060 -#, fuzzy, c-format +#: command.y:1061 +#, c-format msgid "cannot read command: %s\n" -msgstr "无法读å–命令 (%s)\n" +msgstr "无法读å–命令:%s\n" -#: command.y:1074 -#, fuzzy, c-format +#: command.y:1075 +#, c-format msgid "cannot read command: %s" -msgstr "无法读å–命令 (%s)" +msgstr "无法读å–命令:%s" -#: command.y:1125 +#: command.y:1126 msgid "invalid character in command" msgstr "命令中有无效的字符" -#: command.y:1161 -#, fuzzy, c-format +#: command.y:1162 +#, c-format msgid "unknown command - `%.*s', try help" msgstr "未知命令 - \"%.*s\",请查看帮助" -#: command.y:1231 +#: command.y:1232 #, c-format msgid "%s" msgstr "%s" -#: command.y:1293 +#: command.y:1294 msgid "invalid character" msgstr "字符无效" -#: command.y:1497 +#: command.y:1498 #, c-format msgid "undefined command: %s\n" msgstr "å˜é‡æœªå®šä¹‰ï¼š%s\n" #: debug.c:257 -msgid "set or show the number of lines to keep in history file." +#, fuzzy +#| msgid "set or show the number of lines to keep in history file." +msgid "set or show the number of lines to keep in history file" msgstr "设置或显示需è¦ä¿å­˜åœ¨åކ岿–‡ä»¶ä¸­çš„行的编å·ã€‚" #: debug.c:259 -msgid "set or show the list command window size." +#, fuzzy +#| msgid "set or show the list command window size." +msgid "set or show the list command window size" msgstr "设置或显示列表å¼å‘½ä»¤çª—å£å¤§å°ã€‚" #: debug.c:261 -msgid "set or show gawk output file." +#, fuzzy +#| msgid "set or show gawk output file." +msgid "set or show gawk output file" msgstr "设置或显示 gawk 输出文件。" #: debug.c:263 -msgid "set or show debugger prompt." +#, fuzzy +#| msgid "set or show debugger prompt." +msgid "set or show debugger prompt" msgstr "设置或显示调试器æç¤ºã€‚" #: debug.c:265 -msgid "(un)set or show saving of command history (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of command history (value=on|off)." +msgid "(un)set or show saving of command history (value=on|off)" msgstr "(å–æ¶ˆ)设置或显示ä¿å­˜çš„å‘½ä»¤åŽ†å² (值=on|off)。" #: debug.c:267 -msgid "(un)set or show saving of options (value=on|off)." +#, fuzzy +#| msgid "(un)set or show saving of options (value=on|off)." +msgid "(un)set or show saving of options (value=on|off)" msgstr "(å–æ¶ˆ)设置或显示ä¿å­˜çš„选项 (值=on|off)。" #: debug.c:269 -msgid "(un)set or show instruction tracing (value=on|off)." +#, fuzzy +#| msgid "(un)set or show instruction tracing (value=on|off)." +msgid "(un)set or show instruction tracing (value=on|off)" msgstr "(å–æ¶ˆ)设置或显示指令跟踪 (值=on|off)。" #: debug.c:358 -msgid "program not running." +#, fuzzy +#| msgid "program not running." +msgid "program not running" msgstr "ç¨‹åºæœªè¿è¡Œã€‚" -#: debug.c:466 +#: debug.c:475 #, c-format msgid "source file `%s' is empty.\n" msgstr "æºæ–‡ä»¶â€œ%sâ€ä¸ºç©ºã€‚\n" -#: debug.c:493 -msgid "no current source file." +#: debug.c:502 +#, fuzzy +#| msgid "no current source file." +msgid "no current source file" msgstr "当剿²¡æœ‰æºæ–‡ä»¶ã€‚" -#: debug.c:518 -#, fuzzy, c-format +#: debug.c:527 +#, c-format msgid "cannot find source file named `%s': %s" -msgstr "无法找到å为“%sâ€çš„æºæ–‡ä»¶ (%s)" +msgstr "无法找到å为“%sâ€çš„æºæ–‡ä»¶ï¼š%s" -#: debug.c:542 -#, c-format -msgid "WARNING: source file `%s' modified since program compilation.\n" +#: debug.c:551 +#, fuzzy, c-format +#| msgid "WARNING: source file `%s' modified since program compilation.\n" +msgid "warning: source file `%s' modified since program compilation.\n" msgstr "è­¦å‘Šï¼šæºæ–‡ä»¶â€œ%sâ€åœ¨ç¨‹åºç¼–译之åŽè¢«ä¿®æ”¹ã€‚\n" -#: debug.c:564 +#: debug.c:573 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "è¡Œå· %d 超出范围;“%sâ€ åªæœ‰ %d 行" -#: debug.c:624 +#: debug.c:633 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "æœªè¯»å–æ–‡ä»¶â€œ%sâ€é‡åˆ° EOF,于第 %d 行" -#: debug.c:633 +#: debug.c:642 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "æºæ–‡ä»¶â€œ%sâ€åœ¨ç¨‹åºæ‰§è¡Œä¹‹åŽè¢«ä¿®æ”¹ã€‚" -#: debug.c:745 +#: debug.c:754 #, c-format msgid "Current source file: %s\n" msgstr "当剿ºæ–‡ä»¶ï¼š %s\n" -#: debug.c:746 +#: debug.c:755 #, c-format msgid "Number of lines: %d\n" msgstr "行编å·ï¼š%d\n" -#: debug.c:753 +#: debug.c:762 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "æºæ–‡ä»¶ (行):%s (%d)\n" -#: debug.c:767 +#: debug.c:776 msgid "" "Number Disp Enabled Location\n" "\n" @@ -1388,54 +1531,55 @@ "ç¼–å· æ˜¾ç¤º å¯ç”¨ ä½ç½®\n" "\n" -#: debug.c:778 -#, c-format -msgid "\tno of hits = %ld\n" +#: debug.c:787 +#, fuzzy, c-format +#| msgid "\tno of hits = %ld\n" +msgid "\tnumber of hits = %ld\n" msgstr "\t命中次数 = %ld\n" -#: debug.c:780 +#: debug.c:789 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\t忽略åŽç»­ %ld 次命中\n" -#: debug.c:782 debug.c:922 +#: debug.c:791 debug.c:931 #, c-format msgid "\tstop condition: %s\n" msgstr "\tåœæ­¢æ¡ä»¶ï¼š%s\n" -#: debug.c:784 debug.c:924 +#: debug.c:793 debug.c:933 msgid "\tcommands:\n" msgstr "\t命令:\n" -#: debug.c:806 +#: debug.c:815 #, c-format msgid "Current frame: " msgstr "当å‰å±‚:" -#: debug.c:809 +#: debug.c:818 #, c-format msgid "Called by frame: " msgstr "调用层:" -#: debug.c:813 +#: debug.c:822 #, c-format msgid "Caller of frame: " msgstr "调用者:" -#: debug.c:831 +#: debug.c:840 #, c-format msgid "None in main().\n" msgstr "ä¸åœ¨ main() 中。\n" -#: debug.c:861 +#: debug.c:870 msgid "No arguments.\n" msgstr "æ²¡æœ‰å‚æ•°ã€‚\n" -#: debug.c:862 +#: debug.c:871 msgid "No locals.\n" msgstr "没有本地å˜é‡ã€‚\n" -#: debug.c:870 +#: debug.c:879 msgid "" "All defined variables:\n" "\n" @@ -1443,7 +1587,7 @@ "所有已定义的å˜é‡ï¼š\n" "\n" -#: debug.c:880 +#: debug.c:889 msgid "" "All defined functions:\n" "\n" @@ -1451,7 +1595,7 @@ "所有已定义的函数:\n" "\n" -#: debug.c:899 +#: debug.c:908 msgid "" "Auto-display variables:\n" "\n" @@ -1459,7 +1603,7 @@ "自动显示å˜é‡ï¼š\n" "\n" -#: debug.c:902 +#: debug.c:911 msgid "" "Watch variables:\n" "\n" @@ -1467,378 +1611,393 @@ "监视å˜é‡ï¼š\n" "\n" -#: debug.c:1042 +#: debug.c:1051 #, c-format msgid "no symbol `%s' in current context\n" msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­æ‰¾ä¸åˆ°ç¬¦å·â€œ%sâ€\n" -#: debug.c:1054 debug.c:1442 +#: debug.c:1063 debug.c:1451 #, c-format msgid "`%s' is not an array\n" msgstr "“%sâ€ä¸æ˜¯ä¸€ä¸ªæ•°ç»„\n" -#: debug.c:1068 +#: debug.c:1077 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = 未åˆå§‹åŒ–的字段\n" -#: debug.c:1089 +#: debug.c:1098 #, c-format msgid "array `%s' is empty\n" msgstr "数组“%sâ€ä¸ºç©º\n" -#: debug.c:1132 debug.c:1184 -#, c-format -msgid "[\"%.*s\"] not in array `%s'\n" +#: debug.c:1141 debug.c:1193 +#, fuzzy, c-format +#| msgid "[\"%.*s\"] not in array `%s'\n" +msgid "subscript \"%.*s\" is not in array `%s'\n" msgstr "[\"%.*s\"] ä¸åœ¨æ•°ç»„“%sâ€ä¸­\n" -#: debug.c:1188 +#: debug.c:1197 #, c-format msgid "`%s[\"%.*s\"]' is not an array\n" msgstr "“%s[\"%.*s\"]â€ä¸æ˜¯æ•°ç»„\n" -#: debug.c:1249 debug.c:5104 +#: debug.c:1258 debug.c:5115 #, c-format msgid "`%s' is not a scalar variable" msgstr "“%sâ€ä¸æ˜¯æ ‡é‡" -#: debug.c:1272 debug.c:5134 +#: debug.c:1281 debug.c:5145 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "试图在标é‡çŽ¯å¢ƒä¸­ä½¿ç”¨æ•°ç»„â€œ%s[\"%.*s\"]â€" -#: debug.c:1295 debug.c:5145 +#: debug.c:1304 debug.c:5156 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as array" msgstr "试图把标é‡â€œ%s[\"%.*s\"]â€å½“数组使用" -#: debug.c:1438 +#: debug.c:1447 #, c-format msgid "`%s' is a function" msgstr "“%sâ€æ˜¯ä¸€ä¸ªå‡½æ•°" -#: debug.c:1480 +#: debug.c:1489 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "断点 %d 为无æ¡ä»¶æ–­ç‚¹\n" -#: debug.c:1514 -#, c-format -msgid "No display item numbered %ld" +#: debug.c:1523 +#, fuzzy, c-format +#| msgid "No display item numbered %ld" +msgid "no display item numbered %ld" msgstr "没有编å·ä¸º %ld 的显示项目" -#: debug.c:1517 -#, c-format -msgid "No watch item numbered %ld" +#: debug.c:1526 +#, fuzzy, c-format +#| msgid "No watch item numbered %ld" +msgid "no watch item numbered %ld" msgstr "没有编å·ä¸º %ld 的监视项目" -#: debug.c:1543 -#, c-format -msgid "%d: [\"%.*s\"] not in array `%s'\n" +#: debug.c:1552 +#, fuzzy, c-format +#| msgid "%d: [\"%.*s\"] not in array `%s'\n" +msgid "%d: subscript \"%.*s\" is not in array `%s'\n" msgstr "%d:[\"%.*s\"] ä¸åœ¨æ•°ç»„“%sâ€ä¸­\n" -#: debug.c:1782 +#: debug.c:1791 msgid "attempt to use scalar value as array" msgstr "试图把标é‡å½“数组使用" -#: debug.c:1873 +#: debug.c:1882 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "断点 %d å·²è¢«åˆ é™¤ï¼Œå› ä¸ºå‚æ•°è¶…出范围。\n" -#: debug.c:1884 +#: debug.c:1893 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "显示 %d å·²è¢«åˆ é™¤ï¼Œå› ä¸ºå‚æ•°è¶…出范围。\n" -#: debug.c:1917 +#: debug.c:1926 #, c-format msgid " in file `%s', line %d\n" msgstr "于文件“%sâ€ï¼Œç¬¬ %d 行\n" -#: debug.c:1938 +#: debug.c:1947 #, c-format msgid " at `%s':%d" msgstr "于“%sâ€:%d" -#: debug.c:1954 debug.c:2017 +#: debug.c:1963 debug.c:2026 #, c-format msgid "#%ld\tin " msgstr "#%ld\t于 " -#: debug.c:1991 +#: debug.c:2000 #, c-format msgid "More stack frames follow ...\n" msgstr "更多栈层 ...\n" -#: debug.c:2034 +#: debug.c:2043 msgid "invalid frame number" msgstr "层数无效" -#: debug.c:2217 +#: debug.c:2226 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "注æ„:断点 %d (å·²å¯ç”¨ï¼Œå¿½ç•¥åŽç»­ %ld 次命中),也设置于 %s:%d" -#: debug.c:2224 +#: debug.c:2233 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "注æ„:断点 %d (å·²å¯ç”¨),也设置于 %s:%d" -#: debug.c:2231 +#: debug.c:2240 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "注æ„:断点 %d (å·²ç¦ç”¨ï¼Œå¿½ç•¥åŽç»­ %ld 次命中),也在 %s:%d 处设置" -#: debug.c:2238 +#: debug.c:2247 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "注æ„:断点 %d (å·²ç¦ç”¨),也设置于 %s:%d" -#: debug.c:2255 +#: debug.c:2264 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "断点 %d 设置于文件“%sâ€ï¼Œç¬¬ %d 行\n" -#: debug.c:2357 -#, fuzzy, c-format +#: debug.c:2366 +#, c-format msgid "cannot set breakpoint in file `%s'\n" msgstr "无法在文件“%sâ€ä¸­è®¾ç½®æ–­ç‚¹\n" -#: debug.c:2386 debug.c:2509 debug.c:3367 -#, c-format -msgid "line number %d in file `%s' out of range" +#: debug.c:2395 +#, fuzzy, c-format +#| msgid "line number %d in file `%s' out of range" +msgid "line number %d in file `%s' is out of range" msgstr "文件“%2$sâ€ä¸­çš„è¡Œå· %1$d 超出范围" -#: debug.c:2390 -#, fuzzy, c-format +#: debug.c:2399 +#, c-format msgid "internal error: cannot find rule\n" -msgstr "内部错误:%s 带有空的 vname" +msgstr "内部错误:找ä¸åˆ°è§„则\n" -#: debug.c:2392 -#, fuzzy, c-format +#: debug.c:2401 +#, c-format msgid "cannot set breakpoint at `%s':%d\n" msgstr "无法设置断点于“%sâ€:%d\n" -#: debug.c:2404 -#, fuzzy, c-format +#: debug.c:2413 +#, c-format msgid "cannot set breakpoint in function `%s'\n" msgstr "无法在函数“%sâ€ä¸­è®¾ç½®æ–­ç‚¹\n" -#: debug.c:2420 +#: debug.c:2431 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "设置于文件“%2$sâ€ï¼Œç¬¬ %1$d 行的断点 %3$d 为无æ¡ä»¶æ–­ç‚¹\n" -#: debug.c:2525 debug.c:2547 +#: debug.c:2520 debug.c:3378 +#, c-format +msgid "line number %d in file `%s' out of range" +msgstr "文件“%2$sâ€ä¸­çš„è¡Œå· %1$d 超出范围" + +#: debug.c:2536 debug.c:2558 #, c-format msgid "Deleted breakpoint %d" msgstr "已删除断点 %d" -#: debug.c:2531 +#: debug.c:2542 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "函数“%sâ€å…¥å£å¤„无断点\n" -#: debug.c:2558 +#: debug.c:2569 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "文件“%sâ€ç¬¬ #%d 行处无断点\n" -#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717 +#: debug.c:2624 debug.c:2665 debug.c:2685 debug.c:2728 msgid "invalid breakpoint number" msgstr "æ–­ç‚¹ç¼–å·æ— æ•ˆ" -#: debug.c:2629 +#: debug.c:2640 msgid "Delete all breakpoints? (y or n) " msgstr "删除所有断点å—?(y or n) " -#: debug.c:2630 debug.c:2940 debug.c:2993 +#: debug.c:2641 debug.c:2951 debug.c:3004 msgid "y" msgstr "y" -#: debug.c:2679 +#: debug.c:2690 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "将忽略åŽç»­ %ld 次命中断点 %d。\n" -#: debug.c:2683 +#: debug.c:2694 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "以åŽå‘½ä¸­æ–­ç‚¹ %d æ—¶å°†ä¼šåœæ­¢ã€‚\n" -#: debug.c:2800 +#: debug.c:2811 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "åªèƒ½è°ƒè¯•使用了“-fâ€é€‰é¡¹çš„程åºã€‚\n" -#: debug.c:2925 +#: debug.c:2936 #, c-format msgid "Failed to restart debugger" msgstr "é‡å¯è°ƒè¯•器失败" -#: debug.c:2939 +#: debug.c:2950 msgid "Program already running. Restart from beginning (y/n)? " msgstr "程åºå·²ç»åœ¨è¿è¡Œäº†ã€‚釿–°å¼€å§‹è¿è¡Œå—?(y/n) " -#: debug.c:2943 +#: debug.c:2954 #, c-format msgid "Program not restarted\n" msgstr "ç¨‹åºæœªé‡æ–°è¿è¡Œ\n" -#: debug.c:2953 +#: debug.c:2964 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "é”™è¯¯ï¼šæ— æ³•é‡æ–°è¿è¡Œï¼Œä¸å…许该æ“作\n" -#: debug.c:2959 +#: debug.c:2970 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "错误 (%s)ï¼šæ— æ³•é‡æ–°è¿è¡Œï¼Œå¿½ç•¥å‰©ä½™å‘½ä»¤\n" -#: debug.c:2967 -#, c-format -msgid "Starting program: \n" +#: debug.c:2978 +#, fuzzy, c-format +#| msgid "Starting program: \n" +msgid "Starting program:\n" msgstr "开始è¿è¡Œç¨‹åºï¼š\n" -#: debug.c:2977 +#: debug.c:2988 #, c-format msgid "Program exited abnormally with exit value: %d\n" msgstr "程åºå¼‚常退出,状æ€ç ï¼š%d\n" -#: debug.c:2978 +#: debug.c:2989 #, c-format msgid "Program exited normally with exit value: %d\n" msgstr "ç¨‹åºæ­£å¸¸é€€å‡ºï¼Œçжæ€ç ï¼š%d\n" -#: debug.c:2992 +#: debug.c:3003 msgid "The program is running. Exit anyway (y/n)? " msgstr "程åºå·²ç»åœ¨è¿è¡Œäº†ã€‚ä»ç„¶è¦é€€å‡ºå—?(y/n) " -#: debug.c:3027 +#: debug.c:3038 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "æœªåœ¨æ–­ç‚¹å¤„åœæ­¢ï¼›å·²å¿½ç•¥å‚数。\n" -#: debug.c:3032 -#, c-format -msgid "invalid breakpoint number %d." +#: debug.c:3043 +#, fuzzy, c-format +#| msgid "invalid breakpoint number %d." +msgid "invalid breakpoint number %d" msgstr "æ–­ç‚¹ç¼–å· %d 无效。" -#: debug.c:3037 +#: debug.c:3048 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "将忽略åŽç»­ %ld 次命中断点 %d。\n" -#: debug.c:3224 +#: debug.c:3235 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "“finishâ€å¯¹äºŽæœ€å¤–层的 main() æ¥è¯´æ— æ„义\n" -#: debug.c:3229 -#, c-format -msgid "Run till return from " +#: debug.c:3240 +#, fuzzy, c-format +#| msgid "Run till return from " +msgid "Run until return from " msgstr "è¿è¡Œç›´åˆ°è¿”回自 " -#: debug.c:3272 +#: debug.c:3283 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "“returnâ€å¯¹äºŽæœ€å¤–层的 main() æ¥è¯´æ— æ„义\n" -#: debug.c:3386 +#: debug.c:3397 #, fuzzy, c-format +#| msgid "Can't find specified location in function `%s'\n" msgid "cannot find specified location in function `%s'\n" msgstr "找ä¸åˆ°å‡½æ•°â€œ%sâ€ä¸­çš„æŒ‡å®šä½ç½®\n" -#: debug.c:3394 +#: debug.c:3405 #, c-format msgid "invalid source line %d in file `%s'" msgstr "æºä»£ç è¡Œå·â€œ%dâ€å¯¹äºŽæ–‡ä»¶â€œ%sâ€æ¥è¯´æ— æ•ˆ" -#: debug.c:3409 +#: debug.c:3420 #, fuzzy, c-format +#| msgid "Can't find specified location %d in file `%s'\n" msgid "cannot find specified location %d in file `%s'\n" msgstr "找ä¸åˆ°æ–‡ä»¶â€œ%2$sâ€ä¸­çš„æŒ‡å®šä½ç½® %1$d\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "element not in array\n" msgstr "元素ä¸åœ¨æ•°ç»„中\n" -#: debug.c:3441 +#: debug.c:3452 #, c-format msgid "untyped variable\n" msgstr "无类型å˜é‡\n" -#: debug.c:3483 +#: debug.c:3494 #, c-format msgid "Stopping in %s ...\n" msgstr "åœæ­¢äºŽ %s ...\n" -#: debug.c:3560 +#: debug.c:3571 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "“finishâ€å¯¹äºŽéžæœ¬åœ°è·³è½¬â€œ%sâ€æ¥è¯´æ— æ•ˆ\n" -#: debug.c:3567 +#: debug.c:3578 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "“untilâ€å¯¹äºŽéžæœ¬åœ°è·³è½¬â€œ%sâ€æ¥è¯´æ— æ•ˆ\n" #. TRANSLATORS: don't translate the 'q' inside the brackets. -#: debug.c:4324 -#, fuzzy +#: debug.c:4335 msgid "\t------[Enter] to continue or [q] + [Enter] to quit------" -msgstr "\t------ 按 [Enter] 继续,按 q [Enter] 退出 ------" +msgstr "\t------ 按 [Enter] 继续,按 [q] + [Enter] 退出 ------" -#: debug.c:5141 +#: debug.c:5152 #, c-format msgid "[\"%.*s\"] not in array `%s'" msgstr "[\"%.*s\"] ä¸åœ¨æ•°ç»„“%sâ€ä¸­" -#: debug.c:5347 +#: debug.c:5358 #, c-format msgid "sending output to stdout\n" msgstr "输出到标准输出\n" -#: debug.c:5387 +#: debug.c:5398 msgid "invalid number" msgstr "ç¼–å·æ— æ•ˆ" -#: debug.c:5521 +#: debug.c:5532 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­ä¸å…许“%sâ€ï¼›è¯­å¥å·²å¿½ç•¥" -#: debug.c:5529 +#: debug.c:5540 msgid "`return' not allowed in current context; statement ignored" msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­ä¸å…许“%sâ€ï¼›è¯­å¥å·²å¿½ç•¥" -#: debug.c:5753 -#, c-format -msgid "No symbol `%s' in current context" -msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­æ‰¾ä¸åˆ°ç¬¦å·â€œ%sâ€" +#: debug.c:5764 +#, fuzzy, c-format +#| msgid "no symbol `%s' in current context\n" +msgid "no symbol `%s' in current context" +msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­æ‰¾ä¸åˆ°ç¬¦å·â€œ%sâ€\n" -#: eval.c:401 +#: eval.c:403 #, c-format msgid "unknown nodetype %d" msgstr "未知的结点类型 %d" -#: eval.c:412 eval.c:428 +#: eval.c:414 eval.c:430 #, c-format msgid "unknown opcode %d" msgstr "未知的æ“ä½œç  %d" -#: eval.c:425 +#: eval.c:427 #, c-format msgid "opcode %s not an operator or keyword" msgstr "æ“ä½œç  %s 䏿˜¯æ“作符或关键字" -#: eval.c:483 +#: eval.c:485 msgid "buffer overflow in genflags2str" msgstr "genflags2str 时缓冲区溢出" -#: eval.c:685 +#: eval.c:689 #, c-format msgid "" "\n" @@ -1849,71 +2008,71 @@ "\t# 函数调用栈:\n" "\n" -#: eval.c:711 +#: eval.c:715 msgid "`IGNORECASE' is a gawk extension" msgstr "“IGNORECASEâ€æ˜¯ gawk 扩展" -#: eval.c:732 +#: eval.c:736 msgid "`BINMODE' is a gawk extension" msgstr "“BINMODEâ€æ˜¯ gawk 扩展" -#: eval.c:789 +#: eval.c:793 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE 值 “%sâ€ éžæ³•,按 3 处ç†" -#: eval.c:912 +#: eval.c:916 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "错误的“%sFMTâ€å®žçŽ°â€œ%sâ€" -#: eval.c:982 +#: eval.c:986 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "由于对“LINTâ€èµ‹å€¼æ‰€ä»¥å…³é—­â€œ--lintâ€" -#: eval.c:1176 +#: eval.c:1180 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "引用未åˆå§‹åŒ–çš„å‚æ•°â€œ%sâ€" -#: eval.c:1177 +#: eval.c:1181 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "引用未åˆå§‹åŒ–çš„å˜é‡â€œ%sâ€" -#: eval.c:1195 +#: eval.c:1199 msgid "attempt to field reference from non-numeric value" msgstr "è¯•å›¾ä»Žéžæ•°å€¼å¼•用字段编å·" -#: eval.c:1197 +#: eval.c:1201 msgid "attempt to field reference from null string" msgstr "试图从空字符串引用字段编å·" -#: eval.c:1205 +#: eval.c:1209 #, c-format msgid "attempt to access field %ld" msgstr "试图访问字段 %ld" -#: eval.c:1214 +#: eval.c:1218 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "引用未åˆå§‹åŒ–的字段“$%ldâ€" -#: eval.c:1278 +#: eval.c:1282 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "函数“%sâ€è¢«è°ƒç”¨æ—¶æä¾›äº†æ¯”å£°æ˜Žæ—¶æ›´å¤šçš„å‚æ•°" -#: eval.c:1475 +#: eval.c:1486 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack:未预期的类型“%sâ€" -#: eval.c:1568 +#: eval.c:1579 msgid "division by zero attempted in `/='" msgstr "在“/=â€ä¸­è¯•图除0" -#: eval.c:1575 +#: eval.c:1586 #, c-format msgid "division by zero attempted in `%%='" msgstr "在“%%=â€ä¸­è¯•图除0" @@ -1931,17 +2090,20 @@ msgstr "load_ext:收到空 lib_name" #: ext.c:60 -#, fuzzy, c-format +#, c-format msgid "load_ext: cannot open library `%s': %s" -msgstr "load_ext:无法打开库“%sâ€(%s)" +msgstr "load_ext:无法打开库“%sâ€ï¼š%s" #: ext.c:66 #, fuzzy, c-format +#| msgid "" +#| "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible': %s" msgstr "load_ext:库“%sâ€ï¼šæœªå®šä¹‰â€œplugin_is_GPL_compatibleâ€(%s)" #: ext.c:72 #, fuzzy, c-format +#| msgid "load_ext: library `%s': cannot call function `%s' (%s)" msgid "load_ext: library `%s': cannot call function `%s': %s" msgstr "load_ext:库“%sâ€ï¼šæ— æ³•调用函数“%sâ€(%s)" @@ -1955,17 +2117,17 @@ msgstr "make_builtin:缺少函数å" #: ext.c:100 ext.c:111 -#, fuzzy, c-format +#, c-format msgid "make_builtin: cannot use gawk built-in `%s' as function name" msgstr "make_builtin:无法使用 gawk 内置的 “%s†作为函数å" #: ext.c:109 -#, fuzzy, c-format +#, c-format msgid "make_builtin: cannot use gawk built-in `%s' as namespace name" -msgstr "make_builtin:无法使用 gawk 内置的 “%s†作为命å空间" +msgstr "make_builtin:无法使用 gawk 内置的 “%s†作为命å空间åç§°" #: ext.c:126 -#, fuzzy, c-format +#, c-format msgid "make_builtin: cannot redefine function `%s'" msgstr "make_builtin:无法é‡å®šä¹‰å‡½æ•°â€œ%sâ€" @@ -1995,88 +2157,81 @@ msgstr "函数“%sâ€ï¼šç¬¬ %d ä¸ªå‚æ•°ï¼šè¯•图把数组当标é‡ä½¿ç”¨" #: ext.c:232 -#, fuzzy msgid "dynamic loading of libraries is not supported" msgstr "䏿”¯æŒåЍæ€åŠ è½½åº“" -#: extension/filefuncs.c:442 +#: extension/filefuncs.c:446 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat:无法读å–符å·é“¾æŽ¥â€%s“" -#: extension/filefuncs.c:475 -#, fuzzy +#: extension/filefuncs.c:479 msgid "stat: first argument is not a string" -msgstr "do_writeaï¼šå‚æ•° 0 䏿˜¯å­—符串\n" +msgstr "statï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯å­—符串" -#: extension/filefuncs.c:480 -#, fuzzy +#: extension/filefuncs.c:484 msgid "stat: second argument is not an array" -msgstr "splitï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +msgstr "statï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: extension/filefuncs.c:524 +#: extension/filefuncs.c:528 msgid "stat: bad parameters" msgstr "statï¼šå‚æ•°æœ‰è¯¯" -#: extension/filefuncs.c:589 +#: extension/filefuncs.c:594 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init:无法创建å˜é‡ %s" -#: extension/filefuncs.c:610 +#: extension/filefuncs.c:615 msgid "fts is not supported on this system" msgstr "è¯¥ç³»ç»Ÿä¸æ”¯æŒ fts" -#: extension/filefuncs.c:629 -#, fuzzy +#: extension/filefuncs.c:634 msgid "fill_stat_element: could not create array, out of memory" -msgstr "fill_stat_element:无法创建数组" +msgstr "fill_stat_element:无法创建数组,内存耗尽" -#: extension/filefuncs.c:638 +#: extension/filefuncs.c:643 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element:无法设置元素" -#: extension/filefuncs.c:653 +#: extension/filefuncs.c:658 msgid "fill_path_element: could not set element" msgstr "fill_path_element:无法设置元素" -#: extension/filefuncs.c:669 +#: extension/filefuncs.c:674 msgid "fill_error_element: could not set element" msgstr "fill_error_element:无法设置元素" -#: extension/filefuncs.c:721 extension/filefuncs.c:768 +#: extension/filefuncs.c:726 extension/filefuncs.c:773 msgid "fts-process: could not create array" msgstr "fts-process:无法创建数组" -#: extension/filefuncs.c:731 extension/filefuncs.c:778 -#: extension/filefuncs.c:796 +#: extension/filefuncs.c:736 extension/filefuncs.c:783 +#: extension/filefuncs.c:801 msgid "fts-process: could not set element" msgstr "fts-process:无法设置元素" -#: extension/filefuncs.c:845 +#: extension/filefuncs.c:850 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "ftsï¼šè°ƒç”¨æ—¶çš„å‚æ•°ä¸ªæ•°æœ‰è¯¯ï¼Œåº”为 3 个" -#: extension/filefuncs.c:848 -#, fuzzy +#: extension/filefuncs.c:853 msgid "fts: first argument is not an array" -msgstr "asortï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +msgstr "ftsï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: extension/filefuncs.c:854 -#, fuzzy +#: extension/filefuncs.c:859 msgid "fts: second argument is not a number" -msgstr "splitï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +msgstr "ftsï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: extension/filefuncs.c:860 -#, fuzzy +#: extension/filefuncs.c:865 msgid "fts: third argument is not an array" -msgstr "matchï¼šç¬¬ä¸‰ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +msgstr "ftsï¼šç¬¬ä¸‰ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: extension/filefuncs.c:867 +#: extension/filefuncs.c:872 msgid "fts: could not flatten array\n" msgstr "fts:无法展开数组\n" -#: extension/filefuncs.c:885 +#: extension/filefuncs.c:890 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts:忽略猥ççš„ FTS_NOSTAT 标志。嘿嘿嘿。" @@ -2205,16 +2360,14 @@ msgstr "inplace::end:rename(“%sâ€, “%sâ€) 失败 (%s)" #: extension/ordchr.c:72 -#, fuzzy msgid "ord: first argument is not a string" -msgstr "do_readaï¼šå‚æ•° 0 䏿˜¯å­—符串\n" +msgstr "ordï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯å­—符串" #: extension/ordchr.c:99 -#, fuzzy msgid "chr: first argument is not a number" -msgstr "asortï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +msgstr "chrï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: extension/readdir.c:273 +#: extension/readdir.c:277 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of:opendir/fdopendir 失败:%s" @@ -2228,22 +2381,22 @@ msgstr "revoutput:无法åˆå§‹åŒ– REVOUT å˜é‡" #: extension/rwarray.c:119 -#, fuzzy msgid "do_writea: first argument is not a string" -msgstr "do_writeaï¼šå‚æ•° 0 䏿˜¯å­—符串\n" +msgstr "do_writeaï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯å­—符串" #: extension/rwarray.c:125 -#, fuzzy msgid "do_writea: second argument is not an array" -msgstr "do_writeaï¼šå‚æ•° 1 䏿˜¯æ•°ç»„\n" +msgstr "do_writeaï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" #: extension/rwarray.c:172 extension/rwarray0.c:167 #, fuzzy +#| msgid "write_array: could not flatten array\n" msgid "write_array: could not flatten array" msgstr "write_array:无法展开数组\n" #: extension/rwarray.c:188 extension/rwarray0.c:181 #, fuzzy +#| msgid "write_array: could not release flattened array\n" msgid "write_array: could not release flattened array" msgstr "write_array:无法释放展开的数组\n" @@ -2253,24 +2406,20 @@ msgstr "数组的值的类型未知:%d" #: extension/rwarray.c:292 -#, fuzzy msgid "do_reada: first argument is not a string" -msgstr "do_readaï¼šå‚æ•° 0 䏿˜¯å­—符串\n" +msgstr "do_readaï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯å­—符串" #: extension/rwarray.c:298 -#, fuzzy msgid "do_reada: second argument is not an array" -msgstr "do_readaï¼šå‚æ•° 1 䏿˜¯å­—数组\n" +msgstr "do_readaï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" #: extension/rwarray.c:342 extension/rwarray0.c:317 -#, fuzzy msgid "do_reada: clear_array failed" -msgstr "do_reada:clear_array 失败\n" +msgstr "do_reada:clear_array 失败" #: extension/rwarray.c:379 extension/rwarray0.c:353 -#, fuzzy msgid "read_array: set_array_element failed" -msgstr "read_array:set_array_element 失败\n" +msgstr "read_array:set_array_element 失败" #: extension/rwarray.c:489 #, c-format @@ -2278,24 +2427,20 @@ msgstr "将未知类型(%d)的æ¢å¤å€¼å½“作字符串æ¥å¤„ç†" #: extension/rwarray0.c:114 -#, fuzzy msgid "do_writea: argument 0 is not a string" -msgstr "do_writeaï¼šå‚æ•° 0 䏿˜¯å­—符串\n" +msgstr "do_writeaï¼šå‚æ•° 0 䏿˜¯å­—符串" #: extension/rwarray0.c:120 -#, fuzzy msgid "do_writea: argument 1 is not an array" -msgstr "do_writeaï¼šå‚æ•° 1 䏿˜¯æ•°ç»„\n" +msgstr "do_writeaï¼šå‚æ•° 1 䏿˜¯æ•°ç»„" #: extension/rwarray0.c:267 -#, fuzzy msgid "do_reada: argument 0 is not a string" -msgstr "do_readaï¼šå‚æ•° 0 䏿˜¯å­—符串\n" +msgstr "do_readaï¼šå‚æ•° 0 䏿˜¯å­—符串" #: extension/rwarray0.c:273 -#, fuzzy msgid "do_reada: argument 1 is not an array" -msgstr "do_readaï¼šå‚æ•° 1 䏿˜¯å­—数组\n" +msgstr "do_readaï¼šå‚æ•° 1 䏿˜¯å­—数组" #: extension/time.c:141 msgid "gettimeofday: not supported on this platform" @@ -2313,169 +2458,181 @@ msgid "sleep: not supported on this platform" msgstr "sleep:ä¸è¢«æ­¤å¹³å°æ”¯æŒ" -#: field.c:284 +#: field.c:287 msgid "input record too large" msgstr "输入的记录太长" -#: field.c:400 +#: field.c:408 msgid "NF set to negative value" msgstr "NF 被设置为负值" -#: field.c:405 +#: field.c:413 msgid "decrementing NF is not portable to many awk versions" msgstr "é™åº NF 无法被大多数 awk 所兼容" -#: field.c:853 +#: field.c:861 msgid "accessing fields from an END rule may not be portable" msgstr "å…¶ä»– awk å¯èƒ½ä¸æ”¯æŒä½¿ç”¨ END " -#: field.c:978 field.c:985 +#: field.c:986 field.c:995 msgid "split: fourth argument is a gawk extension" msgstr "splitï¼šç¬¬å››ä¸ªå‚æ•°æ˜¯ gawk 扩展" -#: field.c:982 +#: field.c:990 msgid "split: fourth argument is not an array" msgstr "splitï¼šç¬¬å››ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: field.c:992 +#: field.c:992 field.c:1089 +#, fuzzy, c-format +#| msgid "%s: cannot use a subarray of second argument for first argument" +msgid "%s: cannot use %s as fourth argument" +msgstr "%sï¼šæ— æ³•å°†ç¬¬äºŒä¸ªå‚æ•°çš„å­æ•°ç»„ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°" + +#: field.c:1002 msgid "split: second argument is not an array" msgstr "splitï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: field.c:996 +#: field.c:1008 msgid "split: cannot use the same array for second and fourth args" msgstr "split:无法将åŒä¸€ä¸ªæ•°ç»„ç”¨äºŽç¬¬äºŒå’Œç¬¬å››ä¸ªå‚æ•°" -#: field.c:1001 +#: field.c:1013 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "splitï¼šæ— æ³•å°†ç¬¬äºŒä¸ªå‚æ•°çš„å­æ•°ç»„ç”¨äºŽç¬¬å››ä¸ªå‚æ•°" -#: field.c:1004 +#: field.c:1016 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "splitï¼šæ— æ³•å°†ç¬¬å››ä¸ªå‚æ•°çš„å­æ•°ç»„ç”¨äºŽç¬¬äºŒä¸ªå‚æ•°" -#: field.c:1038 +#: field.c:1050 msgid "split: null string for third arg is a non-standard extension" msgstr "splitï¼šç¬¬ä¸‰ä¸ªå‚æ•°ä¸ºç©ºå­—符串:其他 awk å¯èƒ½ä¸æ”¯æŒè¿™ä¸€ç‰¹æ€§" -#: field.c:1075 +#: field.c:1087 msgid "patsplit: fourth argument is not an array" msgstr "patsplitï¼šç¬¬å››ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: field.c:1080 +#: field.c:1094 msgid "patsplit: second argument is not an array" msgstr "patsplitï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#: field.c:1089 +#: field.c:1105 msgid "patsplit: third argument must be non-null" msgstr "patsplitï¼šç¬¬ä¸‰ä¸ªå‚æ•°å¿…é¡»ä¸ä¸ºç©º" -#: field.c:1093 +#: field.c:1109 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit:无法将åŒä¸€ä¸ªæ•°ç»„ç”¨äºŽç¬¬äºŒå’Œç¬¬å››ä¸ªå‚æ•°" -#: field.c:1098 +#: field.c:1114 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplitï¼šæ— æ³•å°†ç¬¬äºŒä¸ªå‚æ•°çš„å­æ•°ç»„ç”¨äºŽç¬¬å››ä¸ªå‚æ•°" -#: field.c:1101 +#: field.c:1117 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplitï¼šæ— æ³•å°†ç¬¬å››ä¸ªå‚æ•°çš„å­æ•°ç»„ç”¨äºŽç¬¬äºŒä¸ªå‚æ•°" -#: field.c:1151 +#: field.c:1167 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "“FIELDWIDTHSâ€æ˜¯ gawk 扩展" -#: field.c:1220 +#: field.c:1236 msgid "`*' must be the last designator in FIELDWIDTHS" msgstr "FIELDWIDTHS中的“*â€å¿…é¡»ä½äºŽæ‰€æœ‰é€šé…符的末尾" -#: field.c:1241 +#: field.c:1257 #, c-format msgid "invalid FIELDWIDTHS value, for field %d, near `%s'" msgstr "第 %d 字段中的 FIELDWIDTHS 值无效(ä½äºŽâ€œ%sâ€é™„近)" -#: field.c:1314 +#: field.c:1330 msgid "null string for `FS' is a gawk extension" msgstr "给“FSâ€ä¼ é€’了空字符串,应为 gawk 扩展" -#: field.c:1318 +#: field.c:1334 msgid "old awk does not support regexps as value of `FS'" msgstr "è€ awk 䏿”¯æŒæŠŠâ€œFSâ€è®¾ç½®ä¸ºæ­£åˆ™è¡¨è¾¾å¼" -#: field.c:1444 +#: field.c:1460 msgid "`FPAT' is a gawk extension" msgstr "“FPATâ€æ˜¯ gawk 扩展" -#: gawkapi.c:161 +#: gawkapi.c:154 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node:返回值为空" -#: gawkapi.c:178 gawkapi.c:189 +#: gawkapi.c:171 gawkapi.c:182 msgid "awk_value_to_node: not in MPFR mode" msgstr "awk_value_to_node:ä¸åœ¨ MPFR 模å¼ä¸­" -#: gawkapi.c:183 gawkapi.c:194 +#: gawkapi.c:176 gawkapi.c:186 msgid "awk_value_to_node: MPFR not supported" msgstr "awk_value_to_nodeï¼šä¸æ”¯æŒ MPFR 模å¼" -#: gawkapi.c:198 +#: gawkapi.c:190 #, c-format msgid "awk_value_to_node: invalid number type `%d'" msgstr "awk_value_to_node:数值类型“%dâ€æ— æ•ˆ" -#: gawkapi.c:385 +#: gawkapi.c:377 msgid "add_ext_func: received NULL name_space parameter" msgstr "add_ext_func:name_space 傿•°ä¸ºç©º" -#: gawkapi.c:523 -#, c-format +#: gawkapi.c:515 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value: detected invalid numeric flags combination `%s'; " +#| "please file a bug report." msgid "" "node_to_awk_value: detected invalid numeric flags combination `%s'; please " -"file a bug report." +"file a bug report" msgstr "node_to_awk_value:å‘现一个无效的选项组åˆâ€œ%sâ€ï¼›è¯·å‘å¼€å‘者汇报此错误。" -#: gawkapi.c:551 +#: gawkapi.c:543 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value:结点为空" -#: gawkapi.c:554 +#: gawkapi.c:546 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value:值为空" -#: gawkapi.c:610 gawkapi.c:644 gawkapi.c:671 gawkapi.c:704 -#, c-format +#: gawkapi.c:602 gawkapi.c:636 gawkapi.c:663 gawkapi.c:696 +#, fuzzy, c-format +#| msgid "" +#| "node_to_awk_value detected invalid flags combination `%s'; please file a " +#| "bug report." msgid "" "node_to_awk_value detected invalid flags combination `%s'; please file a bug " -"report." +"report" msgstr "node_to_awk_value å‘现了一个无效的选项组åˆâ€œ%sâ€ï¼›è¯·å‘å¼€å‘者汇报此错误。" -#: gawkapi.c:1082 +#: gawkapi.c:1074 msgid "remove_element: received null array" msgstr "remove_element:数组为空" -#: gawkapi.c:1085 +#: gawkapi.c:1077 msgid "remove_element: received null subscript" msgstr "remove_element:下标为空" -#: gawkapi.c:1217 +#: gawkapi.c:1209 #, c-format msgid "api_flatten_array_typed: could not convert index %d to %s" msgstr "api_flatten_array_typed:无法将索引 %d 转æ¢ä¸º %s" -#: gawkapi.c:1222 +#: gawkapi.c:1214 #, c-format msgid "api_flatten_array_typed: could not convert value %d to %s" msgstr "api_flatten_array_typed:无法将索引 %d 转æ¢ä¸º %s" -#: gawkapi.c:1318 gawkapi.c:1334 +#: gawkapi.c:1310 gawkapi.c:1327 msgid "api_get_mpfr: MPFR not supported" msgstr "api_get_mpfrï¼šä¸æ”¯æŒ MPFR 模å¼" -#: gawkapi.c:1365 +#: gawkapi.c:1358 msgid "cannot find end of BEGINFILE rule" msgstr "找ä¸åˆ° BEGINFILE 规则的结æŸä½ç½®" -#: gawkapi.c:1419 +#: gawkapi.c:1412 #, c-format msgid "cannot open unrecognized file type `%s' for `%s'" msgstr "无法打开未知文件类型(%s)的“%sâ€" @@ -2485,526 +2642,600 @@ msgid "command line argument `%s' is a directory: skipped" msgstr "å‘½ä»¤è¡Œå‚æ•°â€œ%sâ€ä¸ºç›®å½•;已跳过" -#: io.c:429 io.c:546 -#, fuzzy, c-format +#: io.c:429 io.c:543 +#, c-format msgid "cannot open file `%s' for reading: %s" -msgstr "æ— æ³•ä»¥è¯»æ¨¡å¼æ‰“开文件“%sâ€(%s)" +msgstr "无法打开文件“%sâ€è¿›è¡Œè¯»å–:%s" -#: io.c:675 -#, fuzzy, c-format +#: io.c:672 +#, c-format msgid "close of fd %d (`%s') failed: %s" -msgstr "å…³é—­æ–‡ä»¶å· %d (“%sâ€)失败(%s)" +msgstr "关闭文件æè¿°ç¬¦ %d (“%sâ€)失败:%s" -#: io.c:753 +#: io.c:744 +#, c-format +msgid "`%.*s' used for input file and for output file" +msgstr "" + +#: io.c:746 +#, c-format +msgid "`%.*s' used for input file and input pipe" +msgstr "" + +#: io.c:748 +#, c-format +msgid "`%.*s' used for input file and two-way pipe" +msgstr "" + +#: io.c:750 +#, c-format +msgid "`%.*s' used for input file and output pipe" +msgstr "" + +#: io.c:752 +#, c-format +msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" +msgstr "在文件“%.*sâ€ä¸­ä¸å¿…è¦çš„æ··åˆä½¿ç”¨â€œ>â€å’Œâ€œ>>â€" + +#: io.c:754 +#, c-format +msgid "`%.*s' used for input pipe and output file" +msgstr "" + +#: io.c:756 +#, c-format +msgid "`%.*s' used for output file and output pipe" +msgstr "" + +#: io.c:758 +#, c-format +msgid "`%.*s' used for output file and two-way pipe" +msgstr "" + +#: io.c:760 +#, c-format +msgid "`%.*s' used for input pipe and output pipe" +msgstr "" + +#: io.c:762 +#, c-format +msgid "`%.*s' used for input pipe and two-way pipe" +msgstr "" + +#: io.c:764 +#, c-format +msgid "`%.*s' used for output pipe and two-way pipe" +msgstr "" + +#: io.c:813 msgid "redirection not allowed in sandbox mode" msgstr "沙箱模å¼ä¸­ä¸å…许使用é‡å®šå‘" -#: io.c:787 +#: io.c:847 #, c-format msgid "expression in `%s' redirection is a number" msgstr "“%sâ€é‡å®šå‘中的表达å¼ä¸­åªæœ‰ä¸ªæ•°å­—" -#: io.c:791 +#: io.c:851 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "“%sâ€é‡å®šå‘ä¸­çš„è¡¨è¾¾å¼æ˜¯ç©ºå­—符串" -#: io.c:796 +#: io.c:856 #, c-format msgid "" "filename `%.*s' for `%s' redirection may be result of logical expression" msgstr "“%3$sâ€é‡å®šå‘中的文件å“%2$.*1$sâ€å¯èƒ½æ˜¯é€»è¾‘表达å¼çš„结果" -#: io.c:844 -#, c-format -msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "在文件“%.*sâ€ä¸­ä¸å¿…è¦çš„æ··åˆä½¿ç”¨â€œ>â€å’Œâ€œ>>â€" - -#: io.c:896 io.c:921 +#: io.c:953 io.c:978 #, c-format msgid "get_file cannot create pipe `%s' with fd %d" msgstr "get_file 无法创建文件æè¿°ç¬¦ä¸º %2$d 的管é““%1$sâ€" -#: io.c:911 -#, fuzzy, c-format +#: io.c:968 +#, c-format msgid "cannot open pipe `%s' for output: %s" -msgstr "无法为输出打开管é““%sâ€(%s)" +msgstr "无法为输出打开管é““%sâ€ï¼š%s" -#: io.c:926 -#, fuzzy, c-format +#: io.c:983 +#, c-format msgid "cannot open pipe `%s' for input: %s" -msgstr "无法为输入打开管é““%sâ€(%s)" +msgstr "无法为输入打开管é““%sâ€ï¼š%s" -#: io.c:950 +#: io.c:1007 #, c-format msgid "" "get_file socket creation not supported on this platform for `%s' with fd %d" msgstr "此平å°ä¸æ”¯æŒä½¿ç”¨ get_file 创建文件æè¿°ç¬¦ä¸º %2$d 的套接字“%1$sâ€" -#: io.c:961 +#: io.c:1018 #, fuzzy, c-format +#| msgid "can't open two way pipe `%s' for input/output (%s)" msgid "cannot open two way pipe `%s' for input/output: %s" msgstr "无法为输入/输出打开åŒå‘管é““%sâ€(%s)" -#: io.c:1048 +#: io.c:1105 #, fuzzy, c-format +#| msgid "can't redirect from `%s' (%s)" msgid "cannot redirect from `%s': %s" msgstr "无法自“%sâ€é‡å®šå‘(%s)" -#: io.c:1051 +#: io.c:1108 #, fuzzy, c-format +#| msgid "can't redirect to `%s' (%s)" msgid "cannot redirect to `%s': %s" msgstr "无法é‡å®šå‘到“%sâ€(%s)" -#: io.c:1153 +#: io.c:1210 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "打开的文件数达到系统é™åˆ¶ï¼šå¼€å§‹å¤ç”¨æ–‡ä»¶æè¿°ç¬¦" -#: io.c:1169 +#: io.c:1226 #, fuzzy, c-format -msgid "close of `%s' failed: %s." -msgstr "关闭“%sâ€å¤±è´¥(%s)。" +#| msgid "close of `%s' failed: %s." +msgid "close of `%s' failed: %s" +msgstr "关闭“%sâ€å¤±è´¥ï¼š%s。" -#: io.c:1177 +#: io.c:1234 msgid "too many pipes or input files open" msgstr "æ‰“å¼€è¿‡å¤šç®¡é“æˆ–输入文件" -#: io.c:1203 +#: io.c:1260 msgid "close: second argument must be `to' or `from'" msgstr "closeï¼šç¬¬äºŒä¸ªå‚æ•°å¿…须是“toâ€æˆ–“fromâ€" -#: io.c:1221 +#: io.c:1278 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close:“%.*sâ€ä¸æ˜¯ä¸€ä¸ªå·²æ‰“开文件ã€ç®¡é“或åˆä½œè¿›ç¨‹" -#: io.c:1226 +#: io.c:1283 msgid "close of redirection that was never opened" msgstr "关闭一个从未被打开的é‡å®šå‘" -#: io.c:1325 +#: io.c:1382 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "close:é‡å®šå‘“%sâ€ä¸æ˜¯ç”¨â€œ|&â€æ‰“å¼€ï¼Œç¬¬äºŒä¸ªå‚æ•°è¢«å¿½ç•¥" -#: io.c:1342 +#: io.c:1399 #, fuzzy, c-format +#| msgid "failure status (%d) on pipe close of `%s' (%s)" msgid "failure status (%d) on pipe close of `%s': %s" msgstr "关闭管é““%2$sâ€æ—¶å¤±è´¥ï¼Œå¤±è´¥çжæ€ä¸º(%1$d)(%3$s)" -#: io.c:1345 +#: io.c:1402 #, fuzzy, c-format +#| msgid "failure status (%d) on pipe close of `%s' (%s)" +msgid "failure status (%d) on two-way pipe close of `%s': %s" +msgstr "关闭管é““%2$sâ€æ—¶å¤±è´¥ï¼Œå¤±è´¥çжæ€ä¸º(%1$d)(%3$s)" + +#: io.c:1405 +#, fuzzy, c-format +#| msgid "failure status (%d) on file close of `%s' (%s)" msgid "failure status (%d) on file close of `%s': %s" msgstr "关闭文件“%2$sâ€æ—¶å¤±è´¥ï¼Œå¤±è´¥çжæ€ä¸º(%1$d)(%3$s)" -#: io.c:1365 +#: io.c:1425 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "未显å¼å…³é—­ç«¯å£â€œ%sâ€" -#: io.c:1368 +#: io.c:1428 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "未显å¼å…³é—­åˆä½œè¿›ç¨‹â€œ%sâ€" -#: io.c:1371 +#: io.c:1431 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "未显å¼å…³é—­ç®¡é““%sâ€" -#: io.c:1374 +#: io.c:1434 #, c-format msgid "no explicit close of file `%s' provided" msgstr "未显å¼å…³é—­æ–‡ä»¶â€œ%sâ€" -#: io.c:1411 +#: io.c:1471 #, c-format msgid "fflush: cannot flush standard output: %s" msgstr "fflush:无法刷新输出缓存:%s" -#: io.c:1412 +#: io.c:1472 #, c-format msgid "fflush: cannot flush standard error: %s" msgstr "fflush:无法刷新错误输出缓存:%s" -#: io.c:1417 io.c:1508 main.c:662 main.c:709 +#: io.c:1477 io.c:1568 main.c:666 main.c:713 #, fuzzy, c-format +#| msgid "error writing standard output (%s)" msgid "error writing standard output: %s" msgstr "呿 ‡å‡†è¾“出写时å‘生错误 (%s)" -#: io.c:1418 io.c:1521 main.c:664 +#: io.c:1478 io.c:1581 main.c:668 #, fuzzy, c-format +#| msgid "error writing standard error (%s)" msgid "error writing standard error: %s" msgstr "呿 ‡å‡†é”™è¯¯è¾“出写时å‘生错误 (%s)" -#: io.c:1457 +#: io.c:1517 #, fuzzy, c-format -msgid "pipe flush of `%s' failed: %s." +#| msgid "pipe flush of `%s' failed (%s)." +msgid "pipe flush of `%s' failed: %s" msgstr "刷新管é““%sâ€æ—¶å‡ºé”™(%s)。" -#: io.c:1460 +#: io.c:1520 #, fuzzy, c-format -msgid "co-process flush of pipe to `%s' failed: %s." +#| msgid "co-process flush of pipe to `%s' failed (%s)." +msgid "co-process flush of pipe to `%s' failed: %s" msgstr "刷新åˆä½œè¿›ç¨‹ç®¡é““%sâ€æ—¶å‡ºé”™(%s)。" -#: io.c:1463 +#: io.c:1523 #, fuzzy, c-format -msgid "file flush of `%s' failed: %s." +#| msgid "file flush of `%s' failed (%s)." +msgid "file flush of `%s' failed: %s" msgstr "刷新文件“%sâ€æ—¶å‡ºé”™(%s)。" -#: io.c:1610 +#: io.c:1670 #, c-format msgid "local port %s invalid in `/inet': %s" msgstr "æœ¬åœ°ç«¯å£ %s 在“/inetâ€ä¸­æ— æ•ˆï¼š%s" -#: io.c:1613 +#: io.c:1673 #, c-format msgid "local port %s invalid in `/inet'" msgstr "æœ¬åœ°ç«¯å£ %s 在“/inetâ€ä¸­æ— æ•ˆ" -#: io.c:1636 +#: io.c:1696 #, c-format msgid "remote host and port information (%s, %s) invalid: %s" msgstr "远程主机和端å£ä¿¡æ¯ (%s, %s) 无效:%s" -#: io.c:1639 +#: io.c:1699 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "远程主机和端å£ä¿¡æ¯ (%s, %s) 无效" -#: io.c:1881 +#: io.c:1941 msgid "TCP/IP communications are not supported" msgstr "TCP/IP 通讯ä¸è¢«æ”¯æŒ" -#: io.c:2009 io.c:2052 +#: io.c:2069 io.c:2112 #, c-format msgid "could not open `%s', mode `%s'" msgstr "无法以模å¼â€œ%2$sâ€æ‰“开“%1$sâ€" -#: io.c:2017 io.c:2069 +#: io.c:2077 io.c:2129 #, fuzzy, c-format +#| msgid "close of master pty failed (%s)" msgid "close of master pty failed: %s" msgstr "关闭主 pty 失败(%s)" -#: io.c:2019 io.c:2071 io.c:2418 io.c:2662 +#: io.c:2079 io.c:2131 io.c:2478 io.c:2722 #, fuzzy, c-format +#| msgid "close of stdout in child failed (%s)" msgid "close of stdout in child failed: %s" msgstr "在å­è¿›ç¨‹ä¸­å…³é—­æ ‡å‡†è¾“出失败(%s)" -#: io.c:2022 io.c:2074 +#: io.c:2082 io.c:2134 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ä»Ž pty 改为标准输出失败(dup:%s)" -#: io.c:2024 io.c:2076 io.c:2423 +#: io.c:2084 io.c:2136 io.c:2483 #, fuzzy, c-format +#| msgid "close of stdin in child failed (%s)" msgid "close of stdin in child failed: %s" msgstr "在å­è¿›ç¨‹ä¸­å…³é—­æ ‡å‡†è¾“入失败(%s)" -#: io.c:2027 io.c:2079 +#: io.c:2087 io.c:2139 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ä»Ž pty 改为标准输入失败(dup:%s)" -#: io.c:2029 io.c:2081 io.c:2103 -#, fuzzy, c-format +#: io.c:2089 io.c:2141 io.c:2163 +#, c-format msgid "close of slave pty failed: %s" -msgstr "关闭从 pty 失败(%s)" +msgstr "关闭 slave pty 失败:%s" -#: io.c:2265 +#: io.c:2325 msgid "could not create child process or open pty" msgstr "无法创建å­è¿›ç¨‹æˆ–打开 pty" -#: io.c:2353 io.c:2421 io.c:2633 io.c:2665 +#: io.c:2413 io.c:2481 io.c:2693 io.c:2725 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ç®¡é“改为标准输出失败(dup:%s)" -#: io.c:2360 io.c:2426 +#: io.c:2420 io.c:2486 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ç®¡é“改为标准输入失败(dup:%s)" -#: io.c:2386 io.c:2655 +#: io.c:2446 io.c:2715 msgid "restoring stdout in parent process failed" msgstr "在父进程中æ¢å¤æ ‡å‡†è¾“出失败" -#: io.c:2394 +#: io.c:2454 msgid "restoring stdin in parent process failed" msgstr "在父进程中æ¢å¤æ ‡å‡†è¾“入失败" -#: io.c:2429 io.c:2667 io.c:2682 -#, fuzzy, c-format +#: io.c:2489 io.c:2727 io.c:2742 +#, c-format msgid "close of pipe failed: %s" -msgstr "关闭管é“失败(%s)" +msgstr "关闭管é“失败:%s" -#: io.c:2488 +#: io.c:2548 msgid "`|&' not supported" msgstr "“|&â€ä¸è¢«æ”¯æŒ" -#: io.c:2618 -#, fuzzy, c-format +#: io.c:2678 +#, c-format msgid "cannot open pipe `%s': %s" -msgstr "无法打开管é““%sâ€(%s)" +msgstr "无法打开管é““%sâ€ï¼š%s" -#: io.c:2676 +#: io.c:2736 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "无法为“%sâ€åˆ›å»ºå­è¿›ç¨‹(fork:%s)" -#: io.c:2814 +#: io.c:2874 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "getline:试图从读å–端已被关闭的åŒå‘管é“ä¸­è¯»å–æ•°æ®" -#: io.c:3138 +#: io.c:3199 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser:指针为空" -#: io.c:3166 +#: io.c:3227 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "输入解æžå™¨â€œ%sâ€ä¸Žä¹‹å‰è®¾ç½®çš„“%sâ€ç›¸å†²çª" -#: io.c:3173 +#: io.c:3234 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "输入解æžå™¨â€œ%sâ€æ‰“开“%sâ€å¤±è´¥" -#: io.c:3193 +#: io.c:3254 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_parser:指针为空" -#: io.c:3221 +#: io.c:3282 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "输出解æžå™¨â€œ%sâ€ä¸Žä¹‹å‰è®¾ç½®çš„“%sâ€ç›¸å†²çª" -#: io.c:3228 +#: io.c:3289 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "输出解æžå™¨â€œ%sâ€æ‰“开“%sâ€å¤±è´¥" -#: io.c:3249 +#: io.c:3310 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor:指针为空" -#: io.c:3278 +#: io.c:3339 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "åŒå‘处ç†å™¨â€œ%sâ€ä¸Žä¹‹å‰è®¾ç½®çš„“%sâ€ç›¸å†²çª" -#: io.c:3287 +#: io.c:3348 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "åŒå‘处ç†å™¨â€œ%sâ€æ‰“开“%sâ€å¤±è´¥" -#: io.c:3411 +#: io.c:3472 #, c-format msgid "data file `%s' is empty" msgstr "æ•°æ®æ–‡ä»¶â€œ%sâ€ä¸ºç©º" -#: io.c:3453 io.c:3461 +#: io.c:3514 io.c:3522 msgid "could not allocate more input memory" msgstr "æ— æ³•åˆ†é…æ›´å¤šçš„输入内存" -#: io.c:4079 +#: io.c:4140 msgid "multicharacter value of `RS' is a gawk extension" msgstr "“RSâ€è®¾ç½®ä¸ºå¤šå­—符是 gawk 扩展" -#: io.c:4233 +#: io.c:4294 msgid "IPv6 communication is not supported" msgstr "䏿”¯æŒ IPv6 通讯" -#: main.c:336 +#: main.c:338 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "环境å˜é‡â€œPOSIXLY_CORRECTâ€è¢«è®¾ç½®ï¼šæ‰“开“--posixâ€" -#: main.c:343 +#: main.c:345 msgid "`--posix' overrides `--traditional'" msgstr "“--posixâ€è¦†ç›–“--traditionalâ€" -#: main.c:354 +#: main.c:356 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "“--posixâ€æˆ–“--traditionalâ€è¦†ç›–“--non-decimal-dataâ€" -#: main.c:359 +#: main.c:361 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "“--posixâ€è¦†ç›–“--characters-as-bytesâ€" -#: main.c:368 +#: main.c:371 #, c-format msgid "running %s setuid root may be a security problem" msgstr "以设置 root ID æ–¹å¼è¿è¡Œâ€œ%sâ€å¯èƒ½å­˜åœ¨å®‰å…¨æ¼æ´ž" -#: main.c:421 -#, fuzzy, c-format +#: main.c:424 +#, c-format msgid "cannot set binary mode on stdin: %s" -msgstr "无法在标准输入上设置二进制模å¼(%s)" +msgstr "无法在标准输入上设置二进制模å¼ï¼š%s" -#: main.c:424 -#, fuzzy, c-format +#: main.c:427 +#, c-format msgid "cannot set binary mode on stdout: %s" -msgstr "无法在标准输出上设置二进制模å¼(%s)" +msgstr "无法在标准输出上设置二进制模å¼ï¼š%s" -#: main.c:426 -#, fuzzy, c-format +#: main.c:429 +#, c-format msgid "cannot set binary mode on stderr: %s" -msgstr "无法在标准错误输出上设置二进制模å¼(%s)" +msgstr "无法在标准错误输出上设置二进制模å¼ï¼š%s" -#: main.c:488 +#: main.c:491 msgid "no program text at all!" msgstr "å®Œå…¨æ²¡æœ‰ç¨‹åºæ­£æ–‡ï¼" -#: main.c:582 +#: main.c:585 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "用法:%s [POSIX 或 GNU 风格选项] -f 脚本文件 [--] 文件 ...\n" -#: main.c:584 +#: main.c:587 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "用法:%s [POSIX 或 GNU 风格选项] [--] %c程åº%c 文件 ...\n" -#: main.c:589 +#: main.c:592 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX 选项:\t\tGNU 长选项:(标准)\n" -#: main.c:590 +#: main.c:593 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f 脚本文件\t\t--file=脚本文件\n" -#: main.c:591 +#: main.c:594 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:592 +#: main.c:595 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:593 +#: main.c:596 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "短选项:\t\tGNU 长选项:(扩展)\n" -#: main.c:594 +#: main.c:597 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:595 +#: main.c:598 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:596 +#: main.c:599 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:597 +#: main.c:600 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[文件]\t\t--dump-variables[=文件]\n" -#: main.c:598 +#: main.c:601 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[文件]\t\t--debug[=文件]\n" -#: main.c:599 +#: main.c:602 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'ç¨‹åºæ–‡æœ¬'\t--source='ç¨‹åºæ–‡æœ¬'\n" -#: main.c:600 +#: main.c:603 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E 文件\t\t\t--exec=文件\n" -#: main.c:601 +#: main.c:604 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:602 +#: main.c:605 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:603 +#: main.c:606 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i åŒ…å«æ–‡ä»¶\t\t--include=åŒ…å«æ–‡ä»¶\n" -#: main.c:604 +#: main.c:607 +#, fuzzy +#| msgid "\t-h\t\t\t--help\n" +msgid "\t-I\t\t\t--trace\n" +msgstr "\t-h\t\t\t--help\n" + +#: main.c:608 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l 库\t\t--load=库\n" #. TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal #. values, they should not be translated. Thanks. #. -#: main.c:609 -#, fuzzy +#: main.c:613 msgid "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" +msgstr "\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n" -#: main.c:610 +#: main.c:614 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:611 +#: main.c:615 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:612 +#: main.c:616 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:613 +#: main.c:617 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[文件]\t\t--pretty-print[=文件]\n" -#: main.c:614 +#: main.c:618 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:615 +#: main.c:619 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[文件]\t\t--profile[=文件]\n" -#: main.c:616 +#: main.c:620 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:617 +#: main.c:621 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:618 +#: main.c:622 msgid "\t-s\t\t\t--no-optimize\n" msgstr "\t-s\t\t\t--no-optimize\n" -#: main.c:619 +#: main.c:623 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:620 +#: main.c:624 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:621 +#: main.c:625 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:623 +#: main.c:627 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:626 +#: main.c:630 msgid "\t-Y\t\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" -#: main.c:629 +#: main.c:633 msgid "\t-Z locale-name\t\t--locale=locale-name\n" msgstr "\t-Z locale-name\t\t--locale=locale-name\n" #. TRANSLATORS: --help output (end) #. no-wrap -#: main.c:635 -#, fuzzy +#: main.c:639 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info'\n" @@ -3024,7 +3255,7 @@ "或者使用 Stack Overflow ç­‰è®ºå›æŠ¥å‘Šé”™è¯¯ã€‚\n" "\n" -#: main.c:643 +#: main.c:647 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3033,18 +3264,18 @@ "gawk æ˜¯ä¸€ä¸ªæ¨¡å¼æ‰«æåŠå¤„ç†è¯­è¨€ã€‚ç¼ºçœæƒ…况下它从标准输入读入并写至标准输出。\n" "\n" -#: main.c:647 -#, fuzzy, c-format +#: main.c:651 +#, c-format msgid "" "Examples:\n" "\t%s '{ sum += $1 }; END { print sum }' file\n" "\t%s -F: '{ print $1 }' /etc/passwd\n" msgstr "" "范例:\n" -"\tgawk '{ sum += $1 }; END { print sum }' file\n" -"\tgawk -F: '{ print $1 }' /etc/passwd\n" +"\t%s '{ sum += $1 }; END { print sum }' file\n" +"\t%s -F: '{ print $1 }' /etc/passwd\n" -#: main.c:679 +#: main.c:683 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3061,7 +3292,7 @@ "3版或以åŽç‰ˆæœ¬ä¸‹ä¿®æ”¹æˆ–釿–°å‘布。\n" "\n" -#: main.c:687 +#: main.c:691 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3074,7 +3305,7 @@ "共许å¯è¯(GPL)。\n" "\n" -#: main.c:693 +#: main.c:697 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3082,11 +3313,11 @@ "你应该收到程åºé™„带的一份 GNU 通用公共许å¯è¯(GPL)。如果没有收到,请å‚看 " "http://www.gnu.org/licenses/ 。\n" -#: main.c:734 +#: main.c:738 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "在 POSIX awk 中 -Ft ä¸ä¼šå°† FS 设为制表符(tab)" -#: main.c:1149 +#: main.c:1153 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3095,160 +3326,167 @@ "%s:“-vâ€çš„傿•°â€œ%sâ€ä¸æ˜¯â€œvar=valueâ€å½¢å¼\n" "\n" -#: main.c:1175 +#: main.c:1179 #, c-format msgid "`%s' is not a legal variable name" msgstr "“%sâ€ä¸æ˜¯ä¸€ä¸ªåˆæ³•çš„å˜é‡å" -#: main.c:1178 +#: main.c:1182 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "“%sâ€ä¸æ˜¯ä¸€ä¸ªå˜é‡å,查找文件“%s=%sâ€" -#: main.c:1192 +#: main.c:1196 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "无法将 gawk 内置的 “%s†作为å˜é‡å" -#: main.c:1197 +#: main.c:1201 #, c-format msgid "cannot use function `%s' as variable name" msgstr "无法将函数å“%sâ€ä½œä¸ºå˜é‡å" -#: main.c:1275 +#: main.c:1280 msgid "floating point exception" msgstr "浮点数异常" -#: main.c:1285 +#: main.c:1290 msgid "fatal error: internal error" msgstr "致命错误:内部错误" -#: main.c:1305 +#: main.c:1310 msgid "fatal error: internal error: segfault" msgstr "致命错误:内部错误:段错误" -#: main.c:1318 +#: main.c:1323 msgid "fatal error: internal error: stack overflow" msgstr "致命错误:内部错误:栈溢出" -#: main.c:1378 +#: main.c:1383 #, c-format msgid "no pre-opened fd %d" msgstr "文件æè¿°ç¬¦ %d 未被打开" -#: main.c:1385 +#: main.c:1390 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "无法为文件æè¿°ç¬¦ %d 预打开 /dev/null" -#: main.c:1599 +#: main.c:1604 msgid "empty argument to `-e/--source' ignored" msgstr "“-e/--sourceâ€çš„ç©ºå‚æ•°è¢«å¿½ç•¥" -#: main.c:1660 main.c:1665 +#: main.c:1669 main.c:1674 msgid "`--profile' overrides `--pretty-print'" msgstr "“--profileâ€è¦†ç›–“--pretty-printâ€" -#: main.c:1677 +#: main.c:1686 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "忽略 -M ignored:未将 MPFR/GMP 支æŒç¼–译于" -#: main.c:1702 +#: main.c:1711 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s:选项“-W %sâ€æ— æ³•识别,忽略\n" -#: main.c:1755 +#: main.c:1764 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n" -#: mpfr.c:551 +#: mpfr.c:605 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC 值 “%.*s†无效" -#: mpfr.c:610 -#, c-format -msgid "RNDMODE value `%.*s' is invalid" +#: mpfr.c:664 +#, fuzzy, c-format +#| msgid "RNDMODE value `%.*s' is invalid" +msgid "ROUNDMODE value `%.*s' is invalid" msgstr "RNDMODE 值 “%.*s†无效" -#: mpfr.c:674 +#: mpfr.c:728 msgid "atan2: received non-numeric first argument" msgstr "atan2ï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: mpfr.c:676 +#: mpfr.c:730 msgid "atan2: received non-numeric second argument" msgstr "atan2ï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: mpfr.c:774 +#: mpfr.c:767 +#, fuzzy, c-format +#| msgid "%s: received negative argument %g" +msgid "%s: received negative argument %.*s" +msgstr "%sï¼šæ”¶åˆ°è´Ÿæ•°å‚æ•° %g" + +#: mpfr.c:832 msgid "int: received non-numeric argument" msgstr "intï¼šæ”¶åˆ°éžæ•°å­—傿•°" -#: mpfr.c:804 +#: mpfr.c:862 msgid "compl: received non-numeric argument" msgstr "complï¼šæ”¶åˆ°éžæ•°å­—傿•°" -#: mpfr.c:816 +#: mpfr.c:874 msgid "compl(%Rg): negative value is not allowed" msgstr "compl(%Rg):ä¸å…许使用负值" -#: mpfr.c:821 +#: mpfr.c:879 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg)ï¼šå°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" -#: mpfr.c:832 +#: mpfr.c:890 #, c-format msgid "compl(%Zd): negative values are not allowed" msgstr "compl(%Zd):ä¸å…许使用负值" -#: mpfr.c:850 +#: mpfr.c:908 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s:第 %d ä¸ªå‚æ•°ä¸æ˜¯æ•°å€¼" -#: mpfr.c:860 +#: mpfr.c:918 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s:第 %d ä¸ªå‚æ•°çš„值 %Rg 无效,改为 0" -#: mpfr.c:871 +#: mpfr.c:929 msgid "%s: argument #%d negative value %Rg is not allowed" msgstr "%s:第 %d ä¸ªå‚æ•° %Rg ä¸èƒ½ä¸ºè´Ÿå€¼" -#: mpfr.c:878 +#: mpfr.c:936 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s:第 %d ä¸ªå‚æ•° %Rg çš„å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" -#: mpfr.c:892 +#: mpfr.c:950 #, c-format msgid "%s: argument #%d negative value %Zd is not allowed" msgstr "%s:第 %d ä¸ªå‚æ•° %Zd ä¸èƒ½ä¸ºè´Ÿå€¼" -#: mpfr.c:982 +#: mpfr.c:1040 msgid "and: called with less than two arguments" msgstr "andï¼šè°ƒç”¨æ—¶ä¼ é€’çš„å‚æ•°ä¸è¶³2个" -#: mpfr.c:1014 +#: mpfr.c:1072 msgid "or: called with less than two arguments" msgstr "orï¼šè°ƒç”¨æ—¶ä¼ é€’çš„å‚æ•°ä¸è¶³2个" -#: mpfr.c:1045 +#: mpfr.c:1103 msgid "xor: called with less than two arguments" msgstr "xorï¼šè°ƒç”¨æ—¶ä¼ é€’çš„å‚æ•°ä¸è¶³2个" -#: mpfr.c:1169 +#: mpfr.c:1227 msgid "srand: received non-numeric argument" msgstr "srandï¼šæ”¶åˆ°éžæ•°å­—傿•°" -#: mpfr.c:1211 +#: mpfr.c:1269 msgid "intdiv: received non-numeric first argument" msgstr "intdivï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: mpfr.c:1213 +#: mpfr.c:1271 msgid "intdiv: received non-numeric second argument" msgstr "intdivï¼šç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" -#: msg.c:75 +#: msg.c:76 #, c-format msgid "cmd. line:" msgstr "命令行:" @@ -3257,35 +3495,39 @@ msgid "could not make typed regex" msgstr "无法创建有类型的正则表达å¼" -#: node.c:555 +#: node.c:554 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "è€ awk 䏿”¯æŒâ€œ\\%câ€è½¬ä¹‰åºåˆ—" -#: node.c:606 +#: node.c:605 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX ä¸å…许“\\xâ€è½¬ä¹‰ç¬¦" -#: node.c:612 +#: node.c:611 msgid "no hex digits in `\\x' escape sequence" msgstr "“\\xâ€è½¬ä¹‰åºåˆ—中没有å六进制数" -#: node.c:633 +#: node.c:632 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "å六进制转义符 \\x%.*s 表示的 %d 个字符å¯èƒ½ä¸ä¼šè¢«å¦‚期望情况解释" -#: node.c:648 +#: node.c:647 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "转义åºåˆ—“\\%câ€è¢«å½“作å•纯的“%câ€" -#: node.c:784 +#: node.c:783 +#, fuzzy +#| msgid "" +#| "Invalid multibyte data detected. There may be a mismatch between your " +#| "data and your locale." msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." +"and your locale" msgstr "检测到了无效的多字节数æ®ã€‚å¯èƒ½ä½ çš„æ•°æ®å’ŒåŒºåŸŸè®¾ç½®ä¸åŒ¹é…。" #: posix/gawkmisc.c:177 @@ -3329,11 +3571,11 @@ msgid "internal error: %s with null vname" msgstr "内部错误:%s 带有空的 vname" -#: profile.c:662 +#: profile.c:663 msgid "internal error: builtin with null fname" msgstr "内部错误:内置æ“作的 fname 为空" -#: profile.c:1317 +#: profile.c:1318 #, c-format msgid "" "%s# Loaded extensions (-l and/or @load)\n" @@ -3342,7 +3584,7 @@ "%s# 已加载扩展 (-l å’Œ/或 @load)\n" "\n" -#: profile.c:1348 +#: profile.c:1349 #, c-format msgid "" "\n" @@ -3353,12 +3595,12 @@ "# 已加载扩展 (-l å’Œ/或 @load)\n" "\n" -#: profile.c:1412 +#: profile.c:1413 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk é…ç½®, 创建 %s\n" -#: profile.c:1980 +#: profile.c:1981 #, c-format msgid "" "\n" @@ -3367,7 +3609,7 @@ "\n" "\t# 函数列表,字典åº\n" -#: profile.c:2041 +#: profile.c:2042 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str:未知é‡å®šå‘类型 %d" @@ -3397,39 +3639,39 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "æ­£åˆ™è¡¨è¾¾å¼æˆåˆ†â€œ%.*sâ€å¯èƒ½åº”为“[%.*s]â€" -#: support/dfa.c:950 +#: support/dfa.c:896 msgid "unbalanced [" msgstr "[ ä¸é…对" -#: support/dfa.c:1071 +#: support/dfa.c:1017 msgid "invalid character class" msgstr "无效的字符类型å" -#: support/dfa.c:1197 +#: support/dfa.c:1143 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "字符类型的语法为 [[:space:]]ï¼Œè€Œä¸æ˜¯ [:space:]" -#: support/dfa.c:1264 +#: support/dfa.c:1210 msgid "unfinished \\ escape" msgstr "ä¸å®Œæ•´çš„ \\ 转义" -#: support/dfa.c:1425 +#: support/dfa.c:1371 msgid "invalid content of \\{\\}" msgstr "\\{\\} 中内容无效" -#: support/dfa.c:1428 +#: support/dfa.c:1374 msgid "regular expression too big" msgstr "正则表达å¼è¿‡å¤§" -#: support/dfa.c:1899 +#: support/dfa.c:1858 msgid "unbalanced (" msgstr "( ä¸é…对" -#: support/dfa.c:2016 +#: support/dfa.c:1975 msgid "no syntax specified" msgstr "未指定语法" -#: support/dfa.c:2027 +#: support/dfa.c:1986 msgid "unbalanced )" msgstr ") ä¸é…对" @@ -3561,23 +3803,30 @@ msgid "No previous regular expression" msgstr "å‰é¢æ²¡æœ‰æ­£åˆ™è¡¨è¾¾å¼" -#: symbol.c:691 -#, fuzzy, c-format +#: symbol.c:698 +#, c-format msgid "function `%s': cannot use function `%s' as a parameter name" msgstr "函数“%sâ€ï¼šæ— æ³•将函数å“%sâ€ä½œä¸ºå‚æ•°å" -#: symbol.c:821 -#, fuzzy +#: symbol.c:828 msgid "cannot pop main context" msgstr "无法弹出 main 的上下文" -#, fuzzy -#~ msgid "fts: first parameter is not an array" -#~ msgstr "asortï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +#~ msgid "`L' is meaningless in awk formats; ignored" +#~ msgstr "“Lâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" -#, fuzzy -#~ msgid "fts: third parameter is not an array" -#~ msgstr "matchï¼šç¬¬ä¸‰ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" +#~ msgid "fatal: `L' is not permitted in POSIX awk formats" +#~ msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œLâ€" + +#~ msgid "`h' is meaningless in awk formats; ignored" +#~ msgstr "“hâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" + +#~ msgid "fatal: `h' is not permitted in POSIX awk formats" +#~ msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œhâ€" + +#, c-format +#~ msgid "No symbol `%s' in current context" +#~ msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­æ‰¾ä¸åˆ°ç¬¦å·â€œ%sâ€" #~ msgid "adump: first argument not an array" #~ msgstr "adumpï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" @@ -3591,14 +3840,6 @@ #~ msgid "asorti: first argument not an array" #~ msgstr "asortiï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" -#, fuzzy -#~ msgid "asorti: first argument cannot be SYMTAB" -#~ msgstr "asortiï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" - -#, fuzzy -#~ msgid "asorti: first argument cannot be FUNCTAB" -#~ msgstr "asortiï¼šç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°ç»„" - #~ msgid "asorti: cannot use a subarray of first arg for second arg" #~ msgstr "asortiï¼šæ— æ³•å°†ç¬¬ä¸€ä¸ªå‚æ•°çš„å­æ•°ç»„ä½œä¸ºç¬¬äºŒä¸ªå‚æ•°" @@ -3907,9 +4148,6 @@ #~ msgid "`nextfile' cannot be called from an END rule" #~ msgstr "在 END 规则中ä¸å…许调用“nextfileâ€" -#~ msgid "statement has no effect" -#~ msgstr "è¡¨è¾¾å¼æ— ä»»ä½•作用" - #~ msgid "" #~ "concatenation: side effects in one expression have changed the length of " #~ "another!" diff -urN gawk-5.1.0/posix/ChangeLog gawk-5.1.1/posix/ChangeLog --- gawk-5.1.0/posix/ChangeLog 2020-04-14 14:43:35.000000000 +0300 +++ gawk-5.1.1/posix/ChangeLog 2021-10-27 07:54:15.000000000 +0300 @@ -1,3 +1,15 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-01-08 Arnold D. Robbins + + * gawkmisc.c (quote): Make const char *. + (defpath): Make const char *. + (deflibpath): Make const char *. + (envsep): Make const char *. + (gawk_name): Now returns const char *. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/posix/gawkmisc.c gawk-5.1.1/posix/gawkmisc.c --- gawk-5.1.0/posix/gawkmisc.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/posix/gawkmisc.c 2021-10-27 07:46:33.000000000 +0300 @@ -1,6 +1,6 @@ /* gawkmisc.c --- miscellaneous gawk routines that are OS specific. - Copyright (C) 1986, 1988, 1989, 1991 - 1998, 2001 - 2004, 2011 + Copyright (C) 1986, 1988, 1989, 1991 - 1998, 2001 - 2004, 2011, 2021, the Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -24,10 +24,10 @@ #include #endif -char quote = '\''; -char *defpath = DEFPATH; -char *deflibpath = DEFLIBPATH; -char envsep = ':'; +const char quote = '\''; +const char *defpath = DEFPATH; +const char *deflibpath = DEFLIBPATH; +const char envsep = ':'; #ifndef INVALID_HANDLE /* FIXME: is this value for INVALID_HANDLE correct? */ @@ -36,10 +36,10 @@ /* gawk_name --- pull out the "gawk" part from how the OS called us */ -char * +const char * gawk_name(const char *filespec) { - char *p; + const char *p; /* "path/name" -> "name" */ p = strrchr(filespec, '/'); diff -urN gawk-5.1.0/profile.c gawk-5.1.1/profile.c --- gawk-5.1.0/profile.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/profile.c 2021-10-24 20:31:24.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1999-2020 the Free Software Foundation, Inc. + * Copyright (C) 1999-2021 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -135,7 +135,7 @@ /* indent --- print out enough tabs */ static void -indent(long count) +indent(exec_count_t count) { int i; @@ -143,7 +143,7 @@ if (count == 0) fprintf(prof_fp, "\t"); else - fprintf(prof_fp, "%6ld ", count); + fprintf(prof_fp, EXEC_COUNT_PROFILE_FMT " ", count); } assert(indent_level >= 0); @@ -179,7 +179,7 @@ n->pp_str = s; n->pp_len = strlen(s); n->flags = flag; - n->type = type; + n->type = (NODETYPE) type; n->pp_next = pp_stack; n->pp_comment = comment; pp_stack = n; @@ -297,7 +297,7 @@ ip2 = (pc + 1)->lasti; if (do_profile && ip1->exec_count > 0) - fprintf(prof_fp, " # %ld", ip1->exec_count); + fprintf(prof_fp, " # " EXEC_COUNT_FMT, ip1->exec_count); end_line(ip1); skip_comment = true; @@ -373,6 +373,7 @@ break; default: + fprintf(stderr, "Got unexpected type %s\n", nodetype2str(m->type)); cant_happen(); } @@ -646,7 +647,7 @@ { const char *fname; if (pc->opcode == Op_builtin) { - bool prepend_awk = (current_namespace != awk_namespace && strcmp(current_namespace, "awk") != 0); + bool prepend_awk = (current_namespace != awk_namespace && strcmp(current_namespace, awk_namespace) != 0); fname = getfname(pc->builtin, prepend_awk); } else fname = (pc + 1)->func_name; @@ -781,7 +782,7 @@ case Op_indirect_func_call: case Op_func_call: { - char *pre; + const char *pre; int pcount; bool malloced = false; char *fname = adjust_namespace(pc->func_name, & malloced); @@ -1043,7 +1044,7 @@ ip1 = pc->branch_if; if (ip1->exec_count > 0) - fprintf(prof_fp, " # %ld", ip1->exec_count); + fprintf(prof_fp, " # " EXEC_COUNT_FMT, ip1->exec_count); ip1 = end_line(ip1); indent_in(); if (pc->comment != NULL) @@ -2059,6 +2060,9 @@ // info saved in Op_namespace instructions. current_namespace = name; + // force newline, could be after a comment + fprintf(prof_fp, "\n"); + if (do_profile) indent(SPACEOVER); @@ -2094,7 +2098,7 @@ // unadorned name from symbol table, add awk:: if not in awk:: n.s. if (strchr(name, ':') == NULL && current_namespace != awk_namespace && // can be equal if namespace never changed - strcmp(current_namespace, "awk") != 0 && + strcmp(current_namespace, awk_namespace) != 0 && ! is_all_upper(name)) { char *buf; size_t len = 5 + strlen(name) + 1; @@ -2109,7 +2113,8 @@ // qualifed name, remove :: if in that n.s. size_t len = strlen(current_namespace); - if (strncmp(current_namespace, name, len) == 0) { + if (strncmp(current_namespace, name, len) == 0 && + name[len] == ':' && name[len+1] == ':') { char *ret = name + len + 2; return ret; diff -urN gawk-5.1.0/README gawk-5.1.1/README --- gawk-5.1.0/README 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/README 2021-10-24 20:31:35.000000000 +0300 @@ -1,5 +1,5 @@ Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, - 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc. + 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -7,11 +7,11 @@ README: -This is GNU Awk 5.1.0. It is upwardly compatible with Brian Kernighan's +This is GNU Awk 5.1.1. It is upwardly compatible with Brian Kernighan's version of Unix awk. It is almost completely compliant with the 2018 POSIX 1003.1 standard for awk. (See the note below about POSIX.) -This is a major release. See NEWS and ChangeLog for details. +This is a bug-fix release. See NEWS and ChangeLog for details. Work to be done is described briefly in the TODO file, which is available only in the 'master' branch in the Git repo. @@ -36,7 +36,7 @@ If you don't have Bison, use the awkgram.c file here. It was generated with Bison, and has no proprietary code in it. (Note that -modifying awkgram.y without Bison will be difficult, at best. You might +modifying awkgram.y without Bison is next to impossible. You might want to get a copy of Bison from the FSF too.) The build mechanics depend upon Bison. Also, gawk doesn't work correctly @@ -76,10 +76,12 @@ a web forum such as Stack Overflow. Please, use the mechanisms outlined in the manual. -Email should be sent to bug-gawk@gnu.org. This is a separate mailing +Bug reports should be sent to bug-gawk@gnu.org. This is a separate mailing list at GNU Central. The advantage to using this address is that bug reports are archived at GNU Central. +General non-bug questions should be sent to help-gawk@gnu.org. + Arnold Robbins BUG REPORTS AND FIXES, non-Unix systems: diff -urN gawk-5.1.0/README_d/ChangeLog gawk-5.1.1/README_d/ChangeLog --- gawk-5.1.0/README_d/ChangeLog 2020-04-14 14:41:08.000000000 +0300 +++ gawk-5.1.1/README_d/ChangeLog 2021-10-27 07:53:10.000000000 +0300 @@ -1,3 +1,11 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-13 Arnold D. Robbins + + * README.mpfr: Updated. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/README_d/README.mpfr gawk-5.1.1/README_d/README.mpfr --- gawk-5.1.0/README_d/README.mpfr 2019-08-28 21:54:13.000000000 +0300 +++ gawk-5.1.1/README_d/README.mpfr 2021-10-14 22:15:00.000000000 +0300 @@ -53,3 +53,4 @@ GNU MPFR 2.4.2, GNU MP 4.3.2 GNU MPFR 3.1.0, GNU MP 5.0.2, 5.0.3 GNU MPFR 3.1.4, GNU MP 6.1.0 +GNU MPFR 4.0.1, GNU MP 6.1.2 diff -urN gawk-5.1.0/re.c gawk-5.1.1/re.c --- gawk-5.1.0/re.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/re.c 2021-10-24 20:31:24.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1991-2019 the Free Software Foundation, Inc. + * Copyright (C) 1991-2019, 2021 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -258,10 +258,10 @@ refree(rp); if (! canfatal) { /* rerr already gettextized inside regex routines */ - error("%s: /%s/", rerr, buf); + error("%s: /%.*s/", rerr, (int) len, s); return NULL; } - fatal("invalid regexp: %s: /%s/", rerr, buf); + fatal("invalid regexp: %s: /%.*s/", rerr, (int) len, s); } /* gack. this must be done *after* re_compile_pattern */ @@ -282,7 +282,7 @@ } for (i = len - 1; i >= 0; i--) { - if (strchr("*+|?", buf[i]) != NULL) { + if (strchr("*+|?{}", buf[i]) != NULL) { rp->maybe_long = true; break; } @@ -613,7 +613,7 @@ sp = s; again: - sp = sp2 = memchr(sp, '[', (end - sp)); + sp = sp2 = (char *) memchr(sp, '[', (end - sp)); if (sp == NULL) goto done; diff -urN gawk-5.1.0/str_array.c gawk-5.1.1/str_array.c --- gawk-5.1.0/str_array.c 2020-04-13 09:46:26.000000000 +0300 +++ gawk-5.1.1/str_array.c 2021-10-27 07:47:32.000000000 +0300 @@ -4,6 +4,7 @@ /* * Copyright (C) 1986, 1988, 1989, 1991-2013, 2016, 2017, 2018, 2019, + * 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -168,9 +169,11 @@ // Special cases: // 1. The string was generated using CONVFMT. // 2. The string was from an unassigned variable. - // 3. The string was from an unassigned field. + // 3. The string was from a straight number, perniciously, from MPFR + // 4. The string was from an unassigned field. if ( subs->stfmt != STFMT_UNUSED || subs == Nnull_string + || (subs->flags & STRING) == 0 || (subs->flags & NULL_FIELD) != 0) { NODE *tmp; diff -urN gawk-5.1.0/support/attribute.h gawk-5.1.1/support/attribute.h --- gawk-5.1.0/support/attribute.h 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/attribute.h 2021-10-27 07:48:10.000000000 +0300 @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021, + * the Free Software Foundation, Inc. + * + * This file is part of GAWK, the GNU implementation of the + * AWK Programming Language. + * + * GAWK 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. + * + * GAWK 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +// More stuff to get GNULIB files happy. Sigh. +#define FALLTHROUGH ((void) 0) diff -urN gawk-5.1.0/support/cdefs.h gawk-5.1.1/support/cdefs.h --- gawk-5.1.0/support/cdefs.h 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/support/cdefs.h 2021-10-23 21:54:40.000000000 +0300 @@ -1,4 +1,5 @@ -/* Copyright (C) 1992-2019 Free Software Foundation, Inc. +/* Copyright (C) 1992-2021 Free Software Foundation, Inc. + Copyright The GNU Toolchain Authors. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -25,7 +26,7 @@ /* The GNU libc does not support any K&R compilers or the traditional mode of ISO C compilers anymore. Check for some of the combinations not - anymore supported. */ + supported anymore. */ #if defined __GNUC__ && !defined __STDC__ # error "You need a ISO C conforming compiler to use the glibc headers" #endif @@ -34,7 +35,29 @@ #undef __P #undef __PMT -#ifdef __GNUC__ +/* Compilers that lack __has_attribute may object to + #if defined __has_attribute && __has_attribute (...) + even though they do not need to evaluate the right-hand side of the &&. + Similarly for __has_builtin, etc. */ +#if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || 3 < __clang_major__ + (5 <= __clang_minor__))) +# define __glibc_has_attribute(attr) __has_attribute (attr) +#else +# define __glibc_has_attribute(attr) 0 +#endif +#ifdef __has_builtin +# define __glibc_has_builtin(name) __has_builtin (name) +#else +# define __glibc_has_builtin(name) 0 +#endif +#ifdef __has_extension +# define __glibc_has_extension(ext) __has_extension (ext) +#else +# define __glibc_has_extension(ext) 0 +#endif + +#if defined __GNUC__ || defined __clang__ /* All functions, except those with callbacks or those that synchronize memory, are leaf functions. */ @@ -47,21 +70,26 @@ # endif /* GCC can always grok prototypes. For C++ programs we add throw() - to help it optimize the function calls. But this works only with - gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions + to help it optimize the function calls. But this only works with + gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions as non-throwing using a function attribute since programs can use the -fexceptions options for C code as well. */ -# if !defined __cplusplus && __GNUC_PREREQ (3, 3) +# if !defined __cplusplus \ + && (__GNUC_PREREQ (3, 4) || __glibc_has_attribute (__nothrow__)) # define __THROW __attribute__ ((__nothrow__ __LEAF)) # define __THROWNL __attribute__ ((__nothrow__)) # define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct # define __NTHNL(fct) __attribute__ ((__nothrow__)) fct # else -# if defined __cplusplus && __GNUC_PREREQ (2,8) -# define __THROW throw () -# define __THROWNL throw () -# define __NTH(fct) __LEAF_ATTR fct throw () -# define __NTHNL(fct) fct throw () +# if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major >= 4) +# if __cplusplus >= 201103L +# define __THROW noexcept (true) +# else +# define __THROW throw () +# endif +# define __THROWNL __THROW +# define __NTH(fct) __LEAF_ATTR fct __THROW +# define __NTHNL(fct) fct __THROW # else # define __THROW # define __THROWNL @@ -70,7 +98,7 @@ # endif # endif -#else /* Not GCC. */ +#else /* Not GCC or clang. */ # if (defined __cplusplus \ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) @@ -83,16 +111,7 @@ # define __THROWNL # define __NTH(fct) fct -#endif /* GCC. */ - -/* Compilers that are not clang may object to - #if defined __clang__ && __has_extension(...) - even though they do not need to evaluate the right-hand side of the &&. */ -#if defined __clang__ && defined __has_extension -# define __glibc_clang_has_extension(ext) __has_extension (ext) -#else -# define __glibc_clang_has_extension(ext) 0 -#endif +#endif /* GCC || clang. */ /* These two macros are not used in glibc anymore. They are kept here only because some other projects expect the macros to be defined. */ @@ -123,14 +142,67 @@ #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) #define __bos0(ptr) __builtin_object_size (ptr, 0) +/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */ +#if __USE_FORTIFY_LEVEL == 3 && __glibc_clang_prereq (9, 0) +# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0) +# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1) +#else +# define __glibc_objsize0(__o) __bos0 (__o) +# define __glibc_objsize(__o) __bos (__o) +#endif + +/* Compile time conditions to choose between the regular, _chk and _chk_warn + variants. These conditions should get evaluated to constant and optimized + away. */ + +#define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s)) +#define __glibc_unsigned_or_positive(__l) \ + ((__typeof (__l)) 0 < (__typeof (__l)) -1 \ + || (__builtin_constant_p (__l) && (__l) > 0)) + +/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ + condition can be folded to a constant and if it is true. The -1 check is + redundant because since it implies that __glibc_safe_len_cond is true. */ +#define __glibc_safe_or_unknown_len(__l, __s, __osz) \ + (__glibc_unsigned_or_positive (__l) \ + && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ + __s, __osz)) \ + && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) + +/* Conversely, we know at compile time that the length is safe if the + __L * __S <= __OBJSZ condition can be folded to a constant and if it is + false. */ +#define __glibc_unsafe_len(__l, __s, __osz) \ + (__glibc_unsigned_or_positive (__l) \ + && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ + __s, __osz)) \ + && !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) + +/* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be + declared. */ + +#define __glibc_fortify(f, __l, __s, __osz, ...) \ + (__glibc_safe_or_unknown_len (__l, __s, __osz) \ + ? __ ## f ## _alias (__VA_ARGS__) \ + : (__glibc_unsafe_len (__l, __s, __osz) \ + ? __ ## f ## _chk_warn (__VA_ARGS__, __osz) \ + : __ ## f ## _chk (__VA_ARGS__, __osz))) \ + +/* Fortify function f, where object size argument passed to f is the number of + elements and not total size. */ + +#define __glibc_fortify_n(f, __l, __s, __osz, ...) \ + (__glibc_safe_or_unknown_len (__l, __s, __osz) \ + ? __ ## f ## _alias (__VA_ARGS__) \ + : (__glibc_unsafe_len (__l, __s, __osz) \ + ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \ + : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) \ + #if __GNUC_PREREQ (4,3) -# define __warndecl(name, msg) \ - extern void name (void) __attribute__((__warning__ (msg))) # define __warnattr(msg) __attribute__((__warning__ (msg))) # define __errordecl(name, msg) \ extern void name (void) __attribute__((__error__ (msg))) #else -# define __warndecl(name, msg) extern void name (void) # define __warnattr(msg) # define __errordecl(name, msg) extern void name (void) #endif @@ -142,8 +214,8 @@ #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __HP_cc # define __flexarr [] # define __glibc_c99_flexarr_available 1 -#elif __GNUC_PREREQ (2,97) -/* GCC 2.97 supports C99 flexible array members as an extension, +#elif __GNUC_PREREQ (2,97) || defined __clang__ +/* GCC 2.97 and clang support C99 flexible array members as an extension, even when in C89 mode or compiling C++ (any version). */ # define __flexarr [] # define __glibc_c99_flexarr_available 1 @@ -169,7 +241,7 @@ Example: int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ -#if defined __GNUC__ && __GNUC__ >= 2 +#if (defined __GNUC__ && __GNUC__ >= 2) || (__clang_major__ >= 4) # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) # ifdef __cplusplus @@ -194,17 +266,17 @@ */ #endif -/* GCC has various useful declarations that can be made with the - `__attribute__' syntax. All of the ways we use this do fine if - they are omitted for compilers that don't understand it. */ -#if !defined __GNUC__ || __GNUC__ < 2 +/* GCC and clang have various useful declarations that can be made with + the '__attribute__' syntax. All of the ways we use this do fine if + they are omitted for compilers that don't understand it. */ +#if !(defined __GNUC__ || defined __clang__) # define __attribute__(xyz) /* Ignore */ #endif /* At some point during the gcc 2.96 development the `malloc' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ -#if __GNUC_PREREQ (2,96) +#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__malloc__) # define __attribute_malloc__ __attribute__ ((__malloc__)) #else # define __attribute_malloc__ /* Ignore */ @@ -219,26 +291,41 @@ # define __attribute_alloc_size__(params) /* Ignore. */ #endif +/* Tell the compiler which argument to an allocation function + indicates the alignment of the allocation. */ +#if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__alloc_align__) +# define __attribute_alloc_align__(param) \ + __attribute__ ((__alloc_align__ param)) +#else +# define __attribute_alloc_align__(param) /* Ignore. */ +#endif + /* At some point during the gcc 2.96 development the `pure' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ -#if __GNUC_PREREQ (2,96) +#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__pure__) # define __attribute_pure__ __attribute__ ((__pure__)) #else # define __attribute_pure__ /* Ignore */ #endif /* This declaration tells the compiler that the value is constant. */ -#if __GNUC_PREREQ (2,5) +#if __GNUC_PREREQ (2,5) || __glibc_has_attribute (__const__) # define __attribute_const__ __attribute__ ((__const__)) #else # define __attribute_const__ /* Ignore */ #endif +#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__) +# define __attribute_maybe_unused__ __attribute__ ((__unused__)) +#else +# define __attribute_maybe_unused__ /* Ignore */ +#endif + /* At some point during the gcc 3.1 development the `used' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ -#if __GNUC_PREREQ (3,1) +#if __GNUC_PREREQ (3,1) || __glibc_has_attribute (__used__) # define __attribute_used__ __attribute__ ((__used__)) # define __attribute_noinline__ __attribute__ ((__noinline__)) #else @@ -247,7 +334,7 @@ #endif /* Since version 3.2, gcc allows marking deprecated functions. */ -#if __GNUC_PREREQ (3,2) +#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__deprecated__) # define __attribute_deprecated__ __attribute__ ((__deprecated__)) #else # define __attribute_deprecated__ /* Ignore */ @@ -256,8 +343,8 @@ /* Since version 4.5, gcc also allows one to specify the message printed when a deprecated function is used. clang claims to be gcc 4.2, but may also support this feature. */ -#if __GNUC_PREREQ (4,5) || \ - __glibc_clang_has_extension (__attribute_deprecated_with_message__) +#if __GNUC_PREREQ (4,5) \ + || __glibc_has_extension (__attribute_deprecated_with_message__) # define __attribute_deprecated_msg__(msg) \ __attribute__ ((__deprecated__ (msg))) #else @@ -270,7 +357,7 @@ If several `format_arg' attributes are given for the same function, in gcc-3.0 and older, all but the last one are ignored. In newer gccs, all designated arguments are considered. */ -#if __GNUC_PREREQ (2,8) +#if __GNUC_PREREQ (2,8) || __glibc_has_attribute (__format_arg__) # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) #else # define __attribute_format_arg__(x) /* Ignore */ @@ -280,7 +367,7 @@ attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ -#if __GNUC_PREREQ (2,97) +#if __GNUC_PREREQ (2,97) || __glibc_has_attribute (__format__) # define __attribute_format_strfmon__(a,b) \ __attribute__ ((__format__ (__strfmon__, a, b))) #else @@ -288,19 +375,33 @@ #endif /* The nonnull function attribute marks pointer parameters that - must not be NULL. Do not define __nonnull if it is already defined, - for portability when this file is used in Gnulib. */ + must not be NULL. This has the name __nonnull in glibc, + and __attribute_nonnull__ in files shared with Gnulib to avoid + collision with a different __nonnull in DragonFlyBSD 5.9. */ +#ifndef __attribute_nonnull__ +# if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__) +# define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params)) +# else +# define __attribute_nonnull__(params) +# endif +#endif #ifndef __nonnull -# if __GNUC_PREREQ (3,3) -# define __nonnull(params) __attribute__ ((__nonnull__ params)) +# define __nonnull(params) __attribute_nonnull__ (params) +#endif + +/* The returns_nonnull function attribute marks the return type of the function + as always being non-null. */ +#ifndef __returns_nonnull +# if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__returns_nonnull__) +# define __returns_nonnull __attribute__ ((__returns_nonnull__)) # else -# define __nonnull(params) +# define __returns_nonnull # endif #endif /* If fortification mode, we warn about unused results of certain function calls which can lead to problems. */ -#if __GNUC_PREREQ (3,4) +#if __GNUC_PREREQ (3,4) || __glibc_has_attribute (__warn_unused_result__) # define __attribute_warn_unused_result__ \ __attribute__ ((__warn_unused_result__)) # if defined __USE_FORTIFY_LEVEL && __USE_FORTIFY_LEVEL > 0 @@ -314,7 +415,7 @@ #endif /* Forces a function to be always inlined. */ -#if __GNUC_PREREQ (3,2) +#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__always_inline__) /* The Linux kernel defines __always_inline in stddef.h (283d7573), and it conflicts with this definition. Therefore undefine it first to allow either header to be included first. */ @@ -327,7 +428,7 @@ /* Associate error messages with the source location of the call site rather than with the source location inside the function. */ -#if __GNUC_PREREQ (4,3) +#if __GNUC_PREREQ (4,3) || __glibc_has_attribute (__artificial__) # define __attribute_artificial__ __attribute__ ((__artificial__)) #else # define __attribute_artificial__ /* Ignore */ @@ -370,12 +471,14 @@ run in pedantic mode if the uses are carefully marked using the `__extension__' keyword. But this is not generally available before version 2.8. */ -#if !__GNUC_PREREQ (2,8) +#if !(__GNUC_PREREQ (2,8) || defined __clang__) # define __extension__ /* Ignore */ #endif -/* __restrict is known in EGCS 1.2 and above. */ -#if !__GNUC_PREREQ (2,92) +/* __restrict is known in EGCS 1.2 and above, and in clang. + It works also in C++ mode (outside of arrays), but only when spelled + as '__restrict', not 'restrict'. */ +#if !(__GNUC_PREREQ (2,92) || __clang_major__ >= 3) # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L # define __restrict restrict # else @@ -385,8 +488,9 @@ /* ISO C99 also allows to declare arrays as non-overlapping. The syntax is array_name[restrict] - GCC 3.1 supports this. */ -#if __GNUC_PREREQ (3,1) && !defined __GNUG__ + GCC 3.1 and clang support this. + This syntax is not usable in C++ mode. */ +#if (__GNUC_PREREQ (3,1) || __clang_major__ >= 3) && !defined __cplusplus # define __restrict_arr __restrict #else # ifdef __GNUC__ @@ -401,7 +505,7 @@ # endif #endif -#if __GNUC__ >= 3 +#if (__GNUC__ >= 3) || __glibc_has_builtin (__builtin_expect) # define __glibc_unlikely(cond) __builtin_expect ((cond), 0) # define __glibc_likely(cond) __builtin_expect ((cond), 1) #else @@ -409,15 +513,10 @@ # define __glibc_likely(cond) (cond) #endif -#ifdef __has_attribute -# define __glibc_has_attribute(attr) __has_attribute (attr) -#else -# define __glibc_has_attribute(attr) 0 -#endif - #if (!defined _Noreturn \ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ - && !__GNUC_PREREQ (4,7)) + && !(__GNUC_PREREQ (4,7) \ + || (3 < __clang_major__ + (5 <= __clang_minor__)))) # if __GNUC_PREREQ (2,8) # define _Noreturn __attribute__ ((__noreturn__)) # else @@ -434,22 +533,63 @@ # define __attribute_nonstring__ #endif +/* Undefine (also defined in libc-symbols.h). */ +#undef __attribute_copy__ +#if __GNUC_PREREQ (9, 0) +/* Copies attributes from the declaration or type referenced by + the argument. */ +# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg))) +#else +# define __attribute_copy__(arg) +#endif + #if (!defined _Static_assert && !defined __cplusplus \ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ - && (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__)) + && (!(__GNUC_PREREQ (4, 6) || __clang_major__ >= 4) \ + || defined __STRICT_ANSI__)) # define _Static_assert(expr, diagnostic) \ extern int (*__Static_assert_function (void)) \ [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })] #endif -/* The #ifndef lets Gnulib avoid including these on non-glibc - platforms, where the includes typically do not exist. */ -#ifndef __WORDSIZE +/* Gnulib avoids including these, as they don't work on non-glibc or + older glibc platforms. */ +#ifndef __GNULIB_CDEFS # include # include #endif -#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH +#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 +# ifdef __REDIRECT + +/* Alias name defined automatically. */ +# define __LDBL_REDIR(name, proto) ... unused__ldbl_redir +# define __LDBL_REDIR_DECL(name) \ + extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128")); + +/* Alias name defined automatically, with leading underscores. */ +# define __LDBL_REDIR2_DECL(name) \ + extern __typeof (__##name) __##name \ + __asm (__ASMNAME ("__" #name "ieee128")); + +/* Alias name defined manually. */ +# define __LDBL_REDIR1(name, proto, alias) ... unused__ldbl_redir1 +# define __LDBL_REDIR1_DECL(name, alias) \ + extern __typeof (name) name __asm (__ASMNAME (#alias)); + +# define __LDBL_REDIR1_NTH(name, proto, alias) \ + __REDIRECT_NTH (name, proto, alias) +# define __REDIRECT_NTH_LDBL(name, proto, alias) \ + __LDBL_REDIR1_NTH (name, proto, __##alias##ieee128) + +/* Unused. */ +# define __REDIRECT_LDBL(name, proto, alias) ... unused__redirect_ldbl +# define __LDBL_REDIR_NTH(name, proto) ... unused__ldbl_redir_nth + +# else +_Static_assert (0, "IEEE 128-bits long double requires redirection on this platform"); +# endif +#elif defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH # define __LDBL_COMPAT 1 # ifdef __REDIRECT # define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias) @@ -458,6 +598,8 @@ # define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias) # define __LDBL_REDIR_NTH(name, proto) \ __LDBL_REDIR1_NTH (name, proto, __nldbl_##name) +# define __LDBL_REDIR2_DECL(name) \ + extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name)); # define __LDBL_REDIR1_DECL(name, alias) \ extern __typeof (name) name __asm (__ASMNAME (#alias)); # define __LDBL_REDIR_DECL(name) \ @@ -468,11 +610,13 @@ __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias) # endif #endif -#if !defined __LDBL_COMPAT || !defined __REDIRECT +#if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \ + || !defined __REDIRECT # define __LDBL_REDIR1(name, proto, alias) name proto # define __LDBL_REDIR(name, proto) name proto # define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW # define __LDBL_REDIR_NTH(name, proto) name proto __THROW +# define __LDBL_REDIR2_DECL(name) # define __LDBL_REDIR_DECL(name) # ifdef __REDIRECT # define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias) @@ -503,7 +647,7 @@ check is required to enable the use of generic selection. */ #if !defined __cplusplus \ && (__GNUC_PREREQ (4, 9) \ - || __glibc_clang_has_extension (c_generic_selections) \ + || __glibc_has_extension (c_generic_selections) \ || (!defined __GNUC__ && defined __STDC_VERSION__ \ && __STDC_VERSION__ >= 201112L)) # define __HAVE_GENERIC_SELECTION 1 @@ -511,4 +655,50 @@ # define __HAVE_GENERIC_SELECTION 0 #endif +#if __GNUC_PREREQ (10, 0) +/* Designates a 1-based positional argument ref-index of pointer type + that can be used to access size-index elements of the pointed-to + array according to access mode, or at least one element when + size-index is not provided: + access (access-mode, [, ]) */ +# define __attr_access(x) __attribute__ ((__access__ x)) +/* For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may + use the access attribute to get object sizes from function definition + arguments, so we can't use them on functions we fortify. Drop the object + size hints for such functions. */ +# if __USE_FORTIFY_LEVEL == 3 +# define __fortified_attr_access(a, o, s) __attribute__ ((__access__ (a, o))) +# else +# define __fortified_attr_access(a, o, s) __attr_access ((a, o, s)) +# endif +# if __GNUC_PREREQ (11, 0) +# define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno))) +# else +# define __attr_access_none(argno) +# endif +#else +# define __fortified_attr_access(a, o, s) +# define __attr_access(x) +# define __attr_access_none(argno) +#endif + +#if __GNUC_PREREQ (11, 0) +/* Designates dealloc as a function to call to deallocate objects + allocated by the declared function. */ +# define __attr_dealloc(dealloc, argno) \ + __attribute__ ((__malloc__ (dealloc, argno))) +# define __attr_dealloc_free __attr_dealloc (__builtin_free, 1) +#else +# define __attr_dealloc(dealloc, argno) +# define __attr_dealloc_free +#endif + +/* Specify that a function such as setjmp or vfork may return + twice. */ +#if __GNUC_PREREQ (4, 1) +# define __attribute_returns_twice__ __attribute__ ((__returns_twice__)) +#else +# define __attribute_returns_twice__ /* Ignore. */ +#endif + #endif /* sys/cdefs.h */ diff -urN gawk-5.1.0/support/ChangeLog gawk-5.1.1/support/ChangeLog --- gawk-5.1.0/support/ChangeLog 2020-04-14 14:41:32.000000000 +0300 +++ gawk-5.1.1/support/ChangeLog 2021-10-27 07:53:36.000000000 +0300 @@ -1,3 +1,158 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-23 Arnold D. Robbins + + * cdefs.h, regexec.c: Sync with GNULIB. + +2021-10-13 Arnold D. Robbins + + * xalloc.h: Update copyright year. + +2021-09-22 Arnold D. Robbins + + * idx.h, intprops.h: Sync with GNULIB. + +2021-09-03 Arnold D. Robbins + + * dfa.h: Sync with GNULIB. + +2021-08-29 Arnold D. Robbins + + * cdefs.h, dfa.c, dfa.h, libc-config.h, malloc/dynarray_at_failure.c, + regex.c, regex.h, regex_internal.c, regexec.c, verify.h: + Sync with GNULIB, yet again lots of churn. + * xalloc.h (ximemdup0): Yet another stupid new function. + +2021-08-15 Arnold D. Robbins + + * Makefile.am (AR): Set from @AR@ so that it can be set + at configure time. + +2021-06-30 Arnold D. Robbins + + * dfa.c, dynarray.h, libc-config.h, regexec.c, + verify.h: Update from GNULIB. Sigh. + +2021-05-10 Arnold D. Robbins + + * support/dynarray_at_failure.c, support/dynarray_resize_clear.c: + New files. + * Makefile.am (libsupport_a_SOURCES): Add them. + +2021-05-07 Arnold D. Robbins + + * cdefs.h, libc-config.h, malloc/dynarray-skeleton.c, + regex_internal.h: Update from GNULIB. + +2021-05-05 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Move some files to ... + (libsupport_a_SOURCES): ... here. Add some more files. + +2021-04-25 Arnold D. Robbins + + More of the same: + + * Makefile.am (EXTRA_DIST): Add more files in malloc directory. + (libsupport_a_SOURCES): Add malloc/dynarray_finalize.c and + malloc/dynarray_emplace_enlarge.c. + * malloc/dynarray_finalize.c, malloc/dynarray_emplace_enlarge.c: + New files, from GNULIB. + +2021-04-22 Arnold D. Robbins + + * dynarray.h: Don't redefine libc interfaces to gnulib + interfaces. Needed on at least one Ubuntu 18.04 system, don't + know why, when on other such systems things work. GLIBC + is a swamp. Sigh. + +2021-04-21 Arnold D. Robbins + + Don't depend upon GLIBC private interfaces. Thanks to + Dmitry V. Levin for the report. + + * Makefile.am (EXTRA_DIST): Add files in malloc directory. + (libsupport_a_SOURCES): Add malloc/dynarray_resize.c. + * dynarray.h: Copied from GNULIB. + * malloc/dynarray_resize.c: New file, from GNULIB. + +2021-03-29 Arnold D. Robbins + + Resettle after churn in GNULIB. + + * dfa.c, intprops.h: Updated from GNULIB. + * xalloc.h (xpalloc): New function, was in dfa.c. + (MIN): New macro. + * idx.h: New file, imported from GNULIB (sigh). + +2021-02-08 Arnold D. Robbins + + * cdefs.h, dfa.c, dfa.h, flexmember.h, intprops.h, libc-config.h, + localeinfo.c, localeinfo.h, regcomp.c, regex.c, regex.h, + regex_internal.c, regex_internal.h, regexec.c, verify.h: Sync + from GNULIB. + * attribute.h, dynarray.h: New files. + * malloc/dynarray.h, malloc/dynarray-skeleton.c: New files from GNULIB. + +2021-01-08 Arnold D. Robbins + + * random.h (initstate, setstate, srandom): Add declarations. + +2020-11-06 Arnold D. Robbins + + * dfa.h, regex_internal.c, regex_internal.h: Synced from GNULIB. + +2020-11-01 Arnold D. Robbins + + * dfa.c: Synced from GNULIB. + +2020-10-15 Arnold D. Robbins + + * random.c: Move code to using prototypes. + +2020-09-30 Arnold D. Robbins + + * dfa.c: Synced from GNULIB. + +2020-09-24 Arnold D. Robbins + + * dfa.c, dfa.h: Synced from GNULIB. + +2020-09-18 Arnold D. Robbins + + * cdefs.h, dfa.c, intprops.h, regcomp.c, regex.h, regex_internal.h, + verify.h: Synced from GNULIB. + +2020-09-14 Arnold D. Robbins + + * dfa.c: Synced from GNULIB. + +2020-07-29 Arnold D. Robbins + + * dfa.h: Synced from GNULIB. + +2020-07-26 Arnold D. Robbins + + * cdefs.h, dfa.c, libc-config.h, localeinfo.c, localeinfo.h, + regcomp.c, regex.h, regex_internal.c, regexec.c, + verify.h: Sync from GNULIB. Mostly copyright updates. + +2020-06-07 Arnold D. Robbins + + * dfa.c: Revert changes of 26 April 2020. It causes + the dfastress test to fail on some compilers. + +2020-05-08 Arnold D. Robbins + + * dfa.c: Sync from GNULIB. + +2020-04-26 Arnold D. Robbins + + * dfa.c: Speed improvements from Norihiro Tanaka , + copied in from the bug-grep list. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/support/ChangeLog.0 gawk-5.1.1/support/ChangeLog.0 --- gawk-5.1.0/support/ChangeLog.0 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/ChangeLog.0 2019-08-28 21:54:14.000000000 +0300 @@ -0,0 +1,226 @@ +2019-03-24 Arnold D. Robbins + + * cdefs.h, dfa.c, dfa.h, intprops.h, libc-config.h, localeinfo.c, + localeinfo.h, regcomp.c, regex.c, regex.h, regex_internal.c, + regex_internal.h, regexec.c, verify.h, xalloc.h: Partial or + complete sync from GNULIB. + +2019-02-01 Arnold D. Robbins + + * regexec.c (proceed_next_node): Sync with GNULIB. + +2019-01-28 Arnold D. Robbins + + * Makefile.am, regexec.c: Update copyright year. + +2019-01-26 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Add cdefs.h and libc-config.h. + +2019-01-21 Paul Eggert + + regex: fix read overrun + Problem found by AddressSanitizer, reported by Hongxu Chen in: + https://debbugs.gnu.org/cgi/34140 + * regexec.c (proceed_next_node): Do not read past end of input buffer. + +2019-01-09 John E. Malmberg + + * cdefs.h, xalloc.h: For non GCC, have + __attribute__ definition match regex_internal.h exactly. + +2018-12-26 Arnold D. Robbins + + In a spirit of depressed resignation, synced regex + files with GNULIB and added new files needed to + get it to continue to compile. I lose. + + * regcomp.c, regex.c, regex_internal.c, regex_internal.h, + regexec.c: Sync with GNULIB. + * libc-config.h, cdefs.h: New files. + +2018-12-21 Arnold D. Robbins + + * dfa.c; Sync with GNULIB, bugfix for \b (\y in gawk) + in the C locale. + +2018-12-18 Arnold D. Robbins + + * Makefile.am (distclean-local): Remove .deps directory. + +2018-12-15 Arnold D. Robbins + + * dfa.h, dfa.c: Sync with GNULIB. + +2018-10-31 Arnold D. Robbins + + * dfa.c (charclass_context): Remove unused function. + +2018-10-22 Arnold D. Robbins + + * dfa.c: Update from GNULIB. + +2018-09-21 Arnold D. Robbins + + * dfa.c, intprops.h: Sync from GNULIB. + +2018-09-16 Arnold D. Robbins + + * Makefile.in: Regenerated, using Automake 1.16.1. + +2018-09-07 Arnold D. Robbins + + * intprops.h, verify.h: Updated from GNULIB. + +2018-08-26 Arnold D. Robbins + + * regex_internal.c: Sync with GNULIB. + +2018-08-22 Daniel Richard G. + + * regex_internal.h: Undefine additional macros in order + to compile on z/OS. + +2018-08-10 Arnold D. Robbins + + * dfa.c: Sync with GNULIB. + * regcomp.c: Updated from GNULIB and proposed fix applied. + +2018-07-26 Arnold D. Robbins + + * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h, + regexec.c: Replaced with versions from GNULIB. + +2018-06-27 Arnold D. Robbins + + * dfa.c, intprops.h, localeinfo.c, localeinfo.h, + verify.h: Sync with GNULIB. + +2018-06-21 Arnold D. Robbins + + * regex_internal.h: Simplify undefining inline and defining to empty. + Thanks to Florian Weimer for the suggestion. + +2018-03-13 Arnold D. Robbins + + * getopt.c: Update copyright year. + +2018-02-25 Arnold D. Robbins + + * 4.2.1: Release tar ball made. + +2017-12-24 Arnold D. Robbins + + * getopt.c: Include to get declarations of + malloc and free. + +2017-12-20 Arnold D. Robbins + + * regex.h: Restore GLIBC's use of '__' in parameter names. They + have to be that way since public headers can't use identifiers that + users might define as macros. At least now I understand why + things are the way they are. + +2017-12-19 Paul Eggert + + Small sync with gnulib based on mails in libc-alpha@sourceware.com. + + Use re_malloc etc. consistently. + + * regcomp.c (re_comp, analyze): Use re_malloc/re_free instead of + malloc/free. + * regexec.c (push_fail_stack): Use re_realloc instead of realloc. + + Other changes: + + * regex_internal.h: Synchronize on __libc_lock_define usage. + +2017-12-05 Arnold D. Robbins + + * regex.h: Yes define __USE_GNU. Needed for non-GLIBC systems. + +2017-12-01 Arnold D. Robbins + + * intprops.h: Sync with GNULIB. + * regcomp.c (init_word): Move general_case label inside ifdef. + * regex.h: Don't define __USE_GNU. Brings closer to GLIBC regex. + * regex.c: Don't include gawkbool.h, we don't use it anymore. + * dfa.h: Ditto. + +2017-11-26 Arnold D. Robbins + + * regcomp.c regex_internal.c, regex_internal.h, regexec.c: Sync + with GLIBC. + * verfiy.h: Sync with GNULIB. + +2017-10-19 Arnold D. Robbins + + * 4.2.0: Release tar ball made. + +2017-10-08 Arnold D. Robbins + + * regex_internal.h: Minor fix from Andreas for OS/2. + +2017-08-27 Juan Manuel Guerrero + + * localeinfo.c [__DJGPP__]: Include mbsupport.h. + +2017-06-25 Andrew J. Schorr + + * dfa.c (dfaalloc): Replace xmalloc+memset with xzalloc. + * xalloc.h (xmalloc): New function moved here from gawkmisc.c. + (xcalloc): Replace xmalloc+memset with calloc. + (xzalloc): Replace xmalloc+memset with xcalloc. + +2017-06-22 Arnold D. Robbins + + * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h, + regexec.c: Sync with GLIBC. + +2017-06-18 Arnold D. Robbins + + * intprops.h: Sync with GNULIB. + +2017-05-22 Arnold D. Robbins + + * dfa.c, dfa.h, intprops.h, verify.h: Sync with GNULIB. + +2017-03-23 Arnold D. Robbins + + * dfa.c: Sync with GNULIB. + +2017-01-19 Arnold D. Robbins + + * localeinfo.h: Sync with GNULIB. + * localeinfo.c: Ditto. + * dfa.c: Ditto, to fix a memory leak. + +2017-01-16 Arnold D. Robbins + + * dfa.c: Sync with GNULIB. + +2017-01-10 Arnold D. Robbins + + * dfa.c: Sync with GNULIB. + Twice in one day! Sigh. + +2017-01-03 Arnold D. Robbins + + * dfa.c: Sync with GNULIB. + +2016-12-27 Juergen Kahrs + + * CMakeLists.txt: New file. + +2016-12-22 John E. Malmberg + + * dfa.c fixes for OpenVMS + +2016-12-22 Arnold D. Robbins + + * ChangeLog: Created. + * Makefile.am: New file. + * dfa.c, dfa.h, getopt.c, getopt.h, getopt1.c, getopt_int.h, + intprops.h, localeinfo.c, localeinfo.h, random.c, random.h, + regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h, + regexec.c, verify.h, xalloc.h: Moved here from parent directory. diff -urN gawk-5.1.0/support/dfa.c gawk-5.1.1/support/dfa.c --- gawk-5.1.0/support/dfa.c 2020-03-15 15:32:23.000000000 +0200 +++ gawk-5.1.1/support/dfa.c 2021-10-23 21:49:15.000000000 +0300 @@ -1,5 +1,5 @@ /* dfa.c - deterministic extended regexp routines for GNU - Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2020 Free Software + Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2021 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -22,6 +22,12 @@ #include +#include "dfa.h" + +#include "flexmember.h" +#include "idx.h" +#include "verify.h" + #include #include #include @@ -30,14 +36,12 @@ #include #include -#include "dfa.h" -#include "flexmember.h" - -/* Another name for ptrdiff_t, for sizes of objects and nonnegative - indexes into objects. It is signed to help catch integer overflow. - It has its own name because it is for nonnegative values only. */ -typedef ptrdiff_t idx_t; -static idx_t const IDX_MAX = PTRDIFF_MAX; +/* Pacify gcc -Wanalyzer-null-dereference in areas where GCC + understandably cannot deduce that the input comes from a + well-formed regular expression. There's little point to the + runtime overhead of 'assert' instead of 'assume_nonnull' when the + MMU will check anyway. */ +#define assume_nonnull(x) assume ((x) != NULL) static bool streq (char const *a, char const *b) @@ -56,15 +60,16 @@ #include -#include "intprops.h" #include "xalloc.h" #include "localeinfo.h" #ifndef FALLTHROUGH -# if __GNUC__ < 7 -# define FALLTHROUGH ((void) 0) -# else +# if 201710L < __STDC_VERSION__ +# define FALLTHROUGH [[__fallthrough__]] +# elif (__GNUC__ >= 7) || (__clang_major__ >= 10) # define FALLTHROUGH __attribute__ ((__fallthrough__)) +# else +# define FALLTHROUGH ((void) 0) # endif #endif @@ -367,7 +372,6 @@ position_set elems; /* Positions this state could match. */ unsigned char context; /* Context from previous state. */ unsigned short constraint; /* Constraint for this state to accept. */ - token first_end; /* Token value of the first END in elems. */ position_set mbps; /* Positions which can match multibyte characters or the follows, e.g., period. Used only if MB_CUR_MAX > 1. */ @@ -479,10 +483,12 @@ idx_t depth; /* Depth required of an evaluation stack used for depth-first traversal of the parse tree. */ - idx_t nleaves; /* Number of leaves on the parse tree. */ + idx_t nleaves; /* Number of non-EMPTY leaves + in the parse tree. */ idx_t nregexps; /* Count of parallel regexps being built with dfaparse. */ bool fast; /* The DFA is fast. */ + bool epsilon; /* Does a token match only the empty string? */ token utf8_anychar_classes[9]; /* To lower ANYCHAR in UTF-8 locales. */ mbstate_t mbs; /* Multibyte conversion state. */ @@ -584,7 +590,7 @@ /* dfaexec implementation. */ char *(*dfaexec) (struct dfa *, char const *, char *, - bool, ptrdiff_t *, bool *); + bool, idx_t *, bool *); /* Other cached information derived from the locale. */ struct localeinfo localeinfo; @@ -619,14 +625,14 @@ * PWC points to wint_t, not to wchar_t. * The last arg is a dfa *D instead of merely a multibyte conversion state D->mbs. - * N must be at least 1. + * N is idx_t not size_t, and must be at least 1. * S[N - 1] must be a sentinel byte. * Shift encodings are not supported. * The return value is always in the range 1..N. * D->mbs is always valid afterwards. * *PWC is always set to something. */ static int -mbs_to_wchar (wint_t *pwc, char const *s, size_t n, struct dfa *d) +mbs_to_wchar (wint_t *pwc, char const *s, idx_t n, struct dfa *d) { unsigned char uc = s[0]; wint_t wc = d->localeinfo.sbctowc[uc]; @@ -787,66 +793,6 @@ return w == 0; } -/* Grow PA, which points to an array of *NITEMS items, and return the - location of the reallocated array, updating *NITEMS to reflect its - new size. The new array will contain at least NITEMS_INCR_MIN more - items, but will not contain more than NITEMS_MAX items total. - ITEM_SIZE is the size of each item, in bytes. - - ITEM_SIZE and NITEMS_INCR_MIN must be positive. *NITEMS must be - nonnegative. If NITEMS_MAX is -1, it is treated as if it were - infinity. - - If PA is null, then allocate a new array instead of reallocating - the old one. - - Thus, to grow an array A without saving its old contents, do - { free (A); A = xpalloc (NULL, &AITEMS, ...); }. */ - -static void * -xpalloc (void *pa, idx_t *nitems, idx_t nitems_incr_min, - ptrdiff_t nitems_max, idx_t item_size) -{ - idx_t n0 = *nitems; - - /* The approximate size to use for initial small allocation - requests. This is the largest "small" request for the GNU C - library malloc. */ - enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 }; - - /* If the array is tiny, grow it to about (but no greater than) - DEFAULT_MXFAST bytes. Otherwise, grow it by about 50%. - Adjust the growth according to three constraints: NITEMS_INCR_MIN, - NITEMS_MAX, and what the C language can represent safely. */ - - idx_t n, nbytes; - if (INT_ADD_WRAPV (n0, n0 >> 1, &n)) - n = IDX_MAX; - if (0 <= nitems_max && nitems_max < n) - n = nitems_max; - - idx_t adjusted_nbytes - = ((INT_MULTIPLY_WRAPV (n, item_size, &nbytes) || SIZE_MAX < nbytes) - ? MIN (IDX_MAX, SIZE_MAX) - : nbytes < DEFAULT_MXFAST ? DEFAULT_MXFAST : 0); - if (adjusted_nbytes) - { - n = adjusted_nbytes / item_size; - nbytes = adjusted_nbytes - adjusted_nbytes % item_size; - } - - if (! pa) - *nitems = 0; - if (n - n0 < nitems_incr_min - && (INT_ADD_WRAPV (n0, nitems_incr_min, &n) - || (0 <= nitems_max && nitems_max < n) - || INT_MULTIPLY_WRAPV (n, item_size, &nbytes))) - xalloc_die (); - pa = xrealloc (pa, nbytes); - *nitems = n; - return pa; -} - /* Ensure that the array addressed by PA holds at least I + 1 items. Either return PA, or reallocate the array and return its new address. Although PA may be null, the returned value is never null. @@ -1593,8 +1539,8 @@ dfa->tokens = xpalloc (dfa->tokens, &dfa->talloc, 1, -1, sizeof *dfa->tokens); if (dfa->localeinfo.multibyte) - dfa->multibyte_prop = xnrealloc (dfa->multibyte_prop, dfa->talloc, - sizeof *dfa->multibyte_prop); + dfa->multibyte_prop = xreallocarray (dfa->multibyte_prop, dfa->talloc, + sizeof *dfa->multibyte_prop); } if (dfa->localeinfo.multibyte) dfa->multibyte_prop[dfa->tindex] = mbprop; @@ -1612,18 +1558,31 @@ dfa->parse.depth--; break; + case EMPTY: + dfa->epsilon = true; + goto increment_depth; + case BACKREF: dfa->fast = false; + goto increment_nleaves; + + case BEGLINE: + case ENDLINE: + case BEGWORD: + case ENDWORD: + case LIMWORD: + case NOTLIMWORD: + dfa->epsilon = true; FALLTHROUGH; default: + increment_nleaves: dfa->nleaves++; - FALLTHROUGH; - case EMPTY: + increment_depth: dfa->parse.depth++; + if (dfa->depth < dfa->parse.depth) + dfa->depth = dfa->parse.depth; break; } - if (dfa->parse.depth > dfa->depth) - dfa->depth = dfa->parse.depth; } static void addtok_wc (struct dfa *dfa, wint_t wc); @@ -2144,6 +2103,8 @@ merge_constrained (s1, s2, -1, m); } +/* Merge into DST all the elements of SRC, possibly destroying + the contents of the temporary M. */ static void merge2 (position_set *dst, position_set const *src, position_set *m) { @@ -2209,11 +2170,10 @@ size_t hash = 0; int constraint = 0; state_num i; - token first_end = 0; for (i = 0; i < s->nelem; ++i) { - size_t ind = s->elems[i].index; + idx_t ind = s->elems[i].index; hash ^= ind + s->elems[i].constraint; } @@ -2262,8 +2222,6 @@ { if (succeeds_in_context (c, context, CTX_ANY)) constraint |= c; - if (!first_end) - first_end = d->tokens[s->elems[j].index]; } else if (d->tokens[s->elems[j].index] == BACKREF) constraint = NO_CONSTRAINT; @@ -2278,7 +2236,6 @@ copy (s, &d->states[i].elems); d->states[i].context = context; d->states[i].constraint = constraint; - d->states[i].first_end = first_end; d->states[i].mbps.nelem = 0; d->states[i].mbps.elems = NULL; d->states[i].mb_trindex = -1; @@ -2288,24 +2245,26 @@ return i; } -/* Find the epsilon closure of a set of positions. If any position of the set +/* Find the epsilon closure of D's set of positions. If any position of the set contains a symbol that matches the empty string in some context, replace that position with the elements of its follow labeled with an appropriate constraint. Repeat exhaustively until no funny positions are left. - S->elems must be large enough to hold the result. */ + S->elems must be large enough to hold the result. BACKWARD is D's + backward set; use and update it too. */ static void -epsclosure (struct dfa const *d) +epsclosure (struct dfa const *d, position_set *backward) { position_set tmp; alloc_position_set (&tmp, d->nleaves); for (idx_t i = 0; i < d->tindex; i++) - if (d->follows[i].nelem > 0 && d->tokens[i] >= NOTCHAR - && d->tokens[i] != BACKREF && d->tokens[i] != ANYCHAR - && d->tokens[i] != MBCSET && d->tokens[i] < CSET) + if (0 < d->follows[i].nelem) { unsigned int constraint; switch (d->tokens[i]) { + default: + continue; + case BEGLINE: constraint = BEGLINE_CONSTRAINT; break; @@ -2324,16 +2283,19 @@ case NOTLIMWORD: constraint = NOTLIMWORD_CONSTRAINT; break; - default: + case EMPTY: constraint = NO_CONSTRAINT; break; } delete (i, &d->follows[i]); - for (idx_t j = 0; j < d->tindex; j++) - if (i != j && d->follows[j].nelem > 0) - replace (&d->follows[j], i, &d->follows[i], constraint, &tmp); + for (idx_t j = 0; j < backward[i].nelem; j++) + replace (&d->follows[backward[i].elems[j].index], i, &d->follows[i], + constraint, &tmp); + for (idx_t j = 0; j < d->follows[i].nelem; j++) + replace (&backward[d->follows[i].elems[j].index], i, &backward[i], + NO_CONSTRAINT, &tmp); } free (tmp.elems); } @@ -2403,8 +2365,6 @@ position_set *follows = d->follows; idx_t nelem = 0; - d->constraints[tindex] = 0; - for (idx_t i = 0; i < follows[tindex].nelem; i++) { idx_t sindex = follows[tindex].elems[i].index; @@ -2420,7 +2380,7 @@ continue; } - if (!(flags[sindex] & (OPT_LPAREN | OPT_RPAREN))) + if (sindex != tindex && !(flags[sindex] & (OPT_LPAREN | OPT_RPAREN))) { idx_t j; @@ -2428,6 +2388,9 @@ { idx_t dindex = follows[tindex].elems[j].index; + if (dindex == tindex) + continue; + if (follows[tindex].elems[j].constraint != iconstraint) continue; @@ -2463,40 +2426,28 @@ compare (const void *a, const void *b) { position const *p = a, *q = b; - return p->index < q->index ? -1 : p->index > q->index; + return (p->index > q->index) - (p->index < q->index); } static void reorder_tokens (struct dfa *d) { - idx_t nleaves; - ptrdiff_t *map; - token *tokens; - position_set *follows; - int *constraints; - char *multibyte_prop; - - nleaves = 0; - - map = xnmalloc (d->tindex, sizeof *map); - + idx_t nleaves = 0; + ptrdiff_t *map = xnmalloc (d->tindex, sizeof *map); map[0] = nleaves++; - for (idx_t i = 1; i < d->tindex; i++) map[i] = -1; - tokens = xnmalloc (d->nleaves, sizeof *tokens); - follows = xnmalloc (d->nleaves, sizeof *follows); - constraints = xnmalloc (d->nleaves, sizeof *constraints); - - if (d->localeinfo.multibyte) - multibyte_prop = xnmalloc (d->nleaves, sizeof *multibyte_prop); - else - multibyte_prop = NULL; + token *tokens = xnmalloc (d->nleaves, sizeof *tokens); + position_set *follows = xnmalloc (d->nleaves, sizeof *follows); + int *constraints = xnmalloc (d->nleaves, sizeof *constraints); + char *multibyte_prop = (d->localeinfo.multibyte + ? xnmalloc (d->nleaves, sizeof *multibyte_prop) + : NULL); for (idx_t i = 0; i < d->tindex; i++) { - if (map[i] == -1) + if (map[i] < 0) { free (d->follows[i].elems); d->follows[i].elems = NULL; @@ -2545,7 +2496,7 @@ static void dfaoptimize (struct dfa *d) { - char *flags = xzalloc (d->tindex); + char *flags = xizalloc (d->tindex); for (idx_t i = 0; i < d->tindex; i++) { @@ -2568,7 +2519,7 @@ position_set *merged = &merged0; alloc_position_set (merged, d->nleaves); - d->constraints = xnmalloc (d->tindex, sizeof *d->constraints); + d->constraints = xicalloc (d->tindex, sizeof *d->constraints); for (idx_t i = 0; i < d->tindex; i++) if (flags[i] & OPT_QUEUED) @@ -2657,10 +2608,11 @@ position_set merged; /* Result of merging sets. */ addtok (d, CAT); + idx_t tindex = d->tindex; #ifdef DEBUG fprintf (stderr, "dfaanalyze:\n"); - for (idx_t i = 0; i < d->tindex; i++) + for (idx_t i = 0; i < tindex; i++) { fprintf (stderr, " %td:", i); prtok (d->tokens[i]); @@ -2670,9 +2622,11 @@ d->searchflag = searchflag; alloc_position_set (&merged, d->nleaves); - d->follows = xcalloc (d->tindex, sizeof *d->follows); + d->follows = xicalloc (tindex, sizeof *d->follows); + position_set *backward + = d->epsilon ? xicalloc (tindex, sizeof *backward) : NULL; - for (idx_t i = 0; i < d->tindex; i++) + for (idx_t i = 0; i < tindex; i++) { switch (d->tokens[i]) { @@ -2687,17 +2641,24 @@ case STAR: case PLUS: + /* Every element in the lastpos of the argument is in the backward + set of every element in the firstpos. */ + if (d->epsilon) + { + tmp.elems = lastpos - stk[-1].nlastpos; + tmp.nelem = stk[-1].nlastpos; + for (position *p = firstpos - stk[-1].nfirstpos; + p < firstpos; p++) + merge2 (&backward[p->index], &tmp, &merged); + } + /* Every element in the firstpos of the argument is in the follow of every element in the lastpos. */ { tmp.elems = firstpos - stk[-1].nfirstpos; tmp.nelem = stk[-1].nfirstpos; - position *p = lastpos - stk[-1].nlastpos; - for (idx_t j = 0; j < stk[-1].nlastpos; j++) - { - merge (&tmp, &d->follows[p[j].index], &merged); - copy (&merged, &d->follows[p[j].index]); - } + for (position *p = lastpos - stk[-1].nlastpos; p < lastpos; p++) + merge2 (&d->follows[p->index], &tmp, &merged); } FALLTHROUGH; case QMARK: @@ -2707,17 +2668,27 @@ break; case CAT: + /* Every element in the lastpos of the first argument is in + the backward set of every element in the firstpos of the + second argument. */ + if (backward) + { + tmp.nelem = stk[-2].nlastpos; + tmp.elems = lastpos - stk[-1].nlastpos - stk[-2].nlastpos; + for (position *p = firstpos - stk[-1].nfirstpos; + p < firstpos; p++) + merge2 (&backward[p->index], &tmp, &merged); + } + /* Every element in the firstpos of the second argument is in the follow of every element in the lastpos of the first argument. */ { tmp.nelem = stk[-1].nfirstpos; tmp.elems = firstpos - stk[-1].nfirstpos; - position *p = lastpos - stk[-1].nlastpos - stk[-2].nlastpos; - for (idx_t j = 0; j < stk[-2].nlastpos; j++) - { - merge (&tmp, &d->follows[p[j].index], &merged); - copy (&merged, &d->follows[p[j].index]); - } + for (position *plim = lastpos - stk[-1].nlastpos, + *p = plim - stk[-2].nlastpos; + p < plim; p++) + merge2 (&d->follows[p->index], &tmp, &merged); } /* The firstpos of a CAT node is the firstpos of the first argument, @@ -2798,14 +2769,21 @@ #endif } - /* For each follow set that is the follow set of a real position, replace - it with its epsilon closure. */ - epsclosure (d); + if (backward) + { + /* For each follow set that is the follow set of a real position, + replace it with its epsilon closure. */ + epsclosure (d, backward); + + for (idx_t i = 0; i < tindex; i++) + free (backward[i].elems); + free (backward); + } dfaoptimize (d); #ifdef DEBUG - for (idx_t i = 0; i < d->tindex; i++) + for (idx_t i = 0; i < tindex; i++) if (d->tokens[i] == BEG || d->tokens[i] < NOTCHAR || d->tokens[i] == BACKREF || d->tokens[i] == ANYCHAR || d->tokens[i] == MBCSET || d->tokens[i] >= CSET) @@ -2829,12 +2807,10 @@ append (pos, &tmp); - d->separates = xnmalloc (d->tindex, sizeof *d->separates); + d->separates = xicalloc (tindex, sizeof *d->separates); - for (idx_t i = 0; i < d->tindex; i++) + for (idx_t i = 0; i < tindex; i++) { - d->separates[i] = 0; - if (prev_newline_dependent (d->constraints[i])) d->separates[i] |= CTX_NEWLINE; if (prev_letter_dependent (d->constraints[i])) @@ -2882,13 +2858,13 @@ realtrans[0] = realtrans[1] = NULL; d->trans = realtrans + 2; idx_t newalloc = d->tralloc = newalloc1 - 2; - d->fails = xnrealloc (d->fails, newalloc, sizeof *d->fails); - d->success = xnrealloc (d->success, newalloc, sizeof *d->success); - d->newlines = xnrealloc (d->newlines, newalloc, sizeof *d->newlines); + d->fails = xreallocarray (d->fails, newalloc, sizeof *d->fails); + d->success = xreallocarray (d->success, newalloc, sizeof *d->success); + d->newlines = xreallocarray (d->newlines, newalloc, sizeof *d->newlines); if (d->localeinfo.multibyte) { realtrans = d->mb_trans ? d->mb_trans - 2 : NULL; - realtrans = xnrealloc (realtrans, newalloc1, sizeof *realtrans); + realtrans = xreallocarray (realtrans, newalloc1, sizeof *realtrans); if (oldalloc == 0) realtrans[0] = realtrans[1] = NULL; d->mb_trans = realtrans + 2; @@ -3132,10 +3108,7 @@ mergeit &= d->multibyte_prop[group.elems[j].index]; } if (mergeit) - { - merge (&d->states[0].elems, &group, &tmp); - copy (&tmp, &group); - } + merge2 (&group, &d->states[0].elems, &tmp); } /* Find out if the new state will want any context information, @@ -3379,7 +3352,7 @@ static inline char * dfaexec_main (struct dfa *d, char const *begin, char *end, bool allow_nl, - ptrdiff_t *count, bool multibyte) + idx_t *count, bool multibyte) { if (MAX_TRCOUNT <= d->sindex) { @@ -3562,14 +3535,14 @@ static char * dfaexec_mb (struct dfa *d, char const *begin, char *end, - bool allow_nl, ptrdiff_t *count, bool *backref) + bool allow_nl, idx_t *count, bool *backref) { return dfaexec_main (d, begin, end, allow_nl, count, true); } static char * dfaexec_sb (struct dfa *d, char const *begin, char *end, - bool allow_nl, ptrdiff_t *count, bool *backref) + bool allow_nl, idx_t *count, bool *backref) { return dfaexec_main (d, begin, end, allow_nl, count, false); } @@ -3578,7 +3551,7 @@ any regexp that uses a construct not supported by this code. */ static char * dfaexec_noop (struct dfa *d, char const *begin, char *end, - bool allow_nl, ptrdiff_t *count, bool *backref) + bool allow_nl, idx_t *count, bool *backref) { *backref = true; return (char *) begin; @@ -3590,7 +3563,7 @@ char * dfaexec (struct dfa *d, char const *begin, char *end, - bool allow_nl, ptrdiff_t *count, bool *backref) + bool allow_nl, idx_t *count, bool *backref) { return d->dfaexec (d, begin, end, allow_nl, count, backref); } @@ -3624,8 +3597,8 @@ } /* Return true if every construct in D is supported by this DFA matcher. */ -static bool _GL_ATTRIBUTE_PURE -dfa_supported (struct dfa const *d) +bool +dfasupported (struct dfa const *d) { for (idx_t i = 0; i < d->tindex; i++) { @@ -3781,7 +3754,7 @@ dfassbuild (d); - if (dfa_supported (d)) + if (dfasupported (d)) { maybe_disable_superset_dfa (d); dfaanalyze (d, searchflag); @@ -3935,7 +3908,7 @@ if (newsize == 0) return old; idx_t oldsize = strlen (old); - char *result = xrealloc (old, oldsize + newsize + 1); + char *result = xirealloc (old, oldsize + newsize + 1); memcpy (result + oldsize, new, newsize + 1); return result; } @@ -3948,10 +3921,8 @@ } static char ** -enlist (char **cpp, char *new, idx_t len) +enlistnew (char **cpp, char *new) { - new = memcpy (xmalloc (len + 1), new, len); - new[len] = '\0'; /* Is there already something in the list that's new (or longer)? */ idx_t i; for (i = 0; cpp[i] != NULL; i++) @@ -3973,12 +3944,18 @@ cpp[i] = NULL; } /* Add the new string. */ - cpp = xnrealloc (cpp, i + 2, sizeof *cpp); + cpp = xreallocarray (cpp, i + 2, sizeof *cpp); cpp[i] = new; cpp[i + 1] = NULL; return cpp; } +static char ** +enlist (char **cpp, char const *str, idx_t len) +{ + return enlistnew (cpp, ximemdup0 (str, len)); +} + /* Given pointers to two strings, return a pointer to an allocated list of their distinct common substrings. */ static char ** @@ -4009,7 +3986,7 @@ addlists (char **old, char **new) { for (; *new; new++) - old = enlist (old, *new, strlen (*new)); + old = enlistnew (old, xstrdup (*new)); return old; } @@ -4051,9 +4028,9 @@ { must *new_mp = xmalloc (sizeof *new_mp); new_mp->in = xzalloc (sizeof *new_mp->in); - new_mp->left = xzalloc (size); - new_mp->right = xzalloc (size); - new_mp->is = xzalloc (size); + new_mp->left = xizalloc (size); + new_mp->right = xizalloc (size); + new_mp->is = xizalloc (size); new_mp->begline = false; new_mp->endline = false; new_mp->prev = mp; @@ -4125,6 +4102,7 @@ case STAR: case QMARK: + assume_nonnull (mp); resetmust (mp); break; @@ -4132,7 +4110,9 @@ { char **new; must *rmp = mp; + assume_nonnull (rmp); must *lmp = mp = mp->prev; + assume_nonnull (lmp); idx_t j, ln, rn, n; /* Guaranteed to be. Unlikely, but ... */ @@ -4173,10 +4153,12 @@ break; case PLUS: + assume_nonnull (mp); mp->is[0] = '\0'; break; case END: + assume_nonnull (mp); assert (!mp->prev); for (idx_t i = 0; mp->in[i] != NULL; i++) if (strlen (mp->in[i]) > strlen (result)) @@ -4194,7 +4176,9 @@ case CAT: { must *rmp = mp; + assume_nonnull (rmp); must *lmp = mp = mp->prev; + assume_nonnull (lmp); /* In. Everything in left, plus everything in right, plus concatenation of @@ -4204,11 +4188,10 @@ { idx_t lrlen = strlen (lmp->right); idx_t rllen = strlen (rmp->left); - char *tp = xmalloc (lrlen + rllen); + char *tp = ximalloc (lrlen + rllen + 1); + memcpy (tp + lrlen, rmp->left, rllen + 1); memcpy (tp, lmp->right, lrlen); - memcpy (tp + lrlen, rmp->left, rllen); - lmp->in = enlist (lmp->in, tp, lrlen + rllen); - free (tp); + lmp->in = enlistnew (lmp->in, tp); } /* Left-hand */ if (lmp->is[0] != '\0') diff -urN gawk-5.1.0/support/dfa.h gawk-5.1.1/support/dfa.h --- gawk-5.1.0/support/dfa.h 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/dfa.h 2021-10-23 21:49:15.000000000 +0300 @@ -1,5 +1,5 @@ /* dfa.h - declarations for GNU deterministic regexp compiler - Copyright (C) 1988, 1998, 2007, 2009-2020 Free Software Foundation, Inc. + Copyright (C) 1988, 1998, 2007, 2009-2021 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 @@ -18,9 +18,18 @@ /* Written June, 1988 by Mike Haertel */ +#ifndef DFA_H_ +#define DFA_H_ + +#include "idx.h" #include #include #include +#include + +#ifdef __cplusplus +extern "C" { +#endif struct localeinfo; /* See localeinfo.h. */ @@ -31,7 +40,7 @@ bool exact; bool begline; bool endline; - char *must; + char must[FLEXIBLE_ARRAY_MEMBER]; }; /* The dfa structure. It is completely opaque. */ @@ -39,7 +48,10 @@ /* Needed when Gnulib is not used. */ #ifndef _GL_ATTRIBUTE_MALLOC -# define _GL_ATTRIBUTE_MALLOC +# define _GL_ATTRIBUTE_MALLOC +# define _GL_ATTRIBUTE_DEALLOC(f, i) +# define _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_RETURNS_NONNULL #endif /* Entry points. */ @@ -48,7 +60,9 @@ It should be initialized via dfasyntax or dfacopysyntax before other use. The returned pointer should be passed directly to free() after calling dfafree() on it. */ -extern struct dfa *dfaalloc (void) _GL_ATTRIBUTE_MALLOC; +extern struct dfa *dfaalloc (void) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE + _GL_ATTRIBUTE_RETURNS_NONNULL; /* DFA options that can be ORed together, for dfasyntax's 4th arg. */ enum @@ -74,20 +88,23 @@ extern void dfacopysyntax (struct dfa *, struct dfa const *); /* Parse the given string of given length into the given struct dfa. */ -extern void dfaparse (char const *, ptrdiff_t, struct dfa *); +extern void dfaparse (char const *, idx_t, struct dfa *); -/* Allocate and return a struct dfamust from a struct dfa that was - initialized by dfaparse and not yet given to dfacomp. */ -extern struct dfamust *dfamust (struct dfa const *); +struct dfamust; /* Free the storage held by the components of a struct dfamust. */ extern void dfamustfree (struct dfamust *); +/* Allocate and return a struct dfamust from a struct dfa that was + initialized by dfaparse and not yet given to dfacomp. */ +extern struct dfamust *dfamust (struct dfa const *) + _GL_ATTRIBUTE_DEALLOC (dfamustfree, 1); + /* Compile the given string of the given length into the given struct dfa. The last argument says whether to build a searching or an exact matcher. A null first argument means the struct dfa has already been initialized by dfaparse; the second argument is ignored. */ -extern void dfacomp (char const *, ptrdiff_t, struct dfa *, bool); +extern void dfacomp (char const *, idx_t, struct dfa *, bool); /* Search through a buffer looking for a match to the given struct dfa. Find the first occurrence of a string matching the regexp in the @@ -102,7 +119,7 @@ encountered a back-reference. The caller can use this to decide whether to fall back on a backtracking matcher. */ extern char *dfaexec (struct dfa *d, char const *begin, char *end, - bool allow_nl, ptrdiff_t *count, bool *backref); + bool allow_nl, idx_t *count, bool *backref); /* Return a superset for D. The superset matches everything that D matches, along with some other strings (though the latter should be @@ -113,6 +130,9 @@ /* The DFA is likely to be fast. */ extern bool dfaisfast (struct dfa const *) _GL_ATTRIBUTE_PURE; +/* Return true if every construct in D is supported by this DFA matcher. */ +extern bool dfasupported (struct dfa const *) _GL_ATTRIBUTE_PURE; + /* Free the storage held by the components of a struct dfa. */ extern void dfafree (struct dfa *); @@ -128,3 +148,9 @@ takes a single argument, a NUL-terminated string describing the error. The user must supply a dfaerror. */ extern _Noreturn void dfaerror (const char *); + +#ifdef __cplusplus +} +#endif + +#endif /* dfa.h */ diff -urN gawk-5.1.0/support/dynarray.h gawk-5.1.1/support/dynarray.h --- gawk-5.1.0/support/dynarray.h 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/dynarray.h 2021-10-23 21:50:22.000000000 +0300 @@ -0,0 +1,286 @@ +/* Type-safe arrays which grow dynamically. + Copyright 2021 Free Software Foundation, Inc. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +/* Written by Paul Eggert and Bruno Haible, 2021. */ + +#ifndef _GL_DYNARRAY_H +#define _GL_DYNARRAY_H + +/* Before including this file, you need to define: + + DYNARRAY_STRUCT + The struct tag of dynamic array to be defined. + + DYNARRAY_ELEMENT + The type name of the element type. Elements are copied + as if by memcpy, and can change address as the dynamic + array grows. + + DYNARRAY_PREFIX + The prefix of the functions which are defined. + + The following parameters are optional: + + DYNARRAY_ELEMENT_FREE + DYNARRAY_ELEMENT_FREE (E) is evaluated to deallocate the + contents of elements. E is of type DYNARRAY_ELEMENT *. + + DYNARRAY_ELEMENT_INIT + DYNARRAY_ELEMENT_INIT (E) is evaluated to initialize a new + element. E is of type DYNARRAY_ELEMENT *. + If DYNARRAY_ELEMENT_FREE but not DYNARRAY_ELEMENT_INIT is + defined, new elements are automatically zero-initialized. + Otherwise, new elements have undefined contents. + + DYNARRAY_INITIAL_SIZE + The size of the statically allocated array (default: + at least 2, more elements if they fit into 128 bytes). + Must be a preprocessor constant. If DYNARRAY_INITIAL_SIZE is 0, + there is no statically allocated array at, and all non-empty + arrays are heap-allocated. + + DYNARRAY_FINAL_TYPE + The name of the type which holds the final array. If not + defined, is PREFIX##finalize not provided. DYNARRAY_FINAL_TYPE + must be a struct type, with members of type DYNARRAY_ELEMENT and + size_t at the start (in this order). + + These macros are undefined after this header file has been + included. + + The following types are provided (their members are private to the + dynarray implementation): + + struct DYNARRAY_STRUCT + + The following functions are provided: + */ + +/* Initialize a dynamic array object. This must be called before any + use of the object. */ +#if 0 +static void + DYNARRAY_PREFIX##init (struct DYNARRAY_STRUCT *list); +#endif + +/* Deallocate the dynamic array and its elements. */ +#if 0 +static void + DYNARRAY_PREFIX##free (struct DYNARRAY_STRUCT *list); +#endif + +/* Return true if the dynamic array is in an error state. */ +#if 0 +static bool + DYNARRAY_PREFIX##has_failed (const struct DYNARRAY_STRUCT *list); +#endif + +/* Mark the dynamic array as failed. All elements are deallocated as + a side effect. */ +#if 0 +static void + DYNARRAY_PREFIX##mark_failed (struct DYNARRAY_STRUCT *list); +#endif + +/* Return the number of elements which have been added to the dynamic + array. */ +#if 0 +static size_t + DYNARRAY_PREFIX##size (const struct DYNARRAY_STRUCT *list); +#endif + +/* Return a pointer to the first array element, if any. For a + zero-length array, the pointer can be NULL even though the dynamic + array has not entered the failure state. */ +#if 0 +static DYNARRAY_ELEMENT * + DYNARRAY_PREFIX##begin (const struct DYNARRAY_STRUCT *list); +#endif + +/* Return a pointer one element past the last array element. For a + zero-length array, the pointer can be NULL even though the dynamic + array has not entered the failure state. */ +#if 0 +static DYNARRAY_ELEMENT * + DYNARRAY_PREFIX##end (const struct DYNARRAY_STRUCT *list); +#endif + +/* Return a pointer to the array element at INDEX. Terminate the + process if INDEX is out of bounds. */ +#if 0 +static DYNARRAY_ELEMENT * + DYNARRAY_PREFIX##at (struct DYNARRAY_STRUCT *list, size_t index); +#endif + +/* Add ITEM at the end of the array, enlarging it by one element. + Mark *LIST as failed if the dynamic array allocation size cannot be + increased. */ +#if 0 +static void + DYNARRAY_PREFIX##add (struct DYNARRAY_STRUCT *list, + DYNARRAY_ELEMENT item); +#endif + +/* Allocate a place for a new element in *LIST and return a pointer to + it. The pointer can be NULL if the dynamic array cannot be + enlarged due to a memory allocation failure. */ +#if 0 +static DYNARRAY_ELEMENT * + DYNARRAY_PREFIX##emplace (struct DYNARRAY_STRUCT *list); +#endif + +/* Change the size of *LIST to SIZE. If SIZE is larger than the + existing size, new elements are added (which can be initialized). + Otherwise, the list is truncated, and elements are freed. Return + false on memory allocation failure (and mark *LIST as failed). */ +#if 0 +static bool + DYNARRAY_PREFIX##resize (struct DYNARRAY_STRUCT *list, size_t size); +#endif + +/* Remove the last element of LIST if it is present. */ +#if 0 +static void + DYNARRAY_PREFIX##remove_last (struct DYNARRAY_STRUCT *list); +#endif + +/* Remove all elements from the list. The elements are freed, but the + list itself is not. */ +#if 0 +static void + DYNARRAY_PREFIX##clear (struct DYNARRAY_STRUCT *list); +#endif + +#if defined DYNARRAY_FINAL_TYPE +/* Transfer the dynamic array to a permanent location at *RESULT. + Returns true on success on false on allocation failure. In either + case, *LIST is re-initialized and can be reused. A NULL pointer is + stored in *RESULT if LIST refers to an empty list. On success, the + pointer in *RESULT is heap-allocated and must be deallocated using + free. */ +#if 0 +static bool + DYNARRAY_PREFIX##finalize (struct DYNARRAY_STRUCT *list, + DYNARRAY_FINAL_TYPE *result); +#endif +#else /* !defined DYNARRAY_FINAL_TYPE */ +/* Transfer the dynamic array to a heap-allocated array and return a + pointer to it. The pointer is NULL if memory allocation fails, or + if the array is empty, so this function should be used only for + arrays which are known not be empty (usually because they always + have a sentinel at the end). If LENGTHP is not NULL, the array + length is written to *LENGTHP. *LIST is re-initialized and can be + reused. */ +#if 0 +static DYNARRAY_ELEMENT * + DYNARRAY_PREFIX##finalize (struct DYNARRAY_STRUCT *list, + size_t *lengthp); +#endif +#endif + +/* A minimal example which provides a growing list of integers can be + defined like this: + + struct int_array + { + // Pointer to result array followed by its length, + // as required by DYNARRAY_FINAL_TYPE. + int *array; + size_t length; + }; + + #define DYNARRAY_STRUCT dynarray_int + #define DYNARRAY_ELEMENT int + #define DYNARRAY_PREFIX dynarray_int_ + #define DYNARRAY_FINAL_TYPE struct int_array + #include + + To create a three-element array with elements 1, 2, 3, use this + code: + + struct dynarray_int dyn; + dynarray_int_init (&dyn); + for (int i = 1; i <= 3; ++i) + { + int *place = dynarray_int_emplace (&dyn); + assert (place != NULL); + *place = i; + } + struct int_array result; + bool ok = dynarray_int_finalize (&dyn, &result); + assert (ok); + assert (result.length == 3); + assert (result.array[0] == 1); + assert (result.array[1] == 2); + assert (result.array[2] == 3); + free (result.array); + + If the elements contain resources which must be freed, define + DYNARRAY_ELEMENT_FREE appropriately, like this: + + struct str_array + { + char **array; + size_t length; + }; + + #define DYNARRAY_STRUCT dynarray_str + #define DYNARRAY_ELEMENT char * + #define DYNARRAY_ELEMENT_FREE(ptr) free (*ptr) + #define DYNARRAY_PREFIX dynarray_str_ + #define DYNARRAY_FINAL_TYPE struct str_array + #include + */ + + +/* The implementation is imported from glibc. */ + +#ifndef GAWK +/* Avoid possible conflicts with symbols exported by the GNU libc. */ +#define __libc_dynarray_at_failure gl_dynarray_at_failure +#define __libc_dynarray_emplace_enlarge gl_dynarray_emplace_enlarge +#define __libc_dynarray_finalize gl_dynarray_finalize +#define __libc_dynarray_resize_clear gl_dynarray_resize_clear +#define __libc_dynarray_resize gl_dynarray_resize +#endif + +#if defined DYNARRAY_STRUCT || defined DYNARRAY_ELEMENT || defined DYNARRAY_PREFIX + +# ifndef _GL_LIKELY +/* Rely on __builtin_expect, as provided by the module 'builtin-expect'. */ +# define _GL_LIKELY(cond) __builtin_expect ((cond), 1) +# define _GL_UNLIKELY(cond) __builtin_expect ((cond), 0) +# endif + +/* Define auxiliary structs and declare auxiliary functions, common to all + instantiations of dynarray. */ +# include + +/* Define the instantiation, specified through + DYNARRAY_STRUCT + DYNARRAY_ELEMENT + DYNARRAY_PREFIX + etc. */ +# include + +#else + +/* This file is being included from one of the malloc/dynarray_*.c files. */ +# include + +#endif + +#endif /* _GL_DYNARRAY_H */ diff -urN gawk-5.1.0/support/flexmember.h gawk-5.1.1/support/flexmember.h --- gawk-5.1.0/support/flexmember.h 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/flexmember.h 2021-10-23 21:49:15.000000000 +0300 @@ -1,6 +1,6 @@ /* Sizes of structs with flexible array members. - Copyright 2016-2020 Free Software Foundation, Inc. + Copyright 2016-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. diff -urN gawk-5.1.0/support/idx.h gawk-5.1.1/support/idx.h --- gawk-5.1.0/support/idx.h 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/idx.h 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,134 @@ +/* A type for indices and sizes. + Copyright (C) 2020-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _IDX_H +#define _IDX_H + +/* Get ptrdiff_t. */ +#include + +/* Get PTRDIFF_MAX. */ +#include + +/* The type 'idx_t' holds an (array) index or an (object) size. + Its implementation promotes to a signed integer type, + which can hold the values + 0..2^63-1 (on 64-bit platforms) or + 0..2^31-1 (on 32-bit platforms). + + Why a signed integer type? + + * Security: Signed types can be checked for overflow via + '-fsanitize=undefined', but unsigned types cannot. + + * Comparisons without surprises: ISO C99 § 6.3.1.8 specifies a few + surprising results for comparisons, such as + + (int) -3 < (unsigned long) 7 => false + (int) -3 < (unsigned int) 7 => false + and on 32-bit machines: + (long) -3 < (unsigned int) 7 => false + + This is surprising because the natural comparison order is by + value in the realm of infinite-precision signed integers (ℤ). + + The best way to get rid of such surprises is to use signed types + for numerical integer values, and use unsigned types only for + bit masks and enums. + + Why not use 'size_t' directly? + + * Because 'size_t' is an unsigned type, and a signed type is better. + See above. + + Why not use 'ssize_t'? + + * 'ptrdiff_t' is more portable; it is standardized by ISO C + whereas 'ssize_t' is standardized only by POSIX. + + * 'ssize_t' is not required to be as wide as 'size_t', and some + now-obsolete POSIX platforms had 'size_t' wider than 'ssize_t'. + + * Conversely, some now-obsolete platforms had 'ptrdiff_t' wider + than 'size_t', which can be a win and conforms to POSIX. + + Won't this cause a problem with objects larger than PTRDIFF_MAX? + + * Typical modern or large platforms do not allocate such objects, + so this is not much of a problem in practice; for example, you + can safely write 'idx_t len = strlen (s);'. To port to older + small platforms where allocations larger than PTRDIFF_MAX could + in theory be a problem, you can use Gnulib's ialloc module, or + functions like ximalloc in Gnulib's xalloc module. + + Why not use 'ptrdiff_t' directly? + + * Maintainability: When reading and modifying code, it helps to know that + a certain variable cannot have negative values. For example, when you + have a loop + + int n = ...; + for (int i = 0; i < n; i++) ... + + or + + ptrdiff_t n = ...; + for (ptrdiff_t i = 0; i < n; i++) ... + + you have to ask yourself "what if n < 0?". Whereas in + + idx_t n = ...; + for (idx_t i = 0; i < n; i++) ... + + you know that this case cannot happen. + + Similarly, when a programmer writes + + idx_t = ptr2 - ptr1; + + there is an implied assertion that ptr1 and ptr2 point into the same + object and that ptr1 <= ptr2. + + * Being future-proof: In the future, range types (integers which are + constrained to a certain range of values) may be added to C compilers + or to the C standard. Several programming languages (Ada, Haskell, + Common Lisp, Pascal) already have range types. Such range types may + help producing good code and good warnings. The type 'idx_t' could + then be typedef'ed to a range type that is signed after promotion. */ + +/* In the future, idx_t could be typedef'ed to a signed range type. + The clang "extended integer types", supported in Clang 11 or newer + , + are a special case of range types. However, these types don't support binary + operators with plain integer types (e.g. expressions such as x > 1). + Therefore, they don't behave like signed types (and not like unsigned types + either). So, we cannot use them here. */ + +/* Use the signed type 'ptrdiff_t'. */ +/* Note: ISO C does not mandate that 'size_t' and 'ptrdiff_t' have the same + size, but it is so on all platforms we have seen since 1990. */ +typedef ptrdiff_t idx_t; + +/* IDX_MAX is the maximum value of an idx_t. */ +#define IDX_MAX PTRDIFF_MAX + +/* So far no need has been found for an IDX_WIDTH macro. + Perhaps there should be another macro IDX_VALUE_BITS that does not + count the sign bit and is therefore one less than PTRDIFF_WIDTH. */ + +#endif /* _IDX_H */ diff -urN gawk-5.1.0/support/intprops.h gawk-5.1.1/support/intprops.h --- gawk-5.1.0/support/intprops.h 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/intprops.h 2021-10-23 21:49:15.000000000 +0300 @@ -1,6 +1,6 @@ /* intprops.h -- properties of integer types - Copyright (C) 2001-2019 Free Software Foundation, Inc. + Copyright (C) 2001-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published @@ -15,7 +15,6 @@ You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ -/* Written by Paul Eggert. */ #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H @@ -48,7 +47,7 @@ /* Minimum and maximum values for integer types and expressions. */ /* The width in bits of the integer type or expression T. - Do not evaluate T. + Do not evaluate T. T must not be a bit-field expression. Padding bits are not supported; this is checked at compile-time below. */ #define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) @@ -70,7 +69,7 @@ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ - (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1) + (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) /* Work around OpenVMS incompatibility with C99. */ #if !defined LLONG_MAX && defined __INT64_MAX @@ -86,6 +85,7 @@ /* Does the __typeof__ keyword work? This could be done by 'configure', but for now it's easier to do it by hand. */ #if (2 <= __GNUC__ \ + || (4 <= __clang_major__) \ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ || (0x5110 <= __SUNPRO_C && !__STDC__)) # define _GL_HAVE___TYPEOF__ 1 @@ -94,8 +94,9 @@ #endif /* Return 1 if the integer type or expression T might be signed. Return 0 - if it is definitely unsigned. This macro does not evaluate its argument, - and expands to an integer constant expression. */ + if it is definitely unsigned. T must not be a bit-field expression. + This macro does not evaluate its argument, and expands to an + integer constant expression. */ #if _GL_HAVE___TYPEOF__ # define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) #else @@ -108,6 +109,8 @@ #define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) /* Bound on length of the string representing an integer type or expression T. + T must not be a bit-field expression. + Subtract 1 for the sign bit if T is signed, and then add 1 more for a minus sign if needed. @@ -119,7 +122,7 @@ + _GL_SIGNED_TYPE_OR_EXPR (t)) /* Bound on buffer size needed to represent an integer type or expression T, - including the terminating null. */ + including the terminating null. T must not be a bit-field expression. */ #define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) @@ -129,7 +132,8 @@ operators might not yield numerically correct answers due to arithmetic overflow. They do not rely on undefined or implementation-defined behavior. Their implementations are simple - and straightforward, but they are a bit harder to use than the + and straightforward, but they are harder to use and may be less + efficient than the INT__WRAPV, INT__OK, and INT__OVERFLOW macros described below. Example usage: @@ -154,6 +158,9 @@ must have minimum value MIN and maximum MAX. Unsigned types should use a zero MIN of the proper type. + Because all arguments are subject to integer promotions, these + macros typically do not work on types narrower than 'int'. + These macros are tuned for constant MIN and MAX. For commutative operations such as A + B, they are also tuned for constant B. */ @@ -220,15 +227,39 @@ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) -/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */ -#if 5 <= __GNUC__ && !defined __ICC -# define _GL_HAS_BUILTIN_OVERFLOW 1 +/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow + (A, B, P) work when P is non-null. */ +/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +#if 7 <= __GNUC__ && !defined __ICC +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) +#else +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#endif + +/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ +#ifdef __clang__ +/* Work around Clang bug . */ +# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 #else -# define _GL_HAS_BUILTIN_OVERFLOW 0 +# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW #endif -/* True if __builtin_add_overflow_p (A, B, C) works. */ -#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) +/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for + __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ +#if defined __clang__ || defined __ICC +/* Clang 11 lacks __builtin_mul_overflow_p, and even if it did it + would presumably run afoul of Clang bug 16404. ICC 2021.1's + __builtin_add_overflow_p etc. are not treated as integral constant + expressions even when all arguments are. */ +# define _GL_HAS_BUILTIN_OVERFLOW_P 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) +#else +# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) +#endif /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands @@ -311,9 +342,15 @@ arguments should not have side effects. The WRAPV macros are not constant expressions. They support only - +, binary -, and *. Because the WRAPV macros convert the result, - they report overflow in different circumstances than the OVERFLOW - macros do. + +, binary -, and *. + + Because the WRAPV macros convert the result, they report overflow + in different circumstances than the OVERFLOW macros do. For + example, in the typical case with 16-bit 'short' and 32-bit 'int', + if A, B and R are all of type 'short' then INT_ADD_OVERFLOW (A, B) + returns false because the addition cannot overflow after A and B + are converted to 'int', whereas INT_ADD_WRAPV (A, B, &R) returns + true or false depending on whether the sum fits into 'short'. These macros are tuned for their last input argument being a constant. @@ -351,43 +388,50 @@ /* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. Return 1 if the result overflows. See above for restrictions. */ -#define INT_ADD_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, \ - _GL_INT_ADD_RANGE_OVERFLOW) -#define INT_SUBTRACT_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, -, __builtin_sub_overflow, \ - _GL_INT_SUBTRACT_RANGE_OVERFLOW) -#define INT_MULTIPLY_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, *, _GL_BUILTIN_MUL_OVERFLOW, \ - _GL_INT_MULTIPLY_RANGE_OVERFLOW) - -/* Like __builtin_mul_overflow, but work around GCC bug 91450. */ -#define _GL_BUILTIN_MUL_OVERFLOW(a, b, r) \ - ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \ - && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ - ? ((void) __builtin_mul_overflow (a, b, r), 1) \ - : __builtin_mul_overflow (a, b, r)) +#if _GL_HAS_BUILTIN_ADD_OVERFLOW +# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) +# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) +#else +# define INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) +# define INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) +#endif +#if _GL_HAS_BUILTIN_MUL_OVERFLOW +# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ + || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ + && !defined __ICC) +# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) +# else + /* Work around GCC bug 91450. */ +# define INT_MULTIPLY_WRAPV(a, b, r) \ + ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \ + && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ + ? ((void) __builtin_mul_overflow (a, b, r), 1) \ + : __builtin_mul_overflow (a, b, r)) +# endif +#else +# define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) +#endif /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 https://llvm.org/bugs/show_bug.cgi?id=25390 For now, assume all versions of GCC-like compilers generate bogus - warnings for _Generic. This matters only for older compilers that - lack __builtin_add_overflow. */ -#if __GNUC__ + warnings for _Generic. This matters only for compilers that + lack relevant builtins. */ +#if __GNUC__ || defined __clang__ # define _GL__GENERIC_BOGUS 1 #else # define _GL__GENERIC_BOGUS 0 #endif /* Store the low-order bits of A B into *R, where OP specifies - the operation. BUILTIN is the builtin operation, and OVERFLOW the - overflow predicate. Return 1 if the result overflows. See above - for restrictions. */ -#if _GL_HAS_BUILTIN_OVERFLOW -# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) -#elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS -# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ + the operation and OVERFLOW the overflow predicate. Return 1 if the + result overflows. See above for restrictions. */ +#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ (_Generic \ (*(r), \ signed char: \ @@ -442,7 +486,7 @@ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) # endif -# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ (sizeof *(r) == sizeof (signed char) \ ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ signed char, SCHAR_MIN, SCHAR_MAX, \ @@ -547,7 +591,7 @@ ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ ? (a) < (tmax) / (b) \ : ((INT_NEGATE_OVERFLOW (b) \ - ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (b) - 1) \ + ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \ : (tmax) / -(b)) \ <= -1 - (a))) \ : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ @@ -563,4 +607,33 @@ : (tmin) / (a) < (b)) \ : (tmax) / (b) < (a))) +/* The following macros compute A + B, A - B, and A * B, respectively. + If no overflow occurs, they set *R to the result and return 1; + otherwise, they return 0 and may modify *R. + + Example usage: + + long int result; + if (INT_ADD_OK (a, b, &result)) + printf ("result is %ld\n", result); + else + printf ("overflow\n"); + + A, B, and *R should be integers; they need not be the same type, + and they need not be all signed or all unsigned. + + These macros work correctly on all known practical hosts, and do not rely + on undefined behavior due to signed arithmetic overflow. + + These macros are not constant expressions. + + These macros may evaluate their arguments zero or multiple times, so the + arguments should not have side effects. + + These macros are tuned for B being a constant. */ + +#define INT_ADD_OK(a, b, r) ! INT_ADD_WRAPV (a, b, r) +#define INT_SUBTRACT_OK(a, b, r) ! INT_SUBTRACT_WRAPV (a, b, r) +#define INT_MULTIPLY_OK(a, b, r) ! INT_MULTIPLY_WRAPV (a, b, r) + #endif /* _GL_INTPROPS_H */ diff -urN gawk-5.1.0/support/libc-config.h gawk-5.1.1/support/libc-config.h --- gawk-5.1.0/support/libc-config.h 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/support/libc-config.h 2021-10-23 21:49:15.000000000 +0300 @@ -1,6 +1,6 @@ /* System definitions for code taken from the GNU C Library - Copyright 2017-2019 Free Software Foundation, Inc. + Copyright 2017-2021 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -28,14 +28,17 @@ When compiled as part of glibc this is a no-op; when compiled as part of Gnulib this includes Gnulib's and defines macros - that glibc library code would normally assume. */ + that glibc library code would normally assume. + + Note: This header file MUST NOT be included by public header files + of Gnulib. */ #include /* On glibc this includes and and #defines - _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 it - includes which defines __nonnull. Elsewhere it - is harmless. */ + _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 and + DragonFlyBSD 5.9 it includes which defines __nonnull. + Elsewhere it is harmless. */ #include /* From glibc . */ @@ -55,114 +58,127 @@ #ifndef __glibc_clang_prereq # if defined __clang_major__ && defined __clang_minor__ -# define __glibc_clang_prereq(maj, min) \ - ((maj) < __clang_major__ + ((min) <= __clang_minor__)) +# ifdef __apple_build_version__ +/* Apple for some reason renumbers __clang_major__ and __clang_minor__. + Gnulib code uses only __glibc_clang_prereq (3, 5); map it to + 6000000 <= __apple_build_version__. Support for other calls to + __glibc_clang_prereq can be added here as needed. */ +# define __glibc_clang_prereq(maj, min) \ + ((maj) == 3 && (min) == 5 ? 6000000 <= __apple_build_version__ : 0) +# else +# define __glibc_clang_prereq(maj, min) \ + ((maj) < __clang_major__ + ((min) <= __clang_minor__)) +# endif # else # define __glibc_clang_prereq(maj, min) 0 # endif #endif - -/* Prepare to include , which is our copy of glibc - . */ +#ifndef __attribute_nonnull__ +/* either does not exist, or is too old for Gnulib. + Prepare to include , which is Gnulib's version of a + more-recent glibc . */ /* Define _FEATURES_H so that does not include . */ -#ifndef _FEATURES_H -# define _FEATURES_H 1 -#endif -/* Define __WORDSIZE so that does not attempt to include - nonexistent files. Make it a syntax error, since Gnulib does not - use __WORDSIZE now, and if Gnulib uses it later the syntax error - will let us know that __WORDSIZE needs configuring. */ -#ifndef __WORDSIZE -# define __WORDSIZE %%% -#endif +# ifndef _FEATURES_H +# define _FEATURES_H 1 +# endif +/* Define __GNULIB_CDEFS so that does not attempt to include + nonexistent files. */ +# define __GNULIB_CDEFS /* Undef the macros unconditionally defined by our copy of glibc , so that they do not clash with any system-defined versions. */ -#undef _SYS_CDEFS_H -#undef __ASMNAME -#undef __ASMNAME2 -#undef __BEGIN_DECLS -#undef __CONCAT -#undef __END_DECLS -#undef __HAVE_GENERIC_SELECTION -#undef __LDBL_COMPAT -#undef __LDBL_REDIR -#undef __LDBL_REDIR1 -#undef __LDBL_REDIR1_DECL -#undef __LDBL_REDIR1_NTH -#undef __LDBL_REDIR_DECL -#undef __LDBL_REDIR_NTH -#undef __LEAF -#undef __LEAF_ATTR -#undef __NTH -#undef __NTHNL -#undef __P -#undef __PMT -#undef __REDIRECT -#undef __REDIRECT_LDBL -#undef __REDIRECT_NTH -#undef __REDIRECT_NTHNL -#undef __REDIRECT_NTH_LDBL -#undef __STRING -#undef __THROW -#undef __THROWNL -#undef __always_inline -#undef __attribute__ -#undef __attribute_alloc_size__ -#undef __attribute_artificial__ -#undef __attribute_const__ -#undef __attribute_deprecated__ -#undef __attribute_deprecated_msg__ -#undef __attribute_format_arg__ -#undef __attribute_format_strfmon__ -#undef __attribute_malloc__ -#undef __attribute_noinline__ -#undef __attribute_nonstring__ -#undef __attribute_pure__ -#undef __attribute_used__ -#undef __attribute_warn_unused_result__ -#undef __bos -#undef __bos0 -#undef __errordecl -#undef __extension__ -#undef __extern_always_inline -#undef __extern_inline -#undef __flexarr -#undef __fortify_function -#undef __glibc_c99_flexarr_available -#undef __glibc_clang_has_extension -#undef __glibc_likely -#undef __glibc_macro_warning -#undef __glibc_macro_warning1 -#undef __glibc_unlikely -#undef __inline -#undef __ptr_t -#undef __restrict -#undef __restrict_arr -#undef __va_arg_pack -#undef __va_arg_pack_len -#undef __warnattr -#undef __warndecl +# undef _SYS_CDEFS_H +# undef __ASMNAME +# undef __ASMNAME2 +# undef __BEGIN_DECLS +# undef __CONCAT +# undef __END_DECLS +# undef __HAVE_GENERIC_SELECTION +# undef __LDBL_COMPAT +# undef __LDBL_REDIR +# undef __LDBL_REDIR1 +# undef __LDBL_REDIR1_DECL +# undef __LDBL_REDIR1_NTH +# undef __LDBL_REDIR2_DECL +# undef __LDBL_REDIR_DECL +# undef __LDBL_REDIR_NTH +# undef __LEAF +# undef __LEAF_ATTR +# undef __NTH +# undef __NTHNL +# undef __REDIRECT +# undef __REDIRECT_LDBL +# undef __REDIRECT_NTH +# undef __REDIRECT_NTHNL +# undef __REDIRECT_NTH_LDBL +# undef __STRING +# undef __THROW +# undef __THROWNL +# undef __attr_access +# undef __attr_access_none +# undef __attr_dealloc +# undef __attr_dealloc_free +# undef __attribute__ +# undef __attribute_alloc_size__ +# undef __attribute_artificial__ +# undef __attribute_const__ +# undef __attribute_deprecated__ +# undef __attribute_deprecated_msg__ +# undef __attribute_format_arg__ +# undef __attribute_format_strfmon__ +# undef __attribute_malloc__ +# undef __attribute_noinline__ +# undef __attribute_nonstring__ +# undef __attribute_pure__ +# undef __attribute_returns_twice__ +# undef __attribute_used__ +# undef __attribute_warn_unused_result__ +# undef __bos +# undef __bos0 +# undef __errordecl +# undef __extension__ +# undef __extern_always_inline +# undef __extern_inline +# undef __flexarr +# undef __fortify_function +# undef __glibc_c99_flexarr_available +# undef __glibc_has_attribute +# undef __glibc_has_builtin +# undef __glibc_has_extension +# undef __glibc_macro_warning +# undef __glibc_macro_warning1 +# undef __glibc_objsize +# undef __glibc_objsize0 +# undef __glibc_unlikely +# undef __inline +# undef __ptr_t +# undef __restrict +# undef __restrict_arr +# undef __va_arg_pack +# undef __va_arg_pack_len +# undef __warnattr /* Include our copy of glibc . */ -#include +# include /* __inline is too pessimistic for non-GCC. */ -#undef __inline -#ifndef HAVE___INLINE -# if 199901 <= __STDC_VERSION__ || defined inline -# define __inline inline -# else -# define __inline +# undef __inline +# ifndef HAVE___INLINE +# if 199901 <= __STDC_VERSION__ || defined inline +# define __inline inline +# else +# define __inline +# endif # endif -#endif + +#endif /* defined __glibc_likely */ /* A substitute for glibc , good enough for Gnulib. */ #define attribute_hidden -#define libc_hidden_proto(name, ...) +#define libc_hidden_proto(name) #define libc_hidden_def(name) #define libc_hidden_weak(name) #define libc_hidden_ver(local, name) @@ -171,4 +187,5 @@ /* A substitute for glibc , good enough for Gnulib. */ #define SHLIB_COMPAT(lib, introduced, obsoleted) 0 -#define versioned_symbol(lib, local, symbol, version) +#define compat_symbol(lib, local, symbol, version) extern int dummy +#define versioned_symbol(lib, local, symbol, version) extern int dummy diff -urN gawk-5.1.0/support/localeinfo.c gawk-5.1.1/support/localeinfo.c --- gawk-5.1.0/support/localeinfo.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/localeinfo.c 2021-10-23 21:50:35.000000000 +0300 @@ -1,6 +1,6 @@ /* locale information - Copyright 2016-2019 Free Software Foundation, Inc. + Copyright 2016-2021 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 @@ -81,7 +81,7 @@ where the native order is the collating-sequence order but there are multi-character collating elements. */ for (int i = 0; i < UCHAR_MAX; i++) - if (strcoll (((char []) {i, 0}), ((char []) {i + 1, 0})) <= 0) + if (0 <= strcoll (((char []) {i, 0}), ((char []) {i + 1, 0}))) return false; return true; diff -urN gawk-5.1.0/support/localeinfo.h gawk-5.1.1/support/localeinfo.h --- gawk-5.1.0/support/localeinfo.h 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/localeinfo.h 2021-10-24 20:31:24.000000000 +0300 @@ -1,6 +1,6 @@ /* locale information - Copyright 2016-2019 Free Software Foundation, Inc. + Copyright 2016-2021 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 diff -urN gawk-5.1.0/support/Makefile.am gawk-5.1.1/support/Makefile.am --- gawk-5.1.0/support/Makefile.am 2020-03-06 12:16:24.000000000 +0200 +++ gawk-5.1.1/support/Makefile.am 2021-10-28 20:17:25.000000000 +0300 @@ -1,7 +1,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2016, 2018, 2019 the Free Software Foundation, Inc. +# Copyright (C) 2000-2016, 2018, 2019, 2021 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -26,29 +26,36 @@ AM_CFLAGS = @CFLAGS@ AM_LDFLAGS = @LDFLAGS@ +AR = @AR@ + # Stuff to include in the dist that doesn't need it's own # Makefile.am files EXTRA_DIST = \ + ChangeLog.0 \ Makefile.am \ Makefile.in \ - cdefs.h \ - libc-config.h \ regcomp.c \ regex_internal.c \ regex_internal.h \ - regexec.c + regexec.c \ + malloc/dynarray-skeleton.c # what to make and install noinst_LIBRARIES = libsupport.a libsupport_a_SOURCES = \ + attribute.h \ + cdefs.h \ dfa.c \ dfa.h \ + dynarray.h \ flexmember.h \ getopt.c \ getopt.h \ - getopt_int.h \ getopt1.c \ + getopt_int.h \ + idx.h \ intprops.h \ + libc-config.h \ localeinfo.c \ localeinfo.h \ random.c \ @@ -56,7 +63,13 @@ regex.c \ regex.h \ verify.h \ - xalloc.h + xalloc.h \ + malloc/dynarray.h \ + malloc/dynarray_at_failure.c \ + malloc/dynarray_emplace_enlarge.c \ + malloc/dynarray_finalize.c \ + malloc/dynarray_resize.c \ + malloc/dynarray_resize_clear.c # For some make's, e.g. OpenBSD, that don't define this RM = rm -f diff -urN gawk-5.1.0/support/Makefile.in gawk-5.1.1/support/Makefile.in --- gawk-5.1.0/support/Makefile.in 2020-04-14 14:44:52.000000000 +0300 +++ gawk-5.1.1/support/Makefile.in 2021-10-28 20:19:59.000000000 +0300 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -17,7 +17,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2016, 2018, 2019 the Free Software Foundation, Inc. +# Copyright (C) 2000-2016, 2018, 2019, 2021 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -115,25 +115,24 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libsigsegv.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \ - $(top_srcdir)/m4/socket.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \ $(top_srcdir)/m4/triplet-transformation.m4 \ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) -AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) @@ -141,9 +140,14 @@ am__v_AR_1 = libsupport_a_AR = $(AR) $(ARFLAGS) libsupport_a_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp am_libsupport_a_OBJECTS = dfa.$(OBJEXT) getopt.$(OBJEXT) \ getopt1.$(OBJEXT) localeinfo.$(OBJEXT) random.$(OBJEXT) \ - regex.$(OBJEXT) + regex.$(OBJEXT) malloc/dynarray_at_failure.$(OBJEXT) \ + malloc/dynarray_emplace_enlarge.$(OBJEXT) \ + malloc/dynarray_finalize.$(OBJEXT) \ + malloc/dynarray_resize.$(OBJEXT) \ + malloc/dynarray_resize_clear.$(OBJEXT) libsupport_a_OBJECTS = $(am_libsupport_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -158,11 +162,16 @@ am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/dfa.Po ./$(DEPDIR)/getopt.Po \ ./$(DEPDIR)/getopt1.Po ./$(DEPDIR)/localeinfo.Po \ - ./$(DEPDIR)/random.Po ./$(DEPDIR)/regex.Po + ./$(DEPDIR)/random.Po ./$(DEPDIR)/regex.Po \ + malloc/$(DEPDIR)/dynarray_at_failure.Po \ + malloc/$(DEPDIR)/dynarray_emplace_enlarge.Po \ + malloc/$(DEPDIR)/dynarray_finalize.Po \ + malloc/$(DEPDIR)/dynarray_resize.Po \ + malloc/$(DEPDIR)/dynarray_resize_clear.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -200,14 +209,13 @@ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/mkinstalldirs ChangeLog +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/depcomp ChangeLog DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -217,6 +225,8 @@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = -DGAWK -DHAVE_CONFIG_H -I"$(srcdir)/.." DEPDIR = @DEPDIR@ @@ -224,6 +234,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GAWKLIBEXT = @GAWKLIBEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ @@ -255,8 +266,8 @@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -285,6 +296,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ acl_shlibext = @acl_shlibext@ am__include = @am__include@ @@ -341,27 +353,32 @@ # Stuff to include in the dist that doesn't need it's own # Makefile.am files EXTRA_DIST = \ + ChangeLog.0 \ Makefile.am \ Makefile.in \ - cdefs.h \ - libc-config.h \ regcomp.c \ regex_internal.c \ regex_internal.h \ - regexec.c + regexec.c \ + malloc/dynarray-skeleton.c # what to make and install noinst_LIBRARIES = libsupport.a libsupport_a_SOURCES = \ + attribute.h \ + cdefs.h \ dfa.c \ dfa.h \ + dynarray.h \ flexmember.h \ getopt.c \ getopt.h \ - getopt_int.h \ getopt1.c \ + getopt_int.h \ + idx.h \ intprops.h \ + libc-config.h \ localeinfo.c \ localeinfo.h \ random.c \ @@ -369,7 +386,13 @@ regex.c \ regex.h \ verify.h \ - xalloc.h + xalloc.h \ + malloc/dynarray.h \ + malloc/dynarray_at_failure.c \ + malloc/dynarray_emplace_enlarge.c \ + malloc/dynarray_finalize.c \ + malloc/dynarray_resize.c \ + malloc/dynarray_resize_clear.c # For some make's, e.g. OpenBSD, that don't define this @@ -410,6 +433,22 @@ clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +malloc/$(am__dirstamp): + @$(MKDIR_P) malloc + @: > malloc/$(am__dirstamp) +malloc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) malloc/$(DEPDIR) + @: > malloc/$(DEPDIR)/$(am__dirstamp) +malloc/dynarray_at_failure.$(OBJEXT): malloc/$(am__dirstamp) \ + malloc/$(DEPDIR)/$(am__dirstamp) +malloc/dynarray_emplace_enlarge.$(OBJEXT): malloc/$(am__dirstamp) \ + malloc/$(DEPDIR)/$(am__dirstamp) +malloc/dynarray_finalize.$(OBJEXT): malloc/$(am__dirstamp) \ + malloc/$(DEPDIR)/$(am__dirstamp) +malloc/dynarray_resize.$(OBJEXT): malloc/$(am__dirstamp) \ + malloc/$(DEPDIR)/$(am__dirstamp) +malloc/dynarray_resize_clear.$(OBJEXT): malloc/$(am__dirstamp) \ + malloc/$(DEPDIR)/$(am__dirstamp) libsupport.a: $(libsupport_a_OBJECTS) $(libsupport_a_DEPENDENCIES) $(EXTRA_libsupport_a_DEPENDENCIES) $(AM_V_at)-rm -f libsupport.a @@ -418,6 +457,7 @@ mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f malloc/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @@ -428,6 +468,11 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localeinfo.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/dynarray_at_failure.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/dynarray_emplace_enlarge.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/dynarray_finalize.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/dynarray_resize.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/dynarray_resize_clear.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -436,15 +481,17 @@ am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @@ -500,7 +547,6 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -564,6 +610,8 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f malloc/$(DEPDIR)/$(am__dirstamp) + -rm -f malloc/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -579,6 +627,11 @@ -rm -f ./$(DEPDIR)/localeinfo.Po -rm -f ./$(DEPDIR)/random.Po -rm -f ./$(DEPDIR)/regex.Po + -rm -f malloc/$(DEPDIR)/dynarray_at_failure.Po + -rm -f malloc/$(DEPDIR)/dynarray_emplace_enlarge.Po + -rm -f malloc/$(DEPDIR)/dynarray_finalize.Po + -rm -f malloc/$(DEPDIR)/dynarray_resize.Po + -rm -f malloc/$(DEPDIR)/dynarray_resize_clear.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags @@ -630,6 +683,11 @@ -rm -f ./$(DEPDIR)/localeinfo.Po -rm -f ./$(DEPDIR)/random.Po -rm -f ./$(DEPDIR)/regex.Po + -rm -f malloc/$(DEPDIR)/dynarray_at_failure.Po + -rm -f malloc/$(DEPDIR)/dynarray_emplace_enlarge.Po + -rm -f malloc/$(DEPDIR)/dynarray_finalize.Po + -rm -f malloc/$(DEPDIR)/dynarray_resize.Po + -rm -f malloc/$(DEPDIR)/dynarray_resize_clear.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff -urN gawk-5.1.0/support/malloc/dynarray_at_failure.c gawk-5.1.1/support/malloc/dynarray_at_failure.c --- gawk-5.1.0/support/malloc/dynarray_at_failure.c 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/malloc/dynarray_at_failure.c 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,40 @@ +/* Report an dynamic array index out of bounds condition. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LIBC +# include +# include +#endif + +#include +#include + +void +__libc_dynarray_at_failure (size_t size, size_t index) +{ +#ifdef _LIBC + char buf[200]; + __snprintf (buf, sizeof (buf), "Fatal glibc error: " + "array index %zu not less than array length %zu\n", + index, size); + __libc_fatal (buf); +#else + abort (); +#endif +} +libc_hidden_def (__libc_dynarray_at_failure) diff -urN gawk-5.1.0/support/malloc/dynarray_emplace_enlarge.c gawk-5.1.1/support/malloc/dynarray_emplace_enlarge.c --- gawk-5.1.0/support/malloc/dynarray_emplace_enlarge.c 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/malloc/dynarray_emplace_enlarge.c 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,77 @@ +/* Increase the size of a dynamic array in preparation of an emplace operation. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LIBC +# include +#endif + +#include +#include +#include +#include +#include + +bool +__libc_dynarray_emplace_enlarge (struct dynarray_header *list, + void *scratch, size_t element_size) +{ + size_t new_allocated; + if (list->allocated == 0) + { + /* No scratch buffer provided. Choose a reasonable default + size. */ + if (element_size < 4) + new_allocated = 16; + else if (element_size < 8) + new_allocated = 8; + else + new_allocated = 4; + } + else + /* Increase the allocated size, using an exponential growth + policy. */ + { + new_allocated = list->allocated + list->allocated / 2 + 1; + if (new_allocated <= list->allocated) + { + /* Overflow. */ + __set_errno (ENOMEM); + return false; + } + } + + size_t new_size; + if (INT_MULTIPLY_WRAPV (new_allocated, element_size, &new_size)) + return false; + void *new_array; + if (list->array == scratch) + { + /* The previous array was not heap-allocated. */ + new_array = malloc (new_size); + if (new_array != NULL && list->array != NULL) + memcpy (new_array, list->array, list->used * element_size); + } + else + new_array = realloc (list->array, new_size); + if (new_array == NULL) + return false; + list->array = new_array; + list->allocated = new_allocated; + return true; +} +libc_hidden_def (__libc_dynarray_emplace_enlarge) diff -urN gawk-5.1.0/support/malloc/dynarray_finalize.c gawk-5.1.1/support/malloc/dynarray_finalize.c --- gawk-5.1.0/support/malloc/dynarray_finalize.c 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/malloc/dynarray_finalize.c 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,66 @@ +/* Copy the dynamically-allocated area to an explicitly-sized heap allocation. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LIBC +# include +#endif + +#include +#include +#include + +bool +__libc_dynarray_finalize (struct dynarray_header *list, + void *scratch, size_t element_size, + struct dynarray_finalize_result *result) +{ + if (__dynarray_error (list)) + /* The caller will reported the deferred error. */ + return false; + + size_t used = list->used; + + /* Empty list. */ + if (used == 0) + { + /* An empty list could still be backed by a heap-allocated + array. Free it if necessary. */ + if (list->array != scratch) + free (list->array); + *result = (struct dynarray_finalize_result) { NULL, 0 }; + return true; + } + + size_t allocation_size = used * element_size; + void *heap_array = malloc (allocation_size); + if (heap_array != NULL) + { + /* The new array takes ownership of the strings. */ + if (list->array != NULL) + memcpy (heap_array, list->array, allocation_size); + if (list->array != scratch) + free (list->array); + *result = (struct dynarray_finalize_result) + { .array = heap_array, .length = used }; + return true; + } + else + /* The caller will perform the freeing operation. */ + return false; +} +libc_hidden_def (__libc_dynarray_finalize) diff -urN gawk-5.1.0/support/malloc/dynarray.h gawk-5.1.1/support/malloc/dynarray.h --- gawk-5.1.0/support/malloc/dynarray.h 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/malloc/dynarray.h 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,178 @@ +/* Type-safe arrays which grow dynamically. Shared definitions. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* To use the dynarray facility, you need to include + and define the parameter macros + documented in that file. + + A minimal example which provides a growing list of integers can be + defined like this: + + struct int_array + { + // Pointer to result array followed by its length, + // as required by DYNARRAY_FINAL_TYPE. + int *array; + size_t length; + }; + + #define DYNARRAY_STRUCT dynarray_int + #define DYNARRAY_ELEMENT int + #define DYNARRAY_PREFIX dynarray_int_ + #define DYNARRAY_FINAL_TYPE struct int_array + #include + + To create a three-element array with elements 1, 2, 3, use this + code: + + struct dynarray_int dyn; + dynarray_int_init (&dyn); + for (int i = 1; i <= 3; ++i) + { + int *place = dynarray_int_emplace (&dyn); + assert (place != NULL); + *place = i; + } + struct int_array result; + bool ok = dynarray_int_finalize (&dyn, &result); + assert (ok); + assert (result.length == 3); + assert (result.array[0] == 1); + assert (result.array[1] == 2); + assert (result.array[2] == 3); + free (result.array); + + If the elements contain resources which must be freed, define + DYNARRAY_ELEMENT_FREE appropriately, like this: + + struct str_array + { + char **array; + size_t length; + }; + + #define DYNARRAY_STRUCT dynarray_str + #define DYNARRAY_ELEMENT char * + #define DYNARRAY_ELEMENT_FREE(ptr) free (*ptr) + #define DYNARRAY_PREFIX dynarray_str_ + #define DYNARRAY_FINAL_TYPE struct str_array + #include + + Compared to scratch buffers, dynamic arrays have the following + features: + + - They have an element type, and are not just an untyped buffer of + bytes. + + - When growing, previously stored elements are preserved. (It is + expected that scratch_buffer_grow_preserve and + scratch_buffer_set_array_size eventually go away because all + current users are moved to dynamic arrays.) + + - Scratch buffers have a more aggressive growth policy because + growing them typically means a retry of an operation (across an + NSS service module boundary), which is expensive. + + - For the same reason, scratch buffers have a much larger initial + stack allocation. */ + +#ifndef _DYNARRAY_H +#define _DYNARRAY_H + +#include +#include +#include + +struct dynarray_header +{ + size_t used; + size_t allocated; + void *array; +}; + +/* Marker used in the allocated member to indicate that an error was + encountered. */ +static inline size_t +__dynarray_error_marker (void) +{ + return -1; +} + +/* Internal function. See the has_failed function in + dynarray-skeleton.c. */ +static inline bool +__dynarray_error (struct dynarray_header *list) +{ + return list->allocated == __dynarray_error_marker (); +} + +/* Internal function. Enlarge the dynamically allocated area of the + array to make room for one more element. SCRATCH is a pointer to + the scratch area (which is not heap-allocated and must not be + freed). ELEMENT_SIZE is the size, in bytes, of one element. + Return false on failure, true on success. */ +bool __libc_dynarray_emplace_enlarge (struct dynarray_header *, + void *scratch, size_t element_size); + +/* Internal function. Enlarge the dynamically allocated area of the + array to make room for at least SIZE elements (which must be larger + than the existing used part of the dynamic array). SCRATCH is a + pointer to the scratch area (which is not heap-allocated and must + not be freed). ELEMENT_SIZE is the size, in bytes, of one element. + Return false on failure, true on success. */ +bool __libc_dynarray_resize (struct dynarray_header *, size_t size, + void *scratch, size_t element_size); + +/* Internal function. Like __libc_dynarray_resize, but clear the new + part of the dynamic array. */ +bool __libc_dynarray_resize_clear (struct dynarray_header *, size_t size, + void *scratch, size_t element_size); + +/* Internal type. */ +struct dynarray_finalize_result +{ + void *array; + size_t length; +}; + +/* Internal function. Copy the dynamically-allocated area to an + explicitly-sized heap allocation. SCRATCH is a pointer to the + embedded scratch space. ELEMENT_SIZE is the size, in bytes, of the + element type. On success, true is returned, and pointer and length + are written to *RESULT. On failure, false is returned. The caller + has to take care of some of the memory management; this function is + expected to be called from dynarray-skeleton.c. */ +bool __libc_dynarray_finalize (struct dynarray_header *list, void *scratch, + size_t element_size, + struct dynarray_finalize_result *result); + + +/* Internal function. Terminate the process after an index error. + SIZE is the number of elements of the dynamic array. INDEX is the + lookup index which triggered the failure. */ +_Noreturn void __libc_dynarray_at_failure (size_t size, size_t index); + +#ifndef _ISOMAC +libc_hidden_proto (__libc_dynarray_emplace_enlarge) +libc_hidden_proto (__libc_dynarray_resize) +libc_hidden_proto (__libc_dynarray_resize_clear) +libc_hidden_proto (__libc_dynarray_finalize) +libc_hidden_proto (__libc_dynarray_at_failure) +#endif + +#endif /* _DYNARRAY_H */ diff -urN gawk-5.1.0/support/malloc/dynarray_resize.c gawk-5.1.1/support/malloc/dynarray_resize.c --- gawk-5.1.0/support/malloc/dynarray_resize.c 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/malloc/dynarray_resize.c 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,68 @@ +/* Increase the size of a dynamic array. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LIBC +# include +#endif + +#include +#include +#include +#include +#include + +bool +__libc_dynarray_resize (struct dynarray_header *list, size_t size, + void *scratch, size_t element_size) +{ + /* The existing allocation provides sufficient room. */ + if (size <= list->allocated) + { + list->used = size; + return true; + } + + /* Otherwise, use size as the new allocation size. The caller is + expected to provide the final size of the array, so there is no + over-allocation here. */ + + size_t new_size_bytes; + if (INT_MULTIPLY_WRAPV (size, element_size, &new_size_bytes)) + { + /* Overflow. */ + __set_errno (ENOMEM); + return false; + } + void *new_array; + if (list->array == scratch) + { + /* The previous array was not heap-allocated. */ + new_array = malloc (new_size_bytes); + if (new_array != NULL && list->array != NULL) + memcpy (new_array, list->array, list->used * element_size); + } + else + new_array = realloc (list->array, new_size_bytes); + if (new_array == NULL) + return false; + list->array = new_array; + list->allocated = size; + list->used = size; + return true; +} +libc_hidden_def (__libc_dynarray_resize) diff -urN gawk-5.1.0/support/malloc/dynarray_resize_clear.c gawk-5.1.1/support/malloc/dynarray_resize_clear.c --- gawk-5.1.0/support/malloc/dynarray_resize_clear.c 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/malloc/dynarray_resize_clear.c 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,39 @@ +/* Increase the size of a dynamic array and clear the new part. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LIBC +# include +#endif + +#include +#include + +bool +__libc_dynarray_resize_clear (struct dynarray_header *list, size_t size, + void *scratch, size_t element_size) +{ + size_t old_size = list->used; + if (!__libc_dynarray_resize (list, size, scratch, element_size)) + return false; + /* __libc_dynarray_resize already checked for overflow. */ + char *array = list->array; + memset (array + (old_size * element_size), 0, + (size - old_size) * element_size); + return true; +} +libc_hidden_def (__libc_dynarray_resize_clear) diff -urN gawk-5.1.0/support/malloc/dynarray-skeleton.c gawk-5.1.1/support/malloc/dynarray-skeleton.c --- gawk-5.1.0/support/malloc/dynarray-skeleton.c 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/support/malloc/dynarray-skeleton.c 2021-10-23 21:49:15.000000000 +0300 @@ -0,0 +1,528 @@ +/* Type-safe arrays which grow dynamically. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* Pre-processor macros which act as parameters: + + DYNARRAY_STRUCT + The struct tag of dynamic array to be defined. + DYNARRAY_ELEMENT + The type name of the element type. Elements are copied + as if by memcpy, and can change address as the dynamic + array grows. + DYNARRAY_PREFIX + The prefix of the functions which are defined. + + The following parameters are optional: + + DYNARRAY_ELEMENT_FREE + DYNARRAY_ELEMENT_FREE (E) is evaluated to deallocate the + contents of elements. E is of type DYNARRAY_ELEMENT *. + DYNARRAY_ELEMENT_INIT + DYNARRAY_ELEMENT_INIT (E) is evaluated to initialize a new + element. E is of type DYNARRAY_ELEMENT *. + If DYNARRAY_ELEMENT_FREE but not DYNARRAY_ELEMENT_INIT is + defined, new elements are automatically zero-initialized. + Otherwise, new elements have undefined contents. + DYNARRAY_INITIAL_SIZE + The size of the statically allocated array (default: + at least 2, more elements if they fit into 128 bytes). + Must be a preprocessor constant. If DYNARRAY_INITIAL_SIZE is 0, + there is no statically allocated array at, and all non-empty + arrays are heap-allocated. + DYNARRAY_FINAL_TYPE + The name of the type which holds the final array. If not + defined, is PREFIX##finalize not provided. DYNARRAY_FINAL_TYPE + must be a struct type, with members of type DYNARRAY_ELEMENT and + size_t at the start (in this order). + + These macros are undefined after this header file has been + included. + + The following types are provided (their members are private to the + dynarray implementation): + + struct DYNARRAY_STRUCT + + The following functions are provided: + + void DYNARRAY_PREFIX##init (struct DYNARRAY_STRUCT *); + void DYNARRAY_PREFIX##free (struct DYNARRAY_STRUCT *); + bool DYNARRAY_PREFIX##has_failed (const struct DYNARRAY_STRUCT *); + void DYNARRAY_PREFIX##mark_failed (struct DYNARRAY_STRUCT *); + size_t DYNARRAY_PREFIX##size (const struct DYNARRAY_STRUCT *); + DYNARRAY_ELEMENT *DYNARRAY_PREFIX##begin (const struct DYNARRAY_STRUCT *); + DYNARRAY_ELEMENT *DYNARRAY_PREFIX##end (const struct DYNARRAY_STRUCT *); + DYNARRAY_ELEMENT *DYNARRAY_PREFIX##at (struct DYNARRAY_STRUCT *, size_t); + void DYNARRAY_PREFIX##add (struct DYNARRAY_STRUCT *, DYNARRAY_ELEMENT); + DYNARRAY_ELEMENT *DYNARRAY_PREFIX##emplace (struct DYNARRAY_STRUCT *); + bool DYNARRAY_PREFIX##resize (struct DYNARRAY_STRUCT *, size_t); + void DYNARRAY_PREFIX##remove_last (struct DYNARRAY_STRUCT *); + void DYNARRAY_PREFIX##clear (struct DYNARRAY_STRUCT *); + + The following functions are provided are provided if the + prerequisites are met: + + bool DYNARRAY_PREFIX##finalize (struct DYNARRAY_STRUCT *, + DYNARRAY_FINAL_TYPE *); + (if DYNARRAY_FINAL_TYPE is defined) + DYNARRAY_ELEMENT *DYNARRAY_PREFIX##finalize (struct DYNARRAY_STRUCT *, + size_t *); + (if DYNARRAY_FINAL_TYPE is not defined) +*/ + +#include + +#include +#include +#include + +#ifndef DYNARRAY_STRUCT +# error "DYNARRAY_STRUCT must be defined" +#endif + +#ifndef DYNARRAY_ELEMENT +# error "DYNARRAY_ELEMENT must be defined" +#endif + +#ifndef DYNARRAY_PREFIX +# error "DYNARRAY_PREFIX must be defined" +#endif + +#ifdef DYNARRAY_INITIAL_SIZE +# if DYNARRAY_INITIAL_SIZE < 0 +# error "DYNARRAY_INITIAL_SIZE must be non-negative" +# endif +# if DYNARRAY_INITIAL_SIZE > 0 +# define DYNARRAY_HAVE_SCRATCH 1 +# else +# define DYNARRAY_HAVE_SCRATCH 0 +# endif +#else +/* Provide a reasonable default which limits the size of + DYNARRAY_STRUCT. */ +# define DYNARRAY_INITIAL_SIZE \ + (sizeof (DYNARRAY_ELEMENT) > 64 ? 2 : 128 / sizeof (DYNARRAY_ELEMENT)) +# define DYNARRAY_HAVE_SCRATCH 1 +#endif + +/* Public type definitions. */ + +/* All fields of this struct are private to the implementation. */ +struct DYNARRAY_STRUCT +{ + union + { + struct dynarray_header dynarray_abstract; + struct + { + /* These fields must match struct dynarray_header. */ + size_t used; + size_t allocated; + DYNARRAY_ELEMENT *array; + } dynarray_header; + } u; + +#if DYNARRAY_HAVE_SCRATCH + /* Initial inline allocation. */ + DYNARRAY_ELEMENT scratch[DYNARRAY_INITIAL_SIZE]; +#endif +}; + +/* Internal use only: Helper macros. */ + +/* Ensure macro-expansion of DYNARRAY_PREFIX. */ +#define DYNARRAY_CONCAT0(prefix, name) prefix##name +#define DYNARRAY_CONCAT1(prefix, name) DYNARRAY_CONCAT0(prefix, name) +#define DYNARRAY_NAME(name) DYNARRAY_CONCAT1(DYNARRAY_PREFIX, name) + +/* Use DYNARRAY_FREE instead of DYNARRAY_NAME (free), + so that Gnulib does not change 'free' to 'rpl_free'. */ +#define DYNARRAY_FREE DYNARRAY_CONCAT1 (DYNARRAY_NAME (f), ree) + +/* Address of the scratch buffer if any. */ +#if DYNARRAY_HAVE_SCRATCH +# define DYNARRAY_SCRATCH(list) (list)->scratch +#else +# define DYNARRAY_SCRATCH(list) NULL +#endif + +/* Internal use only: Helper functions. */ + +/* Internal function. Call DYNARRAY_ELEMENT_FREE with the array + elements. Name mangling needed due to the DYNARRAY_ELEMENT_FREE + macro expansion. */ +static inline void +DYNARRAY_NAME (free__elements__) (DYNARRAY_ELEMENT *__dynarray_array, + size_t __dynarray_used) +{ +#ifdef DYNARRAY_ELEMENT_FREE + for (size_t __dynarray_i = 0; __dynarray_i < __dynarray_used; ++__dynarray_i) + DYNARRAY_ELEMENT_FREE (&__dynarray_array[__dynarray_i]); +#endif /* DYNARRAY_ELEMENT_FREE */ +} + +/* Internal function. Free the non-scratch array allocation. */ +static inline void +DYNARRAY_NAME (free__array__) (struct DYNARRAY_STRUCT *list) +{ +#if DYNARRAY_HAVE_SCRATCH + if (list->u.dynarray_header.array != list->scratch) + free (list->u.dynarray_header.array); +#else + free (list->u.dynarray_header.array); +#endif +} + +/* Public functions. */ + +/* Initialize a dynamic array object. This must be called before any + use of the object. */ +__attribute_nonnull__ ((1)) +static void +DYNARRAY_NAME (init) (struct DYNARRAY_STRUCT *list) +{ + list->u.dynarray_header.used = 0; + list->u.dynarray_header.allocated = DYNARRAY_INITIAL_SIZE; + list->u.dynarray_header.array = DYNARRAY_SCRATCH (list); +} + +/* Deallocate the dynamic array and its elements. */ +__attribute_maybe_unused__ __attribute_nonnull__ ((1)) +static void +DYNARRAY_FREE (struct DYNARRAY_STRUCT *list) +{ + DYNARRAY_NAME (free__elements__) + (list->u.dynarray_header.array, list->u.dynarray_header.used); + DYNARRAY_NAME (free__array__) (list); + DYNARRAY_NAME (init) (list); +} + +/* Return true if the dynamic array is in an error state. */ +__attribute_nonnull__ ((1)) +static inline bool +DYNARRAY_NAME (has_failed) (const struct DYNARRAY_STRUCT *list) +{ + return list->u.dynarray_header.allocated == __dynarray_error_marker (); +} + +/* Mark the dynamic array as failed. All elements are deallocated as + a side effect. */ +__attribute_nonnull__ ((1)) +static void +DYNARRAY_NAME (mark_failed) (struct DYNARRAY_STRUCT *list) +{ + DYNARRAY_NAME (free__elements__) + (list->u.dynarray_header.array, list->u.dynarray_header.used); + DYNARRAY_NAME (free__array__) (list); + list->u.dynarray_header.array = DYNARRAY_SCRATCH (list); + list->u.dynarray_header.used = 0; + list->u.dynarray_header.allocated = __dynarray_error_marker (); +} + +/* Return the number of elements which have been added to the dynamic + array. */ +__attribute_nonnull__ ((1)) +static inline size_t +DYNARRAY_NAME (size) (const struct DYNARRAY_STRUCT *list) +{ + return list->u.dynarray_header.used; +} + +/* Return a pointer to the array element at INDEX. Terminate the + process if INDEX is out of bounds. */ +__attribute_nonnull__ ((1)) +static inline DYNARRAY_ELEMENT * +DYNARRAY_NAME (at) (struct DYNARRAY_STRUCT *list, size_t index) +{ + if (__glibc_unlikely (index >= DYNARRAY_NAME (size) (list))) + __libc_dynarray_at_failure (DYNARRAY_NAME (size) (list), index); + return list->u.dynarray_header.array + index; +} + +/* Return a pointer to the first array element, if any. For a + zero-length array, the pointer can be NULL even though the dynamic + array has not entered the failure state. */ +__attribute_nonnull__ ((1)) +static inline DYNARRAY_ELEMENT * +DYNARRAY_NAME (begin) (struct DYNARRAY_STRUCT *list) +{ + return list->u.dynarray_header.array; +} + +/* Return a pointer one element past the last array element. For a + zero-length array, the pointer can be NULL even though the dynamic + array has not entered the failure state. */ +__attribute_nonnull__ ((1)) +static inline DYNARRAY_ELEMENT * +DYNARRAY_NAME (end) (struct DYNARRAY_STRUCT *list) +{ + return list->u.dynarray_header.array + list->u.dynarray_header.used; +} + +/* Internal function. Slow path for the add function below. */ +static void +DYNARRAY_NAME (add__) (struct DYNARRAY_STRUCT *list, DYNARRAY_ELEMENT item) +{ + if (__glibc_unlikely + (!__libc_dynarray_emplace_enlarge (&list->u.dynarray_abstract, + DYNARRAY_SCRATCH (list), + sizeof (DYNARRAY_ELEMENT)))) + { + DYNARRAY_NAME (mark_failed) (list); + return; + } + + /* Copy the new element and increase the array length. */ + list->u.dynarray_header.array[list->u.dynarray_header.used++] = item; +} + +/* Add ITEM at the end of the array, enlarging it by one element. + Mark *LIST as failed if the dynamic array allocation size cannot be + increased. */ +__attribute_nonnull__ ((1)) +static inline void +DYNARRAY_NAME (add) (struct DYNARRAY_STRUCT *list, DYNARRAY_ELEMENT item) +{ + /* Do nothing in case of previous error. */ + if (DYNARRAY_NAME (has_failed) (list)) + return; + + /* Enlarge the array if necessary. */ + if (__glibc_unlikely (list->u.dynarray_header.used + == list->u.dynarray_header.allocated)) + { + DYNARRAY_NAME (add__) (list, item); + return; + } + + /* Copy the new element and increase the array length. */ + list->u.dynarray_header.array[list->u.dynarray_header.used++] = item; +} + +/* Internal function. Building block for the emplace functions below. + Assumes space for one more element in *LIST. */ +static inline DYNARRAY_ELEMENT * +DYNARRAY_NAME (emplace__tail__) (struct DYNARRAY_STRUCT *list) +{ + DYNARRAY_ELEMENT *result + = &list->u.dynarray_header.array[list->u.dynarray_header.used]; + ++list->u.dynarray_header.used; +#if defined (DYNARRAY_ELEMENT_INIT) + DYNARRAY_ELEMENT_INIT (result); +#elif defined (DYNARRAY_ELEMENT_FREE) + memset (result, 0, sizeof (*result)); +#endif + return result; +} + +/* Internal function. Slow path for the emplace function below. */ +static DYNARRAY_ELEMENT * +DYNARRAY_NAME (emplace__) (struct DYNARRAY_STRUCT *list) +{ + if (__glibc_unlikely + (!__libc_dynarray_emplace_enlarge (&list->u.dynarray_abstract, + DYNARRAY_SCRATCH (list), + sizeof (DYNARRAY_ELEMENT)))) + { + DYNARRAY_NAME (mark_failed) (list); + return NULL; + } + return DYNARRAY_NAME (emplace__tail__) (list); +} + +/* Allocate a place for a new element in *LIST and return a pointer to + it. The pointer can be NULL if the dynamic array cannot be + enlarged due to a memory allocation failure. */ +__attribute_maybe_unused__ __attribute_warn_unused_result__ +__attribute_nonnull__ ((1)) +static +/* Avoid inlining with the larger initialization code. */ +#if !(defined (DYNARRAY_ELEMENT_INIT) || defined (DYNARRAY_ELEMENT_FREE)) +inline +#endif +DYNARRAY_ELEMENT * +DYNARRAY_NAME (emplace) (struct DYNARRAY_STRUCT *list) +{ + /* Do nothing in case of previous error. */ + if (DYNARRAY_NAME (has_failed) (list)) + return NULL; + + /* Enlarge the array if necessary. */ + if (__glibc_unlikely (list->u.dynarray_header.used + == list->u.dynarray_header.allocated)) + return (DYNARRAY_NAME (emplace__) (list)); + return DYNARRAY_NAME (emplace__tail__) (list); +} + +/* Change the size of *LIST to SIZE. If SIZE is larger than the + existing size, new elements are added (which can be initialized). + Otherwise, the list is truncated, and elements are freed. Return + false on memory allocation failure (and mark *LIST as failed). */ +__attribute_maybe_unused__ __attribute_nonnull__ ((1)) +static bool +DYNARRAY_NAME (resize) (struct DYNARRAY_STRUCT *list, size_t size) +{ + if (size > list->u.dynarray_header.used) + { + bool ok; +#if defined (DYNARRAY_ELEMENT_INIT) + /* The new elements have to be initialized. */ + size_t old_size = list->u.dynarray_header.used; + ok = __libc_dynarray_resize (&list->u.dynarray_abstract, + size, DYNARRAY_SCRATCH (list), + sizeof (DYNARRAY_ELEMENT)); + if (ok) + for (size_t i = old_size; i < size; ++i) + { + DYNARRAY_ELEMENT_INIT (&list->u.dynarray_header.array[i]); + } +#elif defined (DYNARRAY_ELEMENT_FREE) + /* Zero initialization is needed so that the elements can be + safely freed. */ + ok = __libc_dynarray_resize_clear + (&list->u.dynarray_abstract, size, + DYNARRAY_SCRATCH (list), sizeof (DYNARRAY_ELEMENT)); +#else + ok = __libc_dynarray_resize (&list->u.dynarray_abstract, + size, DYNARRAY_SCRATCH (list), + sizeof (DYNARRAY_ELEMENT)); +#endif + if (__glibc_unlikely (!ok)) + DYNARRAY_NAME (mark_failed) (list); + return ok; + } + else + { + /* The list has shrunk in size. Free the removed elements. */ + DYNARRAY_NAME (free__elements__) + (list->u.dynarray_header.array + size, + list->u.dynarray_header.used - size); + list->u.dynarray_header.used = size; + return true; + } +} + +/* Remove the last element of LIST if it is present. */ +__attribute_maybe_unused__ __attribute_nonnull__ ((1)) +static void +DYNARRAY_NAME (remove_last) (struct DYNARRAY_STRUCT *list) +{ + /* used > 0 implies that the array is the non-failed state. */ + if (list->u.dynarray_header.used > 0) + { + size_t new_length = list->u.dynarray_header.used - 1; +#ifdef DYNARRAY_ELEMENT_FREE + DYNARRAY_ELEMENT_FREE (&list->u.dynarray_header.array[new_length]); +#endif + list->u.dynarray_header.used = new_length; + } +} + +/* Remove all elements from the list. The elements are freed, but the + list itself is not. */ +__attribute_maybe_unused__ __attribute_nonnull__ ((1)) +static void +DYNARRAY_NAME (clear) (struct DYNARRAY_STRUCT *list) +{ + /* free__elements__ does nothing if the list is in the failed + state. */ + DYNARRAY_NAME (free__elements__) + (list->u.dynarray_header.array, list->u.dynarray_header.used); + list->u.dynarray_header.used = 0; +} + +#ifdef DYNARRAY_FINAL_TYPE +/* Transfer the dynamic array to a permanent location at *RESULT. + Returns true on success on false on allocation failure. In either + case, *LIST is re-initialized and can be reused. A NULL pointer is + stored in *RESULT if LIST refers to an empty list. On success, the + pointer in *RESULT is heap-allocated and must be deallocated using + free. */ +__attribute_maybe_unused__ __attribute_warn_unused_result__ +__attribute_nonnull__ ((1, 2)) +static bool +DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, + DYNARRAY_FINAL_TYPE *result) +{ + struct dynarray_finalize_result res; + if (__libc_dynarray_finalize (&list->u.dynarray_abstract, + DYNARRAY_SCRATCH (list), + sizeof (DYNARRAY_ELEMENT), &res)) + { + /* On success, the result owns all the data. */ + DYNARRAY_NAME (init) (list); + *result = (DYNARRAY_FINAL_TYPE) { res.array, res.length }; + return true; + } + else + { + /* On error, we need to free all data. */ + DYNARRAY_FREE (list); + errno = ENOMEM; + return false; + } +} +#else /* !DYNARRAY_FINAL_TYPE */ +/* Transfer the dynamic array to a heap-allocated array and return a + pointer to it. The pointer is NULL if memory allocation fails, or + if the array is empty, so this function should be used only for + arrays which are known not be empty (usually because they always + have a sentinel at the end). If LENGTHP is not NULL, the array + length is written to *LENGTHP. *LIST is re-initialized and can be + reused. */ +__attribute_maybe_unused__ __attribute_warn_unused_result__ +__attribute_nonnull__ ((1)) +static DYNARRAY_ELEMENT * +DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, size_t *lengthp) +{ + struct dynarray_finalize_result res; + if (__libc_dynarray_finalize (&list->u.dynarray_abstract, + DYNARRAY_SCRATCH (list), + sizeof (DYNARRAY_ELEMENT), &res)) + { + /* On success, the result owns all the data. */ + DYNARRAY_NAME (init) (list); + if (lengthp != NULL) + *lengthp = res.length; + return res.array; + } + else + { + /* On error, we need to free all data. */ + DYNARRAY_FREE (list); + errno = ENOMEM; + return NULL; + } +} +#endif /* !DYNARRAY_FINAL_TYPE */ + +/* Undo macro definitions. */ + +#undef DYNARRAY_CONCAT0 +#undef DYNARRAY_CONCAT1 +#undef DYNARRAY_NAME +#undef DYNARRAY_SCRATCH +#undef DYNARRAY_HAVE_SCRATCH + +#undef DYNARRAY_STRUCT +#undef DYNARRAY_ELEMENT +#undef DYNARRAY_PREFIX +#undef DYNARRAY_ELEMENT_FREE +#undef DYNARRAY_ELEMENT_INIT +#undef DYNARRAY_INITIAL_SIZE +#undef DYNARRAY_FINAL_TYPE diff -urN gawk-5.1.0/support/random.c gawk-5.1.1/support/random.c --- gawk-5.1.0/support/random.c 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/support/random.c 2020-10-16 14:49:35.000000000 +0300 @@ -270,8 +270,7 @@ static inline uint32_t good_rand(int32_t); -static inline uint32_t good_rand (x) - int32_t x; +static inline uint32_t good_rand (int32_t x) { #ifdef USE_WEAK_SEEDING /* @@ -316,8 +315,7 @@ * for default usage relies on values produced by this routine. */ void -srandom(x) - unsigned long x; +srandom(unsigned long x) { int i, lim; @@ -408,10 +406,10 @@ * complain about mis-alignment, but you should disregard these messages. */ char * -initstate(seed, arg_state, n) - unsigned long seed; /* seed for R.N.G. */ - char *arg_state; /* pointer to state array */ - long n; /* # bytes of state info */ +initstate( + unsigned long seed, /* seed for R.N.G. */ + char *arg_state, /* pointer to state array */ + long n) /* # bytes of state info */ { char *ostate = (char *)(&state[-1]); uint32_t *int_arg_state = (uint32_t *)arg_state; @@ -476,8 +474,7 @@ * complain about mis-alignment, but you should disregard these messages. */ char * -setstate(arg_state) - char *arg_state; /* pointer to state array */ +setstate(char *arg_state) /* pointer to state array */ { uint32_t *new_state = (uint32_t *)arg_state; uint32_t type = new_state[0] % MAX_TYPES; diff -urN gawk-5.1.0/support/random.h gawk-5.1.1/support/random.h --- gawk-5.1.0/support/random.h 2019-08-28 21:54:14.000000000 +0300 +++ gawk-5.1.1/support/random.h 2021-10-24 20:31:24.000000000 +0300 @@ -40,4 +40,7 @@ #define uint32_t gawk_uint32_t #define int32_t gawk_int32_t -extern long random (void); +extern char *initstate(unsigned long seed, char *state, long n); +extern char *setstate(char *state); +extern long random(void); +extern void srandom(unsigned long seed); diff -urN gawk-5.1.0/support/regcomp.c gawk-5.1.1/support/regcomp.c --- gawk-5.1.0/support/regcomp.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/regcomp.c 2021-10-23 21:49:15.000000000 +0300 @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -558,7 +558,7 @@ static const bitset_t utf8_sb_map = { /* Set the first 128 bits. */ -# if defined __GNUC__ && !defined __STRICT_ANSI__ +# if (defined __GNUC__ || __clang_major__ >= 4) && !defined __STRICT_ANSI__ [0 ... 0x80 / BITSET_WORD_BITS - 1] = BITSET_WORD_MAX # else # if 4 * BITSET_WORD_BITS < ASCII_CHARS @@ -1695,12 +1695,14 @@ reg_errcode_t err; Idx i; re_node_set eclosure; - bool ok; bool incomplete = false; err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1); if (__glibc_unlikely (err != REG_NOERROR)) return err; + /* An epsilon closure includes itself. */ + eclosure.elems[eclosure.nelem++] = node; + /* This indicates that we are calculating this node now. We reference this value to avoid infinite loop. */ dfa->eclosures[node].nelem = -1; @@ -1753,10 +1755,6 @@ } } - /* An epsilon closure includes itself. */ - ok = re_node_set_insert (&eclosure, node); - if (__glibc_unlikely (! ok)) - return REG_ESPACE; if (incomplete && !root) dfa->eclosures[node].nelem = 0; else diff -urN gawk-5.1.0/support/regex.c gawk-5.1.1/support/regex.c --- gawk-5.1.0/support/regex.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/regex.c 2021-10-23 21:49:15.000000000 +0300 @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2020 Free Software Foundation, Inc. + Copyright (C) 2002-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -24,6 +24,7 @@ # if __GNUC_PREREQ (4, 6) # pragma GCC diagnostic ignored "-Wsuggest-attribute=pure" +# pragma GCC diagnostic ignored "-Wvla" # endif # if __GNUC_PREREQ (4, 3) # pragma GCC diagnostic ignored "-Wold-style-definition" diff -urN gawk-5.1.0/support/regexec.c gawk-5.1.1/support/regexec.c --- gawk-5.1.0/support/regexec.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/regexec.c 2021-10-23 21:54:40.000000000 +0300 @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -59,7 +59,7 @@ Idx cur_idx, Idx nmatch); static reg_errcode_t push_fail_stack (struct re_fail_stack_t *fs, Idx str_idx, Idx dest_node, Idx nregs, - regmatch_t *regs, + regmatch_t *regs, regmatch_t *prevregs, re_node_set *eps_via_nodes); static reg_errcode_t set_regs (const regex_t *preg, const re_match_context_t *mctx, @@ -186,11 +186,12 @@ REG_NOTBOL is set, then ^ does not match at the beginning of the string; if REG_NOTEOL is set, then $ does not match at the end. - We return 0 if we find a match and REG_NOMATCH if not. */ + Return 0 if a match is found, REG_NOMATCH if not, REG_BADPAT if + EFLAGS is invalid. */ int regexec (const regex_t *__restrict preg, const char *__restrict string, - size_t nmatch, regmatch_t pmatch[], int eflags) + size_t nmatch, regmatch_t pmatch[_REGEX_NELTS (nmatch)], int eflags) { reg_errcode_t err; Idx start, length; @@ -234,7 +235,7 @@ attribute_compat_text_section __compat_regexec (const regex_t *__restrict preg, const char *__restrict string, size_t nmatch, - regmatch_t pmatch[], int eflags) + regmatch_t pmatch[_REGEX_NELTS (nmatch)], int eflags) { return regexec (preg, string, nmatch, pmatch, eflags & (REG_NOTBOL | REG_NOTEOL)); @@ -269,8 +270,8 @@ strings.) On success, re_match* functions return the length of the match, re_search* - return the position of the start of the match. Return value -1 means no - match was found and -2 indicates an internal error. */ + return the position of the start of the match. They return -1 on + match failure, -2 on error. */ regoff_t re_match (struct re_pattern_buffer *bufp, const char *string, Idx length, @@ -757,10 +758,9 @@ offset = match_first - mctx.input.raw_mbs_idx; } - /* If MATCH_FIRST is out of the buffer, leave it as '\0'. - Note that MATCH_FIRST must not be smaller than 0. */ - ch = (match_first >= length - ? 0 : re_string_byte_at (&mctx.input, offset)); + /* Use buffer byte if OFFSET is in buffer, otherwise '\0'. */ + ch = (offset < mctx.input.valid_len + ? re_string_byte_at (&mctx.input, offset) : 0); if (fastmap[ch]) break; match_first += incr; @@ -1206,27 +1206,30 @@ /* Compute the next node to which "NFA" transit from NODE("NFA" is a NFA corresponding to the DFA). Return the destination node, and update EPS_VIA_NODES; - return -1 in case of errors. */ + return -1 on match failure, -2 on error. */ static Idx proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs, + regmatch_t *prevregs, Idx *pidx, Idx node, re_node_set *eps_via_nodes, struct re_fail_stack_t *fs) { const re_dfa_t *const dfa = mctx->dfa; - Idx i; - bool ok; if (IS_EPSILON_NODE (dfa->nodes[node].type)) { re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes; re_node_set *edests = &dfa->edests[node]; - Idx dest_node; - ok = re_node_set_insert (eps_via_nodes, node); - if (__glibc_unlikely (! ok)) - return -2; - /* Pick up a valid destination, or return -1 if none - is found. */ - for (dest_node = -1, i = 0; i < edests->nelem; ++i) + + if (! re_node_set_contains (eps_via_nodes, node)) + { + bool ok = re_node_set_insert (eps_via_nodes, node); + if (__glibc_unlikely (! ok)) + return -2; + } + + /* Pick a valid destination, or return -1 if none is found. */ + Idx dest_node = -1; + for (Idx i = 0; i < edests->nelem; i++) { Idx candidate = edests->elems[i]; if (!re_node_set_contains (cur_nodes, candidate)) @@ -1244,7 +1247,7 @@ /* Otherwise, push the second epsilon-transition on the fail stack. */ else if (fs != NULL && push_fail_stack (fs, *pidx, candidate, nregs, regs, - eps_via_nodes)) + prevregs, eps_via_nodes)) return -2; /* We know we are going to exit. */ @@ -1288,7 +1291,7 @@ if (naccepted == 0) { Idx dest_node; - ok = re_node_set_insert (eps_via_nodes, node); + bool ok = re_node_set_insert (eps_via_nodes, node); if (__glibc_unlikely (! ok)) return -2; dest_node = dfa->edests[node].elems[0]; @@ -1317,7 +1320,8 @@ static reg_errcode_t __attribute_warn_unused_result__ push_fail_stack (struct re_fail_stack_t *fs, Idx str_idx, Idx dest_node, - Idx nregs, regmatch_t *regs, re_node_set *eps_via_nodes) + Idx nregs, regmatch_t *regs, regmatch_t *prevregs, + re_node_set *eps_via_nodes) { reg_errcode_t err; Idx num = fs->num++; @@ -1333,28 +1337,39 @@ } fs->stack[num].idx = str_idx; fs->stack[num].node = dest_node; - fs->stack[num].regs = re_malloc (regmatch_t, nregs); + fs->stack[num].regs = re_malloc (regmatch_t, 2 * nregs); if (fs->stack[num].regs == NULL) return REG_ESPACE; memcpy (fs->stack[num].regs, regs, sizeof (regmatch_t) * nregs); + memcpy (fs->stack[num].regs + nregs, prevregs, sizeof (regmatch_t) * nregs); err = re_node_set_init_copy (&fs->stack[num].eps_via_nodes, eps_via_nodes); return err; } static Idx pop_fail_stack (struct re_fail_stack_t *fs, Idx *pidx, Idx nregs, - regmatch_t *regs, re_node_set *eps_via_nodes) + regmatch_t *regs, regmatch_t *prevregs, + re_node_set *eps_via_nodes) { + if (fs == NULL || fs->num == 0) + return -1; Idx num = --fs->num; - DEBUG_ASSERT (num >= 0); *pidx = fs->stack[num].idx; memcpy (regs, fs->stack[num].regs, sizeof (regmatch_t) * nregs); + memcpy (prevregs, fs->stack[num].regs + nregs, sizeof (regmatch_t) * nregs); re_node_set_free (eps_via_nodes); re_free (fs->stack[num].regs); *eps_via_nodes = fs->stack[num].eps_via_nodes; + DEBUG_ASSERT (0 <= fs->stack[num].node); return fs->stack[num].node; } + +#define DYNARRAY_STRUCT regmatch_list +#define DYNARRAY_ELEMENT regmatch_t +#define DYNARRAY_PREFIX regmatch_list_ +#include + /* Set the positions where the subexpressions are starts/ends to registers PMATCH. Note: We assume that pmatch[0] is already set, and @@ -1370,8 +1385,8 @@ re_node_set eps_via_nodes; struct re_fail_stack_t *fs; struct re_fail_stack_t fs_body = { 0, 2, NULL }; - regmatch_t *prev_idx_match; - bool prev_idx_match_malloced = false; + struct regmatch_list prev_match; + regmatch_list_init (&prev_match); DEBUG_ASSERT (nmatch > 1); DEBUG_ASSERT (mctx->state_log != NULL); @@ -1388,53 +1403,45 @@ cur_node = dfa->init_node; re_node_set_init_empty (&eps_via_nodes); - if (__libc_use_alloca (nmatch * sizeof (regmatch_t))) - prev_idx_match = (regmatch_t *) alloca (nmatch * sizeof (regmatch_t)); - else + if (!regmatch_list_resize (&prev_match, nmatch)) { - prev_idx_match = re_malloc (regmatch_t, nmatch); - if (prev_idx_match == NULL) - { - free_fail_stack_return (fs); - return REG_ESPACE; - } - prev_idx_match_malloced = true; + regmatch_list_free (&prev_match); + free_fail_stack_return (fs); + return REG_ESPACE; } + regmatch_t *prev_idx_match = regmatch_list_begin (&prev_match); memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch); for (idx = pmatch[0].rm_so; idx <= pmatch[0].rm_eo ;) { update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch); - if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node) + if ((idx == pmatch[0].rm_eo && cur_node == mctx->last_node) + || (fs && re_node_set_contains (&eps_via_nodes, cur_node))) { Idx reg_idx; + cur_node = -1; if (fs) { for (reg_idx = 0; reg_idx < nmatch; ++reg_idx) if (pmatch[reg_idx].rm_so > -1 && pmatch[reg_idx].rm_eo == -1) - break; - if (reg_idx == nmatch) - { - re_node_set_free (&eps_via_nodes); - if (prev_idx_match_malloced) - re_free (prev_idx_match); - return free_fail_stack_return (fs); - } - cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch, - &eps_via_nodes); + { + cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch, + prev_idx_match, &eps_via_nodes); + break; + } } - else + if (cur_node < 0) { re_node_set_free (&eps_via_nodes); - if (prev_idx_match_malloced) - re_free (prev_idx_match); - return REG_NOERROR; + regmatch_list_free (&prev_match); + return free_fail_stack_return (fs); } } /* Proceed to next node. */ - cur_node = proceed_next_node (mctx, nmatch, pmatch, &idx, cur_node, + cur_node = proceed_next_node (mctx, nmatch, pmatch, prev_idx_match, + &idx, cur_node, &eps_via_nodes, fs); if (__glibc_unlikely (cur_node < 0)) @@ -1442,26 +1449,23 @@ if (__glibc_unlikely (cur_node == -2)) { re_node_set_free (&eps_via_nodes); - if (prev_idx_match_malloced) - re_free (prev_idx_match); + regmatch_list_free (&prev_match); free_fail_stack_return (fs); return REG_ESPACE; } - if (fs) - cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch, - &eps_via_nodes); - else + cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch, + prev_idx_match, &eps_via_nodes); + if (cur_node < 0) { re_node_set_free (&eps_via_nodes); - if (prev_idx_match_malloced) - re_free (prev_idx_match); + regmatch_list_free (&prev_match); + free_fail_stack_return (fs); return REG_NOMATCH; } } } re_node_set_free (&eps_via_nodes); - if (prev_idx_match_malloced) - re_free (prev_idx_match); + regmatch_list_free (&prev_match); return free_fail_stack_return (fs); } @@ -1499,10 +1503,10 @@ } else if (type == OP_CLOSE_SUBEXP) { + /* We are at the last node of this sub expression. */ Idx reg_num = dfa->nodes[cur_node].opr.idx + 1; if (reg_num < nmatch) { - /* We are at the last node of this sub expression. */ if (pmatch[reg_num].rm_so < cur_idx) { pmatch[reg_num].rm_eo = cur_idx; @@ -2199,6 +2203,7 @@ /* Return the next state to which the current state STATE will transit by accepting the current input byte, and update STATE_LOG if necessary. + Return NULL on failure. If STATE can accept a multibyte char/collating element/back reference update the destination of STATE_LOG. */ @@ -2399,7 +2404,7 @@ #if 0 /* Return the next state to which the current state STATE will transit by - accepting the current input byte. */ + accepting the current input byte. Return NULL on failure. */ static re_dfastate_t * transit_state_sb (reg_errcode_t *err, re_match_context_t *mctx, @@ -2821,7 +2826,8 @@ /* Check whether the node TOP_NODE at TOP_STR can arrive to the node LAST_NODE at LAST_STR. We record the path onto PATH since it will be heavily reused. - Return REG_NOERROR if it can arrive, or REG_NOMATCH otherwise. */ + Return REG_NOERROR if it can arrive, REG_NOMATCH if it cannot, + REG_ESPACE if memory is exhausted. */ static reg_errcode_t __attribute_warn_unused_result__ @@ -3251,7 +3257,7 @@ /* Build transition table for the state. Return true if successful. */ -static bool +static bool __attribute_noinline__ build_trtable (const re_dfa_t *dfa, re_dfastate_t *state) { reg_errcode_t err; @@ -3259,36 +3265,20 @@ int ch; bool need_word_trtable = false; bitset_word_t elem, mask; - bool dests_node_malloced = false; - bool dest_states_malloced = false; Idx ndests; /* Number of the destination states from 'state'. */ re_dfastate_t **trtable; - re_dfastate_t **dest_states = NULL, **dest_states_word, **dest_states_nl; - re_node_set follows, *dests_node; - bitset_t *dests_ch; + re_dfastate_t *dest_states[SBC_MAX]; + re_dfastate_t *dest_states_word[SBC_MAX]; + re_dfastate_t *dest_states_nl[SBC_MAX]; + re_node_set follows; bitset_t acceptable; - struct dests_alloc - { - re_node_set dests_node[SBC_MAX]; - bitset_t dests_ch[SBC_MAX]; - } *dests_alloc; - /* We build DFA states which corresponds to the destination nodes from 'state'. 'dests_node[i]' represents the nodes which i-th destination state contains, and 'dests_ch[i]' represents the characters which i-th destination state accepts. */ - if (__libc_use_alloca (sizeof (struct dests_alloc))) - dests_alloc = (struct dests_alloc *) alloca (sizeof (struct dests_alloc)); - else - { - dests_alloc = re_malloc (struct dests_alloc, 1); - if (__glibc_unlikely (dests_alloc == NULL)) - return false; - dests_node_malloced = true; - } - dests_node = dests_alloc->dests_node; - dests_ch = dests_alloc->dests_ch; + re_node_set dests_node[SBC_MAX]; + bitset_t dests_ch[SBC_MAX]; /* Initialize transition table. */ state->word_trtable = state->trtable = NULL; @@ -3298,8 +3288,6 @@ ndests = group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch); if (__glibc_unlikely (ndests <= 0)) { - if (dests_node_malloced) - re_free (dests_alloc); /* Return false in case of an error, true otherwise. */ if (ndests == 0) { @@ -3314,38 +3302,14 @@ err = re_node_set_alloc (&follows, ndests + 1); if (__glibc_unlikely (err != REG_NOERROR)) - goto out_free; - - /* Avoid arithmetic overflow in size calculation. */ - size_t ndests_max - = ((SIZE_MAX - (sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX) - / (3 * sizeof (re_dfastate_t *))); - if (__glibc_unlikely (ndests_max < ndests)) - goto out_free; - - if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX - + ndests * 3 * sizeof (re_dfastate_t *))) - dest_states = (re_dfastate_t **) - alloca (ndests * 3 * sizeof (re_dfastate_t *)); - else { - dest_states = re_malloc (re_dfastate_t *, ndests * 3); - if (__glibc_unlikely (dest_states == NULL)) - { -out_free: - if (dest_states_malloced) - re_free (dest_states); - re_node_set_free (&follows); - for (i = 0; i < ndests; ++i) - re_node_set_free (dests_node + i); - if (dests_node_malloced) - re_free (dests_alloc); - return false; - } - dest_states_malloced = true; + out_free: + re_node_set_free (&follows); + for (i = 0; i < ndests; ++i) + re_node_set_free (dests_node + i); + return false; } - dest_states_word = dest_states + ndests; - dest_states_nl = dest_states_word + ndests; + bitset_empty (acceptable); /* Then build the states for all destinations. */ @@ -3470,23 +3434,17 @@ } } - if (dest_states_malloced) - re_free (dest_states); - re_node_set_free (&follows); for (i = 0; i < ndests; ++i) re_node_set_free (dests_node + i); - - if (dests_node_malloced) - re_free (dests_alloc); - return true; } /* Group all nodes belonging to STATE into several destinations. Then for all destinations, set the nodes belonging to the destination to DESTS_NODE[i] and set the characters accepted by the destination - to DEST_CH[i]. This function return the number of destinations. */ + to DEST_CH[i]. Return the number of destinations if successful, + -1 on internal error. */ static Idx group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state, @@ -4264,7 +4222,8 @@ } /* Register the node NODE, whose type is OP_CLOSE_SUBEXP, and which matches - at STR_IDX, whose corresponding OP_OPEN_SUBEXP is SUB_TOP. */ + at STR_IDX, whose corresponding OP_OPEN_SUBEXP is SUB_TOP. + Return the new entry if successful, NULL if memory is exhausted. */ static re_sub_match_last_t * match_ctx_add_sublast (re_sub_match_top_t *subtop, Idx node, Idx str_idx) diff -urN gawk-5.1.0/support/regex.h gawk-5.1.1/support/regex.h --- gawk-5.1.0/support/regex.h 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/support/regex.h 2021-10-23 21:49:15.000000000 +0300 @@ -1,6 +1,6 @@ /* Definitions for data structures and routines for the regular expression library. - Copyright (C) 1985, 1989-2019 Free Software Foundation, Inc. + Copyright (C) 1985, 1989-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -522,6 +522,30 @@ /* Declarations for routines. */ +#ifndef _REGEX_NELTS +# if (defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ \ + && !defined __STDC_NO_VLA__) +# define _REGEX_NELTS(n) n +# else +# define _REGEX_NELTS(n) +# endif +#endif + +#if defined __GNUC__ && 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wvla" +#endif + +#ifndef _Attr_access_ +# ifdef __attr_access +# define _Attr_access_(arg) __attr_access (arg) +# elif defined __GNUC__ && 10 <= __GNUC__ +# define _Attr_access_(x) __attribute__ ((__access__ x)) +# else +# define _Attr_access_(x) +# endif +#endif + #ifdef __USE_GNU /* Sets the current default syntax to SYNTAX, and return the old syntax. You can also simply assign to the 're_syntax_options' variable. */ @@ -536,7 +560,8 @@ 'regcomp', with a malloc'ed value, or set to NULL before calling 'regfree'. */ extern const char *re_compile_pattern (const char *__pattern, size_t __length, - struct re_pattern_buffer *__buffer); + struct re_pattern_buffer *__buffer) + _Attr_access_ ((__read_only__, 1, 2)); /* Compile a fastmap for the compiled pattern in BUFFER; used to @@ -553,7 +578,8 @@ extern regoff_t re_search (struct re_pattern_buffer *__buffer, const char *__String, regoff_t __length, regoff_t __start, regoff_t __range, - struct re_registers *__regs); + struct re_registers *__regs) + _Attr_access_ ((__read_only__, 2, 3)); /* Like 're_search', but search in the concatenation of STRING1 and @@ -563,14 +589,17 @@ const char *__string2, regoff_t __length2, regoff_t __start, regoff_t __range, struct re_registers *__regs, - regoff_t __stop); + regoff_t __stop) + _Attr_access_ ((__read_only__, 2, 3)) + _Attr_access_ ((__read_only__, 4, 5)); /* Like 're_search', but return how many characters in STRING the regexp in BUFFER matched, starting at position START. */ extern regoff_t re_match (struct re_pattern_buffer *__buffer, const char *__String, regoff_t __length, - regoff_t __start, struct re_registers *__regs); + regoff_t __start, struct re_registers *__regs) + _Attr_access_ ((__read_only__, 2, 3)); /* Relates to 're_match' as 're_search_2' relates to 're_search'. */ @@ -578,7 +607,9 @@ const char *__string1, regoff_t __length1, const char *__string2, regoff_t __length2, regoff_t __start, struct re_registers *__regs, - regoff_t __stop); + regoff_t __stop) + _Attr_access_ ((__read_only__, 2, 3)) + _Attr_access_ ((__read_only__, 4, 5)); /* Set REGS to hold NUM_REGS registers, storing them in STARTS and @@ -600,11 +631,9 @@ #endif /* Use GNU */ #if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_MISC) -# ifndef _CRAY /* 4.2 bsd compatibility. */ extern char *re_comp (const char *); extern int re_exec (const char *); -# endif #endif /* For plain 'restrict', use glibc's __restrict if defined. @@ -614,7 +643,9 @@ 'configure' might #define 'restrict' to those words, so pick a different name. */ #ifndef _Restrict_ -# if defined __restrict || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) +# if defined __restrict \ + || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) \ + || __clang_major__ >= 3 # define _Restrict_ __restrict # elif 199901L <= __STDC_VERSION__ || defined restrict # define _Restrict_ restrict @@ -622,13 +653,18 @@ # define _Restrict_ # endif #endif -/* For [restrict], use glibc's __restrict_arr if available. - Otherwise, GCC 3.1 (not in C++ mode) and C99 support [restrict]. */ +/* For the ISO C99 syntax + array_name[restrict] + use glibc's __restrict_arr if available. + Otherwise, GCC 3.1 and clang support this syntax (but not in C++ mode). + Other ISO C99 compilers support it as well. */ #ifndef _Restrict_arr_ # ifdef __restrict_arr # define _Restrict_arr_ __restrict_arr -# elif ((199901L <= __STDC_VERSION__ || 3 < __GNUC__ + (1 <= __GNUC_MINOR__)) \ - && !defined __GNUG__) +# elif ((199901L <= __STDC_VERSION__ \ + || 3 < __GNUC__ + (1 <= __GNUC_MINOR__) \ + || __clang_major__ >= 3) \ + && !defined __cplusplus) # define _Restrict_arr_ _Restrict_ # else # define _Restrict_arr_ @@ -642,14 +678,19 @@ extern int regexec (const regex_t *_Restrict_ __preg, const char *_Restrict_ __String, size_t __nmatch, - regmatch_t __pmatch[_Restrict_arr_], + regmatch_t __pmatch[_Restrict_arr_ + _REGEX_NELTS (__nmatch)], int __eflags); extern size_t regerror (int __errcode, const regex_t *_Restrict_ __preg, - char *_Restrict_ __errbuf, size_t __errbuf_size); + char *_Restrict_ __errbuf, size_t __errbuf_size) + _Attr_access_ ((__write_only__, 3, 4)); extern void regfree (regex_t *__preg); +#if defined __GNUC__ && 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# pragma GCC diagnostic pop +#endif #ifdef __cplusplus } diff -urN gawk-5.1.0/support/regex_internal.c gawk-5.1.1/support/regex_internal.c --- gawk-5.1.0/support/regex_internal.c 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/regex_internal.c 2021-10-23 21:49:15.000000000 +0300 @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -300,18 +300,20 @@ while (byte_idx < end_idx) { wchar_t wc; + unsigned char ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]; - if (isascii (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]) - && mbsinit (&pstr->cur_state)) + if (isascii (ch) && mbsinit (&pstr->cur_state)) { - /* In case of a singlebyte character. */ - pstr->mbs[byte_idx] - = toupper (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]); /* The next step uses the assumption that wchar_t is encoded ASCII-safe: all ASCII values can be converted like this. */ - pstr->wcs[byte_idx] = (wchar_t) pstr->mbs[byte_idx]; - ++byte_idx; - continue; + wchar_t wcu = __towupper (ch); + if (isascii (wcu)) + { + pstr->mbs[byte_idx] = wcu; + pstr->wcs[byte_idx] = wcu; + byte_idx++; + continue; + } } remain_len = end_idx - byte_idx; @@ -348,7 +350,6 @@ { /* It is an invalid character, an incomplete character at the end of the string, or '\0'. Just use the byte. */ - int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]; pstr->mbs[byte_idx] = ch; /* And also cast it to wide char. */ pstr->wcs[byte_idx++] = (wchar_t) ch; @@ -1210,6 +1211,10 @@ if (__glibc_unlikely (dest->nelem == 0)) { + /* Although we already guaranteed above that dest->alloc != 0 and + therefore dest->elems != NULL, add a debug assertion to pacify + GCC 11.2.1's -fanalyzer. */ + DEBUG_ASSERT (dest->elems); dest->nelem = src->nelem; memcpy (dest->elems, src->elems, src->nelem * sizeof (Idx)); return REG_NOERROR; @@ -1285,7 +1290,10 @@ if (__glibc_unlikely (set->nelem) == 0) { - /* We already guaranteed above that set->alloc != 0. */ + /* Although we already guaranteed above that set->alloc != 0 and + therefore set->elems != NULL, add a debug assertion to pacify + GCC 11.2 -fanalyzer. */ + DEBUG_ASSERT (set->elems); set->elems[0] = elem; ++set->nelem; return true; @@ -1313,6 +1321,7 @@ { for (idx = set->nelem; set->elems[idx - 1] > elem; idx--) set->elems[idx] = set->elems[idx - 1]; + DEBUG_ASSERT (set->elems[idx - 1] < elem); } /* Insert the new element. */ diff -urN gawk-5.1.0/support/regex_internal.h gawk-5.1.1/support/regex_internal.h --- gawk-5.1.0/support/regex_internal.h 2020-02-06 22:52:57.000000000 +0200 +++ gawk-5.1.1/support/regex_internal.h 2021-10-23 21:49:15.000000000 +0300 @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2020 Free Software Foundation, Inc. + Copyright (C) 2002-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -32,6 +32,10 @@ #include #include +#ifndef _LIBC +# include +#endif + #include #include @@ -49,14 +53,14 @@ # define lock_fini(lock) ((void) 0) # define lock_lock(lock) __libc_lock_lock (lock) # define lock_unlock(lock) __libc_lock_unlock (lock) -#elif defined GNULIB_LOCK && !defined USE_UNLOCKED_IO +#elif defined GNULIB_LOCK && !defined GNULIB_REGEX_SINGLE_THREAD # include "glthread/lock.h" # define lock_define(name) gl_lock_define (, name) # define lock_init(lock) glthread_lock_init (&(lock)) # define lock_fini(lock) glthread_lock_destroy (&(lock)) # define lock_lock(lock) glthread_lock_lock (&(lock)) # define lock_unlock(lock) glthread_lock_unlock (&(lock)) -#elif defined GNULIB_PTHREAD && !defined USE_UNLOCKED_IO +#elif defined GNULIB_PTHREAD && !defined GNULIB_REGEX_SINGLE_THREAD # include # define lock_define(name) pthread_mutex_t name; # define lock_init(lock) pthread_mutex_init (&(lock), 0) @@ -77,6 +81,14 @@ # define isblank(ch) ((ch) == ' ' || (ch) == '\t') #endif +/* regex code assumes isascii has its usual numeric meaning, + even if the portable character set uses EBCDIC encoding, + and even if wint_t is wider than int. */ +#ifndef _LIBC +# undef isascii +# define isascii(c) (((c) & ~0x7f) == 0) +#endif + #ifdef _LIBC # ifndef _RE_DEFINE_LOCALE_FUNCTIONS # define _RE_DEFINE_LOCALE_FUNCTIONS 1 @@ -335,7 +347,7 @@ Idx idx; /* for BACK_REF */ re_context_type ctx_type; /* for ANCHOR */ } opr; -#if __GNUC__ >= 2 && !defined __STRICT_ANSI__ +#if (__GNUC__ >= 2 || defined __clang__) && !defined __STRICT_ANSI__ re_token_type_t type : 8; #else re_token_type_t type; @@ -436,25 +448,6 @@ #define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx)) #define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx)) -#if defined _LIBC || HAVE_ALLOCA -# include -#endif - -#ifndef _LIBC -# if HAVE_ALLOCA -/* The OS usually guarantees only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - allocate anything larger than 4096 bytes. Also care for the possibility - of a few compiler-allocated temporary stack slots. */ -# define __libc_use_alloca(n) ((n) < 4032) -# else -/* alloca is implemented with malloc, so just use malloc. */ -# define __libc_use_alloca(n) 0 -# undef alloca -# define alloca(n) malloc (n) -# endif -#endif - #ifdef _LIBC # define MALLOC_0_IS_NONNULL 1 #elif !defined MALLOC_0_IS_NONNULL @@ -840,12 +833,14 @@ } #endif /* RE_ENABLE_I18N */ -#ifndef FALLTHROUGH -# if __GNUC__ < 7 -# define FALLTHROUGH ((void) 0) -# else +#ifdef _LIBC +# if __GNUC__ >= 7 # define FALLTHROUGH __attribute__ ((__fallthrough__)) +# else +# define FALLTHROUGH ((void) 0) # endif +#else +# include "attribute.h" #endif #endif /* _REGEX_INTERNAL_H */ diff -urN gawk-5.1.0/support/verify.h gawk-5.1.1/support/verify.h --- gawk-5.1.0/support/verify.h 2020-02-06 22:52:58.000000000 +0200 +++ gawk-5.1.1/support/verify.h 2021-10-23 21:49:15.000000000 +0300 @@ -1,18 +1,18 @@ /* Compile-time assert-like macros. - Copyright (C) 2005-2006, 2009-2019 Free Software Foundation, Inc. + Copyright (C) 2005-2006, 2009-2021 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 file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This file 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. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ @@ -22,12 +22,10 @@ /* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert (R, DIAGNOSTIC) - works as per C11. This is supported by GCC 4.6.0 and later, in C - mode. + works as per C11. This is supported by GCC 4.6.0+ and by clang 4+. Define _GL_HAVE__STATIC_ASSERT1 to 1 if _Static_assert (R) works as - per C2X, and define _GL_HAVE_STATIC_ASSERT1 if static_assert (R) - works as per C++17. This is supported by GCC 9.1 and later. + per C2x. This is supported by GCC 9.1+. Support compilers claiming conformance to the relevant standard, and also support GCC when not pedantic. If we were willing to slow @@ -35,17 +33,14 @@ since this affects only the quality of diagnostics, why bother? */ #ifndef __cplusplus # if (201112L <= __STDC_VERSION__ \ - || (!defined __STRICT_ANSI__ && 4 < __GNUC__ + (6 <= __GNUC_MINOR__))) + || (!defined __STRICT_ANSI__ \ + && (4 < __GNUC__ + (6 <= __GNUC_MINOR__) || 4 <= __clang_major__))) # define _GL_HAVE__STATIC_ASSERT 1 # endif # if (202000L <= __STDC_VERSION__ \ || (!defined __STRICT_ANSI__ && 9 <= __GNUC__)) # define _GL_HAVE__STATIC_ASSERT1 1 # endif -#else -# if 201703L <= __cplusplus || 9 <= __GNUC__ -# define _GL_HAVE_STATIC_ASSERT1 1 -# endif #endif /* FreeBSD 9.1 , included by and lots of other @@ -207,12 +202,14 @@ This macro requires three or more arguments but uses at most the first two, so that the _Static_assert macro optionally defined below supports - both the C11 two-argument syntax and the C2X one-argument syntax. + both the C11 two-argument syntax and the C2x one-argument syntax. Unfortunately, unlike C11, this implementation must appear as an ordinary declaration, and cannot appear inside struct { ... }. */ -#if defined _GL_HAVE__STATIC_ASSERT +#if 200410 <= __cpp_static_assert +# define _GL_VERIFY(R, DIAGNOSTIC, ...) static_assert (R, DIAGNOSTIC) +#elif defined _GL_HAVE__STATIC_ASSERT # define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC) #else # define _GL_VERIFY(R, DIAGNOSTIC, ...) \ @@ -226,13 +223,29 @@ # define _Static_assert(...) \ _GL_VERIFY (__VA_ARGS__, "static assertion failed", -) # endif -# if !defined _GL_HAVE_STATIC_ASSERT1 && !defined static_assert +# if __cpp_static_assert < 201411 && !defined static_assert # define static_assert _Static_assert /* C11 requires this #define. */ # endif #endif /* @assert.h omit start@ */ +#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)) +# define _GL_HAS_BUILTIN_TRAP 1 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_TRAP __has_builtin (__builtin_trap) +#else +# define _GL_HAS_BUILTIN_TRAP 0 +#endif + +#if 4 < __GNUC__ + (5 <= __GNUC_MINOR__) +# define _GL_HAS_BUILTIN_UNREACHABLE 1 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable) +#else +# define _GL_HAS_BUILTIN_UNREACHABLE 0 +#endif + /* Each of these macros verifies that its argument R is nonzero. To be portable, R should be an integer constant expression. Unlike assert (R), there is no run-time overhead. @@ -260,24 +273,34 @@ # define verify(R) _GL_VERIFY (R, "verify (" #R ")", -) #endif -#ifndef __has_builtin -# define __has_builtin(x) 0 -#endif - /* Assume that R always holds. Behavior is undefined if R is false, - fails to evaluate, or has side effects. Although assuming R can - help a compiler generate better code or diagnostics, performance - can suffer if R uses hard-to-optimize features such as function - calls not inlined by the compiler. */ + fails to evaluate, or has side effects. + + 'assume (R)' is a directive from the programmer telling the + compiler that R is true so the compiler needn't generate code to + test R. This is why 'assume' is in verify.h: it's related to + static checking (in this case, static checking done by the + programmer), not dynamic checking. + + 'assume (R)' can affect compilation of all the code, not just code + that happens to be executed after the assume (R) is "executed". + For example, if the code mistakenly does 'assert (R); assume (R);' + the compiler is entitled to optimize away the 'assert (R)'. + + Although assuming R can help a compiler generate better code or + diagnostics, performance can suffer if R uses hard-to-optimize + features such as function calls not inlined by the compiler. + + Avoid Clang's __builtin_assume, as it breaks GNU Emacs master + as of 2020-08-23T21:09:49Z!eggert@cs.ucla.edu; see + . It's not known whether this breakage + is a Clang bug or an Emacs bug; play it safe for now. */ -#if (__has_builtin (__builtin_unreachable) \ - || 4 < __GNUC__ + (5 <= __GNUC_MINOR__)) +#if _GL_HAS_BUILTIN_UNREACHABLE # define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) #elif 1200 <= _MSC_VER # define assume(R) __assume (R) -#elif ((defined GCC_LINT || defined lint) \ - && (__has_builtin (__builtin_trap) \ - || 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)))) +#elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP /* Doing it this way helps various packages when configured with --enable-gcc-warnings, which compiles with -Dlint. It's nicer when 'assume' silences warnings even with older GCCs. */ diff -urN gawk-5.1.0/support/xalloc.h gawk-5.1.1/support/xalloc.h --- gawk-5.1.0/support/xalloc.h 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/support/xalloc.h 2021-10-14 22:15:00.000000000 +0300 @@ -1,6 +1,6 @@ /* xalloc.h -- malloc with out-of-memory checking - Copyright (C) 1990-2000, 2003-2004, 2006-2019 Free Software Foundation, Inc. + Copyright (C) 1990-2000, 2003-2004, 2006-2021 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 @@ -20,6 +20,8 @@ # include +#include "intprops.h" + # ifdef __cplusplus extern "C" { @@ -56,6 +58,8 @@ void *xcalloc (size_t n, size_t s) ATTRIBUTE_MALLOC; void *xrealloc (void *p, size_t s); void *x2realloc (void *p, size_t *pn); +void *xpalloc (void *pa, idx_t *nitems, idx_t nitems_incr_min, + ptrdiff_t nitems_max, idx_t item_size); void *xmemdup (void const *p, size_t s) ATTRIBUTE_MALLOC; char *xstrdup (char const *str) ATTRIBUTE_MALLOC; @@ -223,10 +227,9 @@ /* If P is null, allocate a block of at least *PN such objects; otherwise, reallocate P so that it contains more than *PN objects - each of S bytes. *PN must be nonzero unless P is null, and S must - be nonzero. Set *PN to the new number of objects, and return the - pointer to the new block. *PN is never set to zero, and the - returned pointer is never null. + each of S bytes. S must be nonzero. Set *PN to the new number of + objects, and return the pointer to the new block. *PN is never set + to zero, and the returned pointer is never null. Repeated reallocations are guaranteed to make progress, either by allocating an initial block with a nonzero size, or by allocating a @@ -371,5 +374,78 @@ # endif +/* Grow PA, which points to an array of *NITEMS items, and return the + location of the reallocated array, updating *NITEMS to reflect its + new size. The new array will contain at least NITEMS_INCR_MIN more + items, but will not contain more than NITEMS_MAX items total. + ITEM_SIZE is the size of each item, in bytes. + + ITEM_SIZE and NITEMS_INCR_MIN must be positive. *NITEMS must be + nonnegative. If NITEMS_MAX is -1, it is treated as if it were + infinity. + + If PA is null, then allocate a new array instead of reallocating + the old one. + + Thus, to grow an array A without saving its old contents, do + { free (A); A = xpalloc (NULL, &AITEMS, ...); }. */ + +#define MIN(x, y) ((x) < (y) ? (x) : (y)) + +void * +xpalloc (void *pa, idx_t *nitems, idx_t nitems_incr_min, + ptrdiff_t nitems_max, idx_t item_size) +{ + idx_t n0 = *nitems; + + /* The approximate size to use for initial small allocation + requests. This is the largest "small" request for the GNU C + library malloc. */ + enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 }; + + /* If the array is tiny, grow it to about (but no greater than) + DEFAULT_MXFAST bytes. Otherwise, grow it by about 50%. + Adjust the growth according to three constraints: NITEMS_INCR_MIN, + NITEMS_MAX, and what the C language can represent safely. */ + + idx_t n, nbytes; + if (INT_ADD_WRAPV (n0, n0 >> 1, &n)) + n = IDX_MAX; + if (0 <= nitems_max && nitems_max < n) + n = nitems_max; + + idx_t adjusted_nbytes + = ((INT_MULTIPLY_WRAPV (n, item_size, &nbytes) || SIZE_MAX < nbytes) + ? MIN (IDX_MAX, SIZE_MAX) + : nbytes < DEFAULT_MXFAST ? DEFAULT_MXFAST : 0); + if (adjusted_nbytes) + { + n = adjusted_nbytes / item_size; + nbytes = adjusted_nbytes - adjusted_nbytes % item_size; + } + + if (! pa) + *nitems = 0; + if (n - n0 < nitems_incr_min + && (INT_ADD_WRAPV (n0, nitems_incr_min, &n) + || (0 <= nitems_max && nitems_max < n) + || INT_MULTIPLY_WRAPV (n, item_size, &nbytes))) + xalloc_die (); + pa = xrealloc (pa, nbytes); + *nitems = n; + return pa; +} + +/* Clone an object P of size S, with error checking. Append + a terminating NUL byte. */ + +char * +ximemdup0 (void const *p, idx_t s) +{ + char *result = malloc(s + 1); + result[s] = 0; + return memcpy (result, p, s); +} + #endif /* !XALLOC_H_ */ diff -urN gawk-5.1.0/symbol.c gawk-5.1.1/symbol.c --- gawk-5.1.0/symbol.c 2020-03-20 16:22:39.000000000 +0200 +++ gawk-5.1.1/symbol.c 2021-10-20 19:52:48.000000000 +0300 @@ -39,6 +39,7 @@ static NODE *make_symbol(const char *name, NODETYPE type); static NODE *install(const char *name, NODE *parm, NODETYPE type); static void free_bcpool(INSTRUCTION_POOL *pl); +static NODE *get_name_from_awk_ns(const char *name); static AWK_CONTEXT *curr_ctxt = NULL; static int ctxt_level; @@ -102,10 +103,7 @@ tables[3] = symbol_table; /* then globals */ tables[4] = NULL; - if (strncmp(name, "awk::", 5) == 0) - tmp = make_string(name + 5, strlen(name) - 5); - else - tmp = make_string(name, strlen(name)); + tmp = get_name_from_awk_ns(name); n = NULL; for (i = 0; tables[i] != NULL; i++) { @@ -292,6 +290,7 @@ r->var_value = dupnode(Nnull_string); r->vname = (char *) name; r->type = type; + r->valref = 1; return r; } @@ -306,10 +305,7 @@ NODE *n_name; NODE *prev; - if (strncmp(name, "awk::", 5) == 0) - n_name = make_string(name + 5, strlen(name) - 5); - else - n_name = make_string(name, strlen(name)); + n_name = get_name_from_awk_ns(name); table = symbol_table; @@ -366,7 +362,18 @@ n1 = *npp1; n2 = *npp2; - return strcmp(n1->vname, n2->vname); + // names in awk namespace come out first + bool n1_is_in_ns = (strchr(n1->vname, ':') != NULL); + bool n2_is_in_ns = (strchr(n2->vname, ':') != NULL); + + if (n1_is_in_ns && n2_is_in_ns) + return strcmp(n1->vname, n2->vname); + else if (n1_is_in_ns && ! n2_is_in_ns) + return 1; + else if (! n1_is_in_ns && n2_is_in_ns) + return -1; + else + return strcmp(n1->vname, n2->vname); } @@ -976,3 +983,18 @@ return true; } + +/* get_name_from_awk_ns --- get the name after awk:: or the full name */ + +static NODE * +get_name_from_awk_ns(const char *name) +{ + NODE *tmp; + + if (strncmp(name, "awk::", 5) == 0) + tmp = make_string(name + 5, strlen(name) - 5); + else + tmp = make_string(name, strlen(name)); + + return tmp; +} diff -urN gawk-5.1.0/test/argcasfile.awk gawk-5.1.1/test/argcasfile.awk --- gawk-5.1.0/test/argcasfile.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/argcasfile.awk 2021-03-30 21:27:51.000000000 +0300 @@ -0,0 +1 @@ +{ for (i in ARGV) print i,ARGV[i] } diff -urN gawk-5.1.0/test/argcasfile.in gawk-5.1.1/test/argcasfile.in --- gawk-5.1.0/test/argcasfile.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/argcasfile.in 2021-03-30 21:27:51.000000000 +0300 @@ -0,0 +1,3 @@ +foo +bar +baz diff -urN gawk-5.1.0/test/argcasfile.ok gawk-5.1.1/test/argcasfile.ok --- gawk-5.1.0/test/argcasfile.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/argcasfile.ok 2021-05-20 21:29:00.000000000 +0300 @@ -0,0 +1,9 @@ +0 gawk +1 ARGC=1 +2 /no/such/file +0 gawk +1 ARGC=1 +2 /no/such/file +0 gawk +1 ARGC=1 +2 /no/such/file diff -urN gawk-5.1.0/test/arraytype-mpfr.ok gawk-5.1.1/test/arraytype-mpfr.ok --- gawk-5.1.0/test/arraytype-mpfr.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/arraytype-mpfr.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,16 @@ +array +str +array +null +array +str +array +null +array +str +array +null +array +str +array +null diff -urN gawk-5.1.0/test/arrdbg.awk gawk-5.1.1/test/arrdbg.awk --- gawk-5.1.0/test/arrdbg.awk 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/arrdbg.awk 2020-08-28 14:48:06.000000000 +0300 @@ -1,17 +1,19 @@ -function check(x, exptype, f) { +function check(x, exptype, mpfr_exptype, f) { f[x] printf "array_f subscript [%s]\n", x printf "array_f subscript [%s]\n", x > okfile + printf "array_f subscript [%s]\n", x > mpfr_okfile adump(f, -1) printf " array_func: %s_array_func\n", exptype > okfile + printf " array_func: %s_array_func\n", mpfr_exptype > mpfr_okfile } BEGIN { - check(3.0, "cint") - check(-3, "int") - check("3.0", "str") + check(3.0, "cint", "str") + check(-3, "int", "str") + check("3.0", "str", "str") split(" 3", f, "|") # create a maybe_num value - check(f[1], "str") - check("0", "cint") - check("-1", "int") + check(f[1], "str", "str") + check("0", "cint", "str") + check("-1", "int", "str") } diff -urN gawk-5.1.0/test/badargs.ok gawk-5.1.1/test/badargs.ok --- gawk-5.1.0/test/badargs.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/badargs.ok 2020-08-28 14:48:06.000000000 +0300 @@ -16,6 +16,7 @@ -g --gen-pot -h --help -i includefile --include=includefile + -I --trace -l library --load=library -L[fatal|invalid|no-ext] --lint[=fatal|invalid|no-ext] -M --bignum diff -urN gawk-5.1.0/test/ChangeLog gawk-5.1.1/test/ChangeLog --- gawk-5.1.0/test/ChangeLog 2020-04-14 14:41:19.000000000 +0300 +++ gawk-5.1.1/test/ChangeLog 2021-10-27 07:53:21.000000000 +0300 @@ -1,3 +1,283 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-10-18 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): profile16, new test. + * profile16.awk, profile16.ok: New files. + +2021-10-13 Arnold D. Robbins + + * Gentest: Add check for ZOS_FAIL targets that have to + be edited manually. + * Makefile.am: Update relevant targets. + + Unrelated: + + * Makefile.am: Uupdate copryight year, reformat some of the lists. + +2021-09-27 Andrew J. Schorr + + * ordchr.awk, ordchr.awk: Add test for ord signedness. + +2021-09-19 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Remove commas.in from the list. + Thanks to `make distcheck' for the report. + +2021-09-14 Arnold D. Robbins + + * Makefile.am (EXPECTED_FAIL_MINGW): Remove fmttest and + hsprint. They seem to work now. Thanks to Scott Deifik + for the report. + +2021-09-10 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): functab6, new test. + * functab6.awk, functab6.ok: New files. + * symtab10.ok: Modified after code change. + * symtab10.in: Removed. + +2021-09-06 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): typeof6, new test. + * typeof6.awk, typeof6.ok: New files. + * Makefile.am (EXTRA_DIST): commas, new test. + * commas.awk, commas.ok: New files. + +2021-08-13 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): regexsub, new test. + * regexsub.awk, regexsub.ok: New files. + +2021-05-15 Eli Zaretskii + + * iolint.ok: Reorder results to follow the order of iolint.awk. + + * iolint.awk: Use "BINMODE = 2", otherwise the result of cksum on + non-Posix platforms will not match. Reorder the tests to make the + binary mode used only in the last one. + +2021-05-13 Arnold D. Robbins + + * Makefile.am (EXPECTED_FAIL_ZOS): Updated and sorted / uniqued. + (clean-local): Remove X_* files from diffout-zos. + +2021-05-12 Arnold D. Robbins + + * localenl.sh: Fix for Bash 5.1. Thanks to + Marius Bakke for the report and fix. + +2021-05-10 Arnold D. Robbins + + * argcasfile.ok: Add the leading space in the argument; see + pc/ChangeLog for explanation why. + + General: + - Don't use egrep -q, not portable to Solaris 10. + - Use $(CMP) instead of cmp. + + * iolint.awk: Change order so can use plain 'cat' instead of + 'exec cat'. Makes it available for MinGW. + * iolint.ok: Update after code changes. + * Makefile.am (iolint): Update shell recipe. + +2021-05-09 Eli Zaretskii + + * Makefile.am (EXPECTED_FAIL_MINGW): Update for the new tests. + + * argcasfile.ok: Adjust for the leading space in the argument; see + pc/ChangeLog for explanation why. + +2021-05-08 Arnold D. Robbins + + * iolint.awk: Use cksum instead of md5sum, for better portability. + * iolint.ok: Adjusted. + +2021-05-05 Arnold D. Robbins + + * Makefile.am (iolint): Fix for out-of-tree builds. + (testext): Ditto + * iolint.ok: Updated. + +2021-04-14 Arnold D. Robbins + + * noeffect.awk: Add more test cases. Thanks to Wolfgang Laun + . + * lintwarn.ok, noeffect.ok: Updated after code and test changes. + +2021-02-13 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): argcasfile, new test. + * argcasfile.awk, argcasfile.in, argcasfile.ok: New files. + +2021-01-09 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): octdec, new test. + * octdec.awk, octdec.ok: New files. + +2021-01-07 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): modifiers, new test. + * modifiers.sh, modifiers.ok: New files. + + Unrelated: + + * Makefile.am (EXTRA_DIST): rsnullre, new test. + * rsnullre.awk, rsnullre.in, rsnullre.ok: New files. + +2020-12-26 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): fpat9, new test. + * fpat9.awk, fpat9.in, fpat9.ok: New files. + +2020-12-20 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Remove forcenum-mpfr.ok. + * forcenum-mpfr.ok: File deleted, no longer needed. + +2020-12-19 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): inf-nan-torture, new test. + * inf-nan-torture.awk, inf-nan-torture.in, inf-nan-torture.ok: New + files. + +2020-10-29 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): functab5, new test. + (SHLIB_TESTS): Ditto. + * functab5.awk, functab5.ok: New files. + +2020-10-09 Arnold D. Robbins + + * xref.awk: Bug fix: Identifiers can have underscore in the middle. + Thanks to Tom Gray for the report, way + back on Wed, 25 Jan 2012. + * profile2.ok: Updated after above code change. + +2020-10-05 Arnold D. Robbins + + * iolint.awk, iolint.ok: Remove |& test to cat. It was + inherently racy. + + Unrelated: + + * Makefile.am (diffout): Switch to `diff -u' since Busybox + doesn't support the old -c option. Thanks to Nelson Beebe for + the report. + +2020-10-01 Arnold D. Robbins + + * iolint.awk, iolint.ok: Adjust output to cat for exit status + portability. Thanks to Andrew Schorr for finding the issue. + * Makefile.am (iolint): Adjust scaffolding around the test. + +2020-09-21 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): New test iolint. Sort the list of + files beginning with 'i'. + * iolint.awk, iolint.ok: New files. + +2020-09-04 Arnold D. Robbins + + * id.ok: Updated after code changes. + +2020-08-24 Arnold D. Robbins + + * mbstr1.ok, mbstr2.ok: Updated after code changes. + +2020-08-20 Arnold D. Robbins + + * profile14.ok: Updated. Somehow it was not done right to + start. + +2020-08-17 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): New tests, profile14 and profile15. + * profile14.awk, profile14.ok, profile15.awk, profile15.ok: New files. + +2020-08-12 Arnold D. Robbins + + * nsprof1.ok, nsprof2.ok: Updated after code changes. + +2020-08-04 Arnold D. Robbins + + Simplify handling of tests that have an -mpfr.ok file. + + * Gentests: Remove CHECK_MPFR handling. Instead, read the + EXTRA_DIST list of files and generate better checking tests + for tests that have an -mpfr.ok file. Use GAWK_TEST__ARGS + instead of AWKFLAGS. + * Makefile.am (CHECK_MPFR): Removed. + (arrdbg, testext): Checks updated. + +2020-07-20 Arnold D. Robbins + + * Makefile.am (EXPECTED_FAIL_ZOS): Add posix_compare to the list. + +2020-07-12 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Remove arrdbug-mpfr.ok and + add testext-mpfr.ok. + (CHECK_MPFR): Cleaned up. + (arrdbg): Adjust the flow. + (testext): Ditto. + * arrdbg.awk: Update code. + +2020-07-08 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Add additional ok files for MPFR. + (CHECK_MPFR): Add arraytype, arrdbg, forcenum and numrange + (arrdbg): Update to check -mpfr.ok file also. + * arraytype-mpfr.ok, arrdbg-mpfr.ok, forcenum-mpfr.ok, numrange-mpfr.ok: New files. + +2020-07-07 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): New test, mpfrcase2. + * mpfrcase2.awk, mpfrcase2.in, mpfrcase2.ok: New files. + +2020-07-06 Andrew J. Schorr + + * Makefile.am (AWK): Append $(GAWK_TEST_ARGS) to enable running + tests with -M enabled for MPFR debugging. + +2020-07-05 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): New tests, mpfrcase, mpfrnonum. + * mpfrcase.awk, mpfrcase.in, mpfrcase.ok, + mpfrnonum.awk, mpfrnonum.in, mpfrnonum.ok: New files. + +2020-07-02 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): New test, posix_compare. + * posix_compare.awk, posix_compare.ok: New files. + + Unrelated: + + * badargs.ok: Updated after code changes. + +2020-06-29 Arnold D. Robbins + + * dbugeval2.ok, dbugtypedre1.ok, dbugtypedre2.ok, symtab10.ok, + watchpoint1.ok: Updated after code changes. + +2020-06-10 Arnold D. Robbins + + Miscellanious fixes from Michael Builov . + + * Gentests: Use correct locale for JP. + +2020-06-08 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): New test, strfieldnum. + * strfieldnum.awk, strfieldnum.in, strfieldnum.ok: New files. + +2020-05-06 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): New test, lintplus. + * lintplus.awk, lintplus.ok: New files. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/test/commas.awk gawk-5.1.1/test/commas.awk --- gawk-5.1.0/test/commas.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/commas.awk 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1,4 @@ +BEGIN { + printf("%'d\n",123456789) + printf("%'f\n",123456789) +} diff -urN gawk-5.1.0/test/commas.ok gawk-5.1.1/test/commas.ok --- gawk-5.1.0/test/commas.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/commas.ok 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1,2 @@ +123,456,789 +123,456,789.000000 diff -urN gawk-5.1.0/test/dbugeval2.ok gawk-5.1.1/test/dbugeval2.ok --- gawk-5.1.0/test/dbugeval2.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/dbugeval2.ok 2020-08-28 14:48:06.000000000 +0300 @@ -1,5 +1,5 @@ Breakpoint 1 set at file `dbugeval2.awk', line 3 -Starting program: +Starting program: Stopping in BEGIN ... Breakpoint 1, main() at `dbugeval2.awk':3 3 b = 3 diff -urN gawk-5.1.0/test/dbugtypedre1.ok gawk-5.1.1/test/dbugtypedre1.ok --- gawk-5.1.0/test/dbugtypedre1.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/dbugtypedre1.ok 2020-08-28 14:48:06.000000000 +0300 @@ -1,5 +1,5 @@ Watchpoint 1: e -Starting program: +Starting program: number untyped regexp diff -urN gawk-5.1.0/test/dbugtypedre2.ok gawk-5.1.1/test/dbugtypedre2.ok --- gawk-5.1.0/test/dbugtypedre2.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/dbugtypedre2.ok 2020-08-28 14:48:06.000000000 +0300 @@ -1,5 +1,5 @@ Watchpoint 1: x -Starting program: +Starting program: Stopping in BEGIN ... Watchpoint 1: x Old value: untyped variable diff -urN gawk-5.1.0/test/dfacheck2.awk gawk-5.1.1/test/dfacheck2.awk --- gawk-5.1.0/test/dfacheck2.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/dfacheck2.awk 2020-11-01 20:00:33.000000000 +0200 @@ -0,0 +1 @@ +/^x+x+x+x+y$/ diff -urN gawk-5.1.0/test/dfacheck2.in gawk-5.1.1/test/dfacheck2.in --- gawk-5.1.0/test/dfacheck2.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/dfacheck2.in 2020-11-01 20:00:33.000000000 +0200 @@ -0,0 +1,3 @@ +xxy +xxxy +xxxxy diff -urN gawk-5.1.0/test/dfacheck2.ok gawk-5.1.1/test/dfacheck2.ok --- gawk-5.1.0/test/dfacheck2.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/dfacheck2.ok 2020-11-01 20:00:33.000000000 +0200 @@ -0,0 +1 @@ +xxxxy diff -urN gawk-5.1.0/test/fpat9.awk gawk-5.1.1/test/fpat9.awk --- gawk-5.1.0/test/fpat9.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/fpat9.awk 2020-12-26 21:11:19.000000000 +0200 @@ -0,0 +1,22 @@ +#! /bin/gawk -f + +# Modified version of program from Arthur Schwarz . + +BEGIN { # program constants + FPAT = "([^,]*)|(\"([^\"]|\"\")+\")" # CSV field separator + print "FPAT = ", FPAT; +} +{ + print "------------------------------------------------\n" + print $0; + printf("%3d: \n", NF); + for (i = 1; i <= NF; i++) { + if (substr($i, 1, 1) == "\"") { + len = length($i) # BUG FIX, was length($1) + $i = substr($i, 2, len - 2); + gsub(/""/, "\"", $i) # embedded "" --> " + } + printf(" <%d: %s>\n", i, $i); + } + print " "; +} diff -urN gawk-5.1.0/test/fpat9.in gawk-5.1.1/test/fpat9.in --- gawk-5.1.0/test/fpat9.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/fpat9.in 2020-12-26 21:11:19.000000000 +0200 @@ -0,0 +1,7 @@ +"PDQ",,, +"line 1",,,"http://file.a/A%20Guide%20" +"line 2",,,"https://www.whitgt.pdf" +"line 3, and xyz",,,"http://www.c/main.pdf" +"line 4 "" and abc",,,http://file.a/A%20Guide%20 +line 5,,,https://www.whitgt.pdf +line 6,,,http://file.a/A%20Guide%20 diff -urN gawk-5.1.0/test/fpat9.ok gawk-5.1.1/test/fpat9.ok --- gawk-5.1.0/test/fpat9.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/fpat9.ok 2020-12-26 21:11:19.000000000 +0200 @@ -0,0 +1,64 @@ +FPAT = ([^,]*)|("([^"]|"")+") +------------------------------------------------ + +"PDQ",,, + 4: + <1: PDQ> + <2: > + <3: > + <4: > + +------------------------------------------------ + +"line 1",,,"http://file.a/A%20Guide%20" + 4: + <1: line 1> + <2: > + <3: > + <4: http://file.a/A%20Guide%20> + +------------------------------------------------ + +"line 2",,,"https://www.whitgt.pdf" + 4: + <1: line 2> + <2: > + <3: > + <4: https://www.whitgt.pdf> + +------------------------------------------------ + +"line 3, and xyz",,,"http://www.c/main.pdf" + 4: + <1: line 3, and xyz> + <2: > + <3: > + <4: http://www.c/main.pdf> + +------------------------------------------------ + +"line 4 "" and abc",,,http://file.a/A%20Guide%20 + 4: + <1: line 4 " and abc> + <2: > + <3: > + <4: http://file.a/A%20Guide%20> + +------------------------------------------------ + +line 5,,,https://www.whitgt.pdf + 4: + <1: line 5> + <2: > + <3: > + <4: https://www.whitgt.pdf> + +------------------------------------------------ + +line 6,,,http://file.a/A%20Guide%20 + 4: + <1: line 6> + <2: > + <3: > + <4: http://file.a/A%20Guide%20> + diff -urN gawk-5.1.0/test/functab5.awk gawk-5.1.1/test/functab5.awk --- gawk-5.1.0/test/functab5.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/functab5.awk 2020-10-30 10:16:50.000000000 +0200 @@ -0,0 +1,12 @@ +@load "filefuncs" + +BEGIN { + PROCINFO["sorted_in"] = "sort" + for (i in FUNCTAB) + print i "'" +} + +function sort(i1, v1, i2, v2) +{ + return i1 == i2 ? 0 : i1 < i2 ? -1 : +1 +} diff -urN gawk-5.1.0/test/functab5.ok gawk-5.1.1/test/functab5.ok --- gawk-5.1.0/test/functab5.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/functab5.ok 2021-10-25 19:18:14.000000000 +0300 @@ -0,0 +1,46 @@ +and' +asort' +asorti' +atan2' +bindtextdomain' +chdir' +close' +compl' +cos' +dcgettext' +dcngettext' +exp' +fflush' +fts' +gensub' +gsub' +index' +int' +isarray' +length' +log' +lshift' +match' +mktime' +or' +patsplit' +rand' +rshift' +sin' +sort' +split' +sprintf' +sqrt' +srand' +stat' +statvfs' +strftime' +strtonum' +sub' +substr' +system' +systime' +tolower' +toupper' +typeof' +xor' diff -urN gawk-5.1.0/test/functab6.awk gawk-5.1.1/test/functab6.awk --- gawk-5.1.0/test/functab6.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/functab6.awk 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1 @@ +BEGIN { print FUNCTAB[0] } diff -urN gawk-5.1.0/test/functab6.ok gawk-5.1.1/test/functab6.ok --- gawk-5.1.0/test/functab6.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/functab6.ok 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1,2 @@ +gawk: functab6.awk:1: fatal: reference to uninitialized element `FUNCTAB["0"] is not allowed' +EXIT CODE: 2 diff -urN gawk-5.1.0/test/Gentests gawk-5.1.1/test/Gentests --- gawk-5.1.0/test/Gentests 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/Gentests 2021-10-13 10:22:46.000000000 +0300 @@ -16,12 +16,19 @@ Locale["EN"] = "en_US.UTF-8" Locale["FR"] = "fr_FR.UTF-8" Locale["GR"] = "el_GR.iso88597" - Locale["JA"] = "ja_JP.UTF-8" + Locale["JP"] = "ja_JP.UTF-8" Locale["RU"] = "ru_RU.UTF-8" } # process the file Makefile.am: +/^EXTRA_DIST *=/,/[^\\]$/ { + gsub(/(^EXTRA_DIST *=|\\$)/,"") + for (i = 1; i <= NF; i++) + extra_dist[$i] + next +} + /^[[:upper:]_]*_TESTS *=/,/[^\\]$/ { gsub(/(^[[:upper:]_]*_TESTS *=|\\$)/,"") for (i = 1; i <= NF; i++) @@ -108,15 +115,6 @@ next } -/^CHECK_MPFR *=/,/[^\\]$/ { - gsub(/(^CHECK_MPFR *=|\\$)/,"") - for (i = 1; i <= NF; i++) - { - mpfr[$i] - } - next -} - # Tests needing a particular locale /^NEED_LOCALE_.* *=/,/[^\\]$/ { if (/^NEED/) @@ -139,7 +137,7 @@ next } -/^[[:alpha:]_][[:alnum:]_]*:/ { +/^[[:alpha:]_][-[:alnum:]_]*:/ { # remember all targets from Makefile.am sub(/:.*/,"") targets[$0] @@ -255,16 +253,14 @@ } } - if (x in mpfr) { - delete mpfr[x] - printf "%s", locale_string - printf "AWKPATH=\"$(srcdir)\" $(AWK) $(AWKFLAGS) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s - printf "\t@-if test -z \"$$AWKFLAGS\" ; then $(CMP) \"$(srcdir)\"/$@.ok _$@ && rm -f _$@ ; else \\\n" - printf "\t$(CMP) \"$(srcdir)\"/$@-mpfr.ok _$@ && rm -f _$@ ; \\\n" - printf "\tfi\n\n" + printf "%s", locale_string + printf "AWKPATH=\"$(srcdir)\" $(AWK) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s + + if ((x "-mpfr.ok") in extra_dist) { + printf "\t@-if echo \"$$GAWK_TEST_ARGS\" | egrep -q -e '-M|--bignum' > /dev/null ; \\\n" + printf "\tthen $(CMP) \"$(srcdir)\"/$@-mpfr.ok _$@ && rm -f _$@ ; \\\n" + printf "\telse $(CMP) \"$(srcdir)\"/$@.ok _$@ && rm -f _$@ ; fi\n\n" } else { - printf "%s", locale_string - printf "AWKPATH=\"$(srcdir)\" $(AWK) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s printf "\t@-$(CMP) \"$(srcdir)\"/$@.ok _$@ && rm -f _$@\n\n" } } @@ -297,7 +293,6 @@ for (x in nondec) if (!(x in targets)) printf "WARNING: --non-decimal-data target `%s' is missing.\n", x > "/dev/stderr" - for (x in re_interval) if (!(x in targets)) printf "WARNING: --re-interval target `%s' is missing.\n", x > "/dev/stderr" @@ -305,6 +300,9 @@ for (y in locale_tests[x]) if (!(y in targets)) printf("WARNING: Locale `%s' target `%s' is missing.\n", x, y) > "/dev/stderr" + if ("check_zos" in ENVIRON) + for (x in zos_fail) + printf "WARNING: check target `%s' for $(ZOS_FAIL).\n", x > "/dev/stderr" for (x in files) if (!(x in unused) && \ diff -urN gawk-5.1.0/test/id.ok gawk-5.1.1/test/id.ok --- gawk-5.1.0/test/id.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/id.ok 2021-10-25 19:18:14.000000000 +0300 @@ -28,7 +28,7 @@ SUBSEP -> scalar SYMTAB -> array TEXTDOMAIN -> scalar -an_array -> untyped +an_array -> array and -> builtin asort -> builtin asorti -> builtin diff -urN gawk-5.1.0/test/inf-nan-torture.awk gawk-5.1.1/test/inf-nan-torture.awk --- gawk-5.1.0/test/inf-nan-torture.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/inf-nan-torture.awk 2020-12-20 20:15:25.000000000 +0200 @@ -0,0 +1,4 @@ +{ + for (i = 1; i <= NF; i++) + print i, $i, $i + 0 +} diff -urN gawk-5.1.0/test/inf-nan-torture.in gawk-5.1.1/test/inf-nan-torture.in --- gawk-5.1.0/test/inf-nan-torture.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/inf-nan-torture.in 2020-12-20 20:15:25.000000000 +0200 @@ -0,0 +1 @@ +-inf -inform inform -nan -nancy nancy -123 0 123 +123 nancy +nancy +nan inform +inform +inf diff -urN gawk-5.1.0/test/inf-nan-torture.ok gawk-5.1.1/test/inf-nan-torture.ok --- gawk-5.1.0/test/inf-nan-torture.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/inf-nan-torture.ok 2020-12-20 20:15:25.000000000 +0200 @@ -0,0 +1,16 @@ +1 -inf -inf +2 -inform 0 +3 inform 0 +4 -nan -nan +5 -nancy 0 +6 nancy 0 +7 -123 -123 +8 0 0 +9 123 123 +10 +123 123 +11 nancy 0 +12 +nancy 0 +13 +nan +nan +14 inform 0 +15 +inform 0 +16 +inf +inf diff -urN gawk-5.1.0/test/iolint.awk gawk-5.1.1/test/iolint.awk --- gawk-5.1.0/test/iolint.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/iolint.awk 2021-05-25 06:27:24.000000000 +0300 @@ -0,0 +1,72 @@ +BEGIN { + LINT = 1 + + # `%.*s' used for input file and for output file + print "hi" > "f1" + fflush("f1") + getline x < "f1" + print close("f1") + print close("f1") + fflush() + + # `%.*s' used for input file and input pipe + # `%.*s' used for input file and two-way pipe + # `%.*s' used for input pipe and two-way pipe + getline data3 < "echo hello" + "echo hello" |& getline data2 + "echo hello" | getline data + + print data, data2, data3 + + print close("echo hello") + print close("echo hello") + print close("echo hello") + fflush() + + # `%.*s' used for input file and output pipe + getline x < "cat" + print "foo" | "cat" + print close("cat") + print close("cat") + fflush() + + # unnecessary mixing of `>' and `>>' for file `%.*s' + print "foo" > "f2" + print "bar" >> "f2" + print close("f2") + print close("f2") # -1 expected here + fflush() + + # `%.*s' used for input pipe and output file + "echo hello" | getline junk + print "hello" > "echo hello" + print close("echo hello") + print close("echo hello") + fflush() + + # `%.*s' used for output file and output pipe + # `%.*s' used for output file and two-way pipe + # `%.*s' used for output pipe and two-way pipe + # Not doing |& due to race condition and signals. sigh + cat = "cat" + print "hello" | "cat" + print "/bin/cat \"$@\"" > "cat" + print close("cat") + print close("cat") + fflush() + + # `%.*s' used for input pipe and output pipe + "echo hello" | getline junk + print "hello" | "echo hello" + print close("echo hello") + print close("echo hello") + fflush() + + # `%.*s' used for output file and output pipe" + BINMODE = 2 + print "junk" > "cksum" # cksum is more portable than md5sum + print "hello" | "cksum" + print close("cksum") + print close("cksum") + fflush() +} diff -urN gawk-5.1.0/test/iolint.ok gawk-5.1.1/test/iolint.ok --- gawk-5.1.0/test/iolint.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/iolint.ok 2021-05-25 06:27:24.000000000 +0300 @@ -0,0 +1,33 @@ +gawk: iolint.awk:7: warning: `f1' used for input file and for output file +0 +0 +gawk: iolint.awk:16: warning: `echo hello' used for input file and two-way pipe +gawk: iolint.awk:17: warning: `echo hello' used for input pipe and two-way pipe +gawk: iolint.awk:17: warning: `echo hello' used for input file and input pipe +hello hello hello +0 +0 +0 +foo +0 +gawk: iolint.awk:30: warning: close: `cat' is not an open file, pipe or co-process +-1 +gawk: iolint.awk:35: warning: unnecessary mixing of `>' and `>>' for file `f2' +0 +gawk: iolint.awk:37: warning: close: `f2' is not an open file, pipe or co-process +-1 +gawk: iolint.awk:42: warning: `echo hello' used for input pipe and output file +0 +0 +gawk: iolint.awk:53: warning: `cat' used for output file and output pipe +0 +hello +0 +gawk: iolint.awk:60: warning: `echo hello' used for input pipe and output pipe +hello +0 +0 +gawk: iolint.awk:68: warning: `cksum' used for output file and output pipe +3015617425 6 +0 +0 diff -urN gawk-5.1.0/test/lintplus.awk gawk-5.1.1/test/lintplus.awk --- gawk-5.1.0/test/lintplus.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/lintplus.awk 2020-05-06 20:56:25.000000000 +0300 @@ -0,0 +1 @@ +BEGIN { y = substr("abc", 2, 2) + "d" ; print y } diff -urN gawk-5.1.0/test/lintplus.ok gawk-5.1.1/test/lintplus.ok --- gawk-5.1.0/test/lintplus.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/lintplus.ok 2020-05-06 20:56:25.000000000 +0300 @@ -0,0 +1,2 @@ +gawk: lintplus.awk:1: warning: operator `+' used on two string values +0 diff -urN gawk-5.1.0/test/lintwarn.ok gawk-5.1.1/test/lintwarn.ok --- gawk-5.1.0/test/lintwarn.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/lintwarn.ok 2021-04-28 22:06:54.000000000 +0300 @@ -1,15 +1,15 @@ gawk: lintwarn.awk:2: warning: `BEGINFILE' is a gawk extension gawk: lintwarn.awk:3: error: non-redirected `getline' invalid inside `BEGINFILE' rule gawk: lintwarn.awk:4: error: non-redirected `getline' invalid inside `BEGINFILE' rule -gawk: lintwarn.awk:8: warning: statement may have no effect +gawk: lintwarn.awk:8: warning: statement has no effect gawk: lintwarn.awk:9: warning: plain `print' in BEGIN or END rule should probably be `print ""' gawk: lintwarn.awk:10: error: `nextfile' used in BEGIN action gawk: lintwarn.awk:12: warning: `delete(array)' is a non-portable tawk extension gawk: lintwarn.awk:13: warning: regular expression on right of assignment gawk: lintwarn.awk:14: warning: regular expression on right of comparison -gawk: lintwarn.awk:14: warning: statement may have no effect +gawk: lintwarn.awk:14: warning: statement has no effect gawk: lintwarn.awk:15: warning: regular expression on left of `~' or `!~' operator -gawk: lintwarn.awk:15: warning: statement may have no effect +gawk: lintwarn.awk:15: warning: statement has no effect gawk: lintwarn.awk:16: warning: call of `length' without parentheses is not portable gawk: lintwarn.awk:17: warning: `switch' is a gawk extension gawk: lintwarn.awk:18: warning: `case' is a gawk extension @@ -23,12 +23,12 @@ gawk: lintwarn.awk:26: a[] gawk: lintwarn.awk:26: ^ syntax error gawk: lintwarn.awk:26: error: invalid subscript expression -gawk: lintwarn.awk:26: warning: statement may have no effect +gawk: lintwarn.awk:26: warning: statement has no effect gawk: lintwarn.awk:27: warning: regexp constant for parameter #1 yields boolean value gawk: lintwarn.awk:28: warning: regexp constant `//' looks like a C++ comment, but is not -gawk: lintwarn.awk:28: warning: statement may have no effect +gawk: lintwarn.awk:28: warning: statement has no effect gawk: lintwarn.awk:29: warning: regexp constant `/* */' looks like a C comment, but is not -gawk: lintwarn.awk:29: warning: statement may have no effect +gawk: lintwarn.awk:29: warning: statement has no effect gawk: lintwarn.awk:32: warning: non-redirected `getline' undefined inside END action gawk: lintwarn.awk:34: error: function `zz': parameter #2, `aa', duplicates parameter #1 gawk: lintwarn.awk:38: warning: `include' is a gawk extension diff -urN gawk-5.1.0/test/localenl.sh gawk-5.1.1/test/localenl.sh --- gawk-5.1.0/test/localenl.sh 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/test/localenl.sh 2021-05-20 21:29:00.000000000 +0300 @@ -36,9 +36,9 @@ AWK=${AWK:-../gawk} # April 2010: Remove UNKNOWN, causes spurious failures on some systems -for LC_ALL in C POSIX en_US.ISO-8859-1 en_US.UTF-8 #UNKNOWN +for LC in C POSIX en_US.ISO-8859-1 en_US.UTF-8 #UNKNOWN do -export LC_ALL +export LC_ALL=$LC 2>/dev/null cat < _$@.err + @echo $@ $(ZOS_FAIL) + @-AWKPATH="$(srcdir)" $(AWK) --pretty=_$@ -f $@.awk 2> _$@.err @cat _$@.err >> _$@ ; rm -f _$@.err @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -2228,7 +2278,9 @@ @echo $@ @$(AWK) ' /^(@load|BEGIN)/,/^}/' "$(top_srcdir)"/extension/testext.c > testext.awk @$(AWK) -f ./testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk testexttmp.txt + @-if echo "$$GAWK_TEST_ARGS" | egrep -e '-M|--bignum' > /dev/null; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ testext.awk testexttmp.txt ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk testexttmp.txt ; fi getfile: @echo $@ @@ -2365,8 +2417,10 @@ arrdbg: @echo $@ - @$(AWK) -v "okfile=./$@.ok" -f "$(srcdir)"/$@.awk | grep array_f >_$@ || echo EXIT CODE: $$? >> _$@ - @-$(CMP) ./$@.ok _$@ && rm -f _$@ ./$@.ok + @$(AWK) -v "okfile=./$@.ok" -v "mpfr_okfile=./$@-mpfr.ok" -f "$(srcdir)"/$@.awk | grep array_f >_$@ || echo EXIT CODE: $$? >> _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -e '-M|--bignum' > /dev/null; \ + then $(CMP) "."/$@-mpfr.ok _$@ && rm -f _$@ $@.ok $@-mpfr.ok ; \ + else $(CMP) "."/$@.ok _$@ && rm -f _$@ $@.ok $@-mpfr.ok ; fi sourcesplit: @echo $@ @@ -2392,7 +2446,7 @@ # 4/2018: On first call to $(CMP), send to /dev/null even with -s for MinGW. nlstringtest:: - @echo $@ + @echo $@ $(ZOS_FAIL) @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=fr_FR.UTF-8 ; export GAWKLOCALE ; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-if $(CMP) -s "$(srcdir)"/nlstringtest-nogettext.ok _$@ > /dev/null ; \ @@ -2419,6 +2473,18 @@ @$(AWK) -v x=@/foo/ -f "$(srcdir)"/$@.awk y=@/bar/ /dev/null >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +iolint: + @echo $@ $(ZOS_FAIL) + @echo hello > 'echo hello' + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-$(RM) -f cat 'echo hello' f1 f2 cksum + +argcasfile: + @echo $@ + @$(AWK) -f "$(srcdir)"/$@.awk ARGC=1 ' /no/such/file' < "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + # Targets generated for other tests: include Maketests @@ -2429,8 +2495,7 @@ clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ - readdir_test.ok readdir_retest.ok \ - profile1.ok + readdir_test.ok readdir_retest.ok profile1.ok X_* # An attempt to print something that can be grepped for in build logs pass-fail: @@ -2449,9 +2514,9 @@ echo ============== $$i ============= ; \ base=`echo $$i | sed 's/^_//'` ; \ if [ -r $${base}.ok ]; then \ - diff -c $${base}.ok $$i ; \ + diff -u $${base}.ok $$i ; \ else \ - diff -c "$(srcdir)"/$${base}.ok $$i ; \ + diff -u "$(srcdir)"/$${base}.ok $$i ; \ fi ; \ fi ; \ done | more diff -urN gawk-5.1.0/test/Makefile.in gawk-5.1.1/test/Makefile.in --- gawk-5.1.0/test/Makefile.in 2020-04-14 14:44:52.000000000 +0300 +++ gawk-5.1.1/test/Makefile.in 2021-10-28 20:20:02.000000000 +0300 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -17,7 +17,7 @@ # # test/Makefile.am --- automake input file for gawk # -# Copyright (C) 1988-2020 the Free Software Foundation, Inc. +# Copyright (C) 1988-2021 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -114,20 +114,20 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libsigsegv.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \ - $(top_srcdir)/m4/socket.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \ $(top_srcdir)/m4/triplet-transformation.m4 \ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @@ -151,21 +151,24 @@ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Maketests \ - $(top_srcdir)/mkinstalldirs ChangeLog README +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Maketests ChangeLog \ + README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ -AWK = $(LOCALES) AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG) +AWK = $(LOCALES) AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG) $(GAWK_TEST_ARGS) CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -173,6 +176,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GAWKLIBEXT = @GAWKLIBEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ @@ -204,8 +208,8 @@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -234,6 +238,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ acl_shlibext = @acl_shlibext@ am__include = @am__include@ @@ -317,6 +322,9 @@ argarray.awk \ argarray.in \ argarray.ok \ + argcasfile.awk \ + argcasfile.in \ + argcasfile.ok \ argtest.awk \ argtest.ok \ arrayind1.awk \ @@ -340,6 +348,7 @@ arraysort2.ok \ arraytype.awk \ arraytype.ok \ + arraytype-mpfr.ok \ arrdbg.awk \ arrymem1.awk \ arrymem1.ok \ @@ -452,6 +461,8 @@ colonwarn.awk \ colonwarn.in \ colonwarn.ok \ + commas.awk \ + commas.ok \ compare.awk \ compare.in \ compare.ok \ @@ -513,6 +524,9 @@ dfacheck1.awk \ dfacheck1.in \ dfacheck1.ok \ + dfacheck2.awk \ + dfacheck2.in \ + dfacheck2.ok \ dfamb1.awk \ dfamb1.in \ dfamb1.ok \ @@ -633,6 +647,9 @@ fpat8.awk \ fpat8.in \ fpat8.ok \ + fpat9.awk \ + fpat9.in \ + fpat9.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -666,6 +683,10 @@ functab3.ok \ functab4.awk \ functab4.ok \ + functab5.awk \ + functab5.ok \ + functab6.awk \ + functab6.ok \ funlen.awk \ funlen.in \ funlen.ok \ @@ -781,9 +802,6 @@ icasers.awk \ icasers.in \ icasers.ok \ - inpref.awk \ - inpref.in \ - inpref.ok \ id.awk \ id.ok \ igncdym.awk \ @@ -801,53 +819,59 @@ ignrcase.awk \ ignrcase.in \ ignrcase.ok \ - incdupe.ok \ incdupe2.ok \ incdupe3.ok \ incdupe4.ok \ incdupe5.ok \ incdupe6.ok \ incdupe7.ok \ + incdupe.ok \ inchello.awk \ inclib.awk \ + include2.ok \ include.awk \ include.ok \ - include2.ok \ indirectbuiltin.awk \ indirectbuiltin.ok \ + indirectcall2.awk \ + indirectcall2.ok \ indirectcall.awk \ indirectcall.in \ indirectcall.ok \ - indirectcall2.awk \ - indirectcall2.ok \ + inf-nan-torture.awk \ + inf-nan-torture.in \ + inf-nan-torture.ok \ inftest.awk \ inftest.ok \ - inplace.in \ - inplace.1.in \ - inplace.2.in \ - inplace1.ok \ inplace1.1.ok \ inplace1.2.ok \ - inplace2.ok \ - inplace2.1.ok \ + inplace.1.in \ + inplace1.ok \ inplace2.1.bak.ok \ - inplace2.2.ok \ + inplace2.1.ok \ inplace2.2.bak.ok \ + inplace2.2.ok \ inplace2bcomp.1.ok \ inplace2bcomp.1.orig.ok \ inplace2bcomp.2.ok \ inplace2bcomp.2.orig.ok \ inplace2bcomp.ok \ - inplace3.ok \ - inplace3.1.ok \ + inplace.2.in \ + inplace2.ok \ inplace3.1.bak.ok \ - inplace3.2.ok \ + inplace3.1.ok \ inplace3.2.bak.ok \ + inplace3.2.ok \ inplace3bcomp.1.ok \ inplace3bcomp.1.orig.ok \ inplace3bcomp.2.ok \ inplace3bcomp.2.orig.ok \ inplace3bcomp.ok \ + inplace3.ok \ + inplace.in \ + inpref.awk \ + inpref.in \ + inpref.ok \ inputred.awk \ inputred.ok \ intarray.awk \ @@ -860,6 +884,8 @@ intprec.ok \ iobug1.awk \ iobug1.ok \ + iolint.awk \ + iolint.ok \ isarrayunset.awk \ isarrayunset.ok \ jarebug.awk \ @@ -886,6 +912,8 @@ lintold.awk \ lintold.in \ lintold.ok \ + lintplus.awk \ + lintplus.ok \ lintset.awk \ lintset.ok \ lintwarn.awk \ @@ -906,6 +934,8 @@ manglprm.ok \ manyfiles.awk \ manyfiles.ok \ + modifiers.sh \ + modifiers.ok \ muldimposix.awk \ muldimposix.ok \ match1.awk \ @@ -959,6 +989,12 @@ mpfrbigint2.awk \ mpfrbigint2.in \ mpfrbigint2.ok \ + mpfrcase.awk \ + mpfrcase.in \ + mpfrcase.ok \ + mpfrcase2.awk \ + mpfrcase2.in \ + mpfrcase2.ok \ mpfrexprange.awk \ mpfrexprange.ok \ mpfrfield.awk \ @@ -970,6 +1006,9 @@ mpfrmemok1.ok \ mpfrnegzero.awk \ mpfrnegzero.ok \ + mpfrnonum.awk \ + mpfrnonum.in \ + mpfrnonum.ok \ mpfrnr.awk \ mpfrnr.in \ mpfrnr.ok \ @@ -1093,11 +1132,14 @@ numindex.ok \ numrange.awk \ numrange.ok \ + numrange-mpfr.ok \ numstr1.awk \ numstr1.ok \ numsubstr.awk \ numsubstr.in \ numsubstr.ok \ + octdec.awk \ + octdec.ok \ octsub.awk \ octsub.ok \ ofmt.awk \ @@ -1164,11 +1206,13 @@ pipeio2.awk \ pipeio2.in \ pipeio2.ok \ + posix2008sub.awk \ + posix2008sub.ok \ + posix_compare.awk \ + posix_compare.ok \ posix.awk \ posix.in \ posix.ok \ - posix2008sub.awk \ - posix2008sub.ok \ poundbang.awk \ prdupval.awk \ prdupval.in \ @@ -1227,6 +1271,12 @@ profile12.ok \ profile13.awk \ profile13.ok \ + profile14.awk \ + profile14.ok \ + profile15.awk \ + profile15.ok \ + profile16.awk \ + profile16.ok \ prt1eval.awk \ prt1eval.ok \ prtoeval.awk \ @@ -1279,6 +1329,8 @@ regexpbrack2.ok \ regexprange.awk \ regexprange.ok \ + regexsub.awk \ + regexsub.ok \ reginttrad.awk \ reginttrad.ok \ regnul1.awk \ @@ -1327,6 +1379,9 @@ rsnul1nl.ok \ rsnulbig.ok \ rsnulbig2.ok \ + rsnullre.awk \ + rsnullre.in \ + rsnullre.ok \ rsnulw.awk \ rsnulw.in \ rsnulw.ok \ @@ -1424,6 +1479,9 @@ status-close.ok \ strcat1.awk \ strcat1.ok \ + strfieldnum.awk \ + strfieldnum.in \ + strfieldnum.ok \ strftime.awk \ strftlng.awk \ strftlng.ok \ @@ -1491,7 +1549,6 @@ symtab9.awk \ symtab9.ok \ symtab10.awk \ - symtab10.in \ symtab10.ok \ symtab11.awk \ symtab11.ok \ @@ -1504,6 +1561,7 @@ tailrecurse.awk \ tailrecurse.ok \ testext.ok \ + testext-mpfr.ok \ time.awk \ time.ok \ timeout.awk \ @@ -1542,6 +1600,8 @@ typeof5.awk \ typeof5.in \ typeof5.ok \ + typeof6.awk \ + typeof6.ok \ uninit2.awk \ uninit2.ok \ uninit3.awk \ @@ -1596,87 +1656,80 @@ # try to keep these sorted. each letter starts a new line BASIC_TESTS = \ - addcomma anchgsub anchor argarray arrayind1 arrayind2 arrayind3 arrayparm \ - arrayprm2 arrayprm3 arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 \ - arynasty arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ - aryprm8 aryprm9 arysubnm aryunasgn asgext awkpath \ - assignnumfield assignnumfield2 \ - back89 backgsub badassign1 badbuild \ - callparam childin clobber closebad clsflnam compare compare2 \ - concat1 concat2 concat3 concat4 concat5 convfmt \ - datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \ - escapebrace eofsplit eofsrc1 exit2 exitval1 exitval2 exitval3 \ - fcall_exit fcall_exit2 fldchg fldchgnf fldterm fnamedat fnarray fnarray2 \ - fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fscaret fsnul1 \ - fsrs fsspcoln fstabplus funsemnl funsmnam funstack \ - getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \ - gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 \ - gsubtst8 \ - hex hex2 hsprint \ - inpref inputred intest intprec iobug1 \ - leaddig leadnl litoct longsub longwrds \ - manglprm math membug1 memleak messages minusstr mmap8k \ - nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \ - nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl noparms \ - nors nulinsrc nulrsend numindex numrange numstr1 numsubstr \ - octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \ - opasnidx opasnslf \ - paramasfunc1 paramasfunc2 paramdup paramres paramtyp paramuninitglobal \ - parse1 parsefld parseme pcntplus posix2008sub prdupval prec printf0 \ - printf1 printfchar prmarscl prmreuse prt1eval prtoeval \ - rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \ - regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \ - rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rsnulw \ - rstest1 rstest2 rstest3 rstest4 rstest5 rswhite \ - scalar sclforin sclifin setrec0 setrec1 \ - sigpipe1 sortempty sortglos spacere splitargv splitarr \ - splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \ - subamp subback subi18n subsepnm subslash substr swaplns synerr1 synerr2 synerr3 \ - tailrecurse tradanch trailbs tweakfld \ - uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs uplus \ - wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \ - zero2 zeroe0 zeroflag + addcomma anchgsub anchor argarray argcasfile arrayind1 arrayind2 \ + arrayind3 arrayparm arrayprm2 arrayprm3 arrayref arrymem1 \ + arryref2 arryref3 arryref4 arryref5 arynasty arynocls aryprm1 \ + aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 aryprm8 aryprm9 \ + arysubnm aryunasgn asgext awkpath assignnumfield assignnumfield2 \ + back89 backgsub badassign1 badbuild callparam childin clobber \ + closebad clsflnam compare compare2 concat1 concat2 concat3 concat4 \ + concat5 convfmt datanonl defref delargv delarpm2 delarprm delfunc \ + dfacheck2 dfamb1 dfastress dynlj escapebrace eofsplit eofsrc1 \ + exit2 exitval1 exitval2 exitval3 fcall_exit fcall_exit2 fldchg \ + fldchgnf fldterm fnamedat fnarray fnarray2 fnaryscl fnasgnm \ + fnmisc fordel forref forsimp fsbs fscaret fsnul1 fsrs fsspcoln \ + fstabplus funsemnl funsmnam funstack getline getline2 getline3 \ + getline4 getline5 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \ + gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 gsubtst8 \ + hex hex2 hsprint inpref inputred intest intprec iobug1 leaddig \ + leadnl litoct longsub longwrds manglprm math membug1 memleak \ + messages minusstr mmap8k nasty nasty2 negexp negrange nested \ + nfldstr nfloop nfneg nfset nlfldsep nlinstr nlstrina noeffect \ + nofile nofmtch noloop1 noloop2 nonl noparms nors nulinsrc \ + nulrsend numindex numrange numstr1 numsubstr octsub ofmt \ + ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl opasnidx \ + opasnslf paramasfunc1 paramasfunc2 paramdup paramres paramtyp \ + paramuninitglobal parse1 parsefld parseme pcntplus posix_compare \ + posix2008sub prdupval prec printf0 printf1 printfchar prmarscl \ + prmreuse prt1eval prtoeval rand randtest range1 range2 readbuf \ + rebrackloc rebt8b1 rebuild redfilnm regeq regexpbrack regexpbrack2 \ + regexprange regrange reindops reparse resplit rri1 rs rscompat \ + rsnul1nl rsnulbig rsnulbig2 rsnullre rsnulw rstest1 rstest2 \ + rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin setrec0 \ + setrec1 sigpipe1 sortempty sortglos spacere splitargv splitarr \ + splitdef splitvar splitwht status-close strcat1 strfieldnum \ + strnum1 strnum2 strtod subamp subback subi18n subsepnm subslash \ + substr swaplns synerr1 synerr2 synerr3 tailrecurse tradanch \ + trailbs tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized \ + unterm uparrfs uplus wideidx wideidx2 widesub widesub2 widesub3 \ + widesub4 wjposer1 zero2 zeroe0 zeroflag UNIX_TESTS = \ fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \ space strftlng GAWK_EXT_TESTS = \ - aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort arraysort2 \ - arraytype \ - backw badargs beginfile1 beginfile2 binmode1 \ - charasbytes colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \ - clos1way6 crlf \ - dbugeval dbugeval2 dbugeval3 dbugtypedre1 dbugtypedre2 delsub \ - devfd devfd1 devfd2 dfacheck1 dumpvars \ - errno exit fieldwdth forcenum \ - fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpatnull \ - fsfwfs funlen functab1 functab2 functab3 \ - fwtest fwtest2 fwtest3 fwtest4 fwtest5 fwtest6 fwtest7 fwtest8 \ - genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind \ - icasefs icasers id igncdym igncfs ignrcas2 ignrcas4 ignrcase incdupe \ - incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 include include2 \ - indirectbuiltin indirectcall indirectcall2 intarray isarrayunset \ - lint lintexp lintindex lintint lintlength lintold lintset lintwarn \ - manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \ - nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \ - nsawk1a nsawk1b nsawk1c nsawk2a nsawk2b \ - nsbad nsbad_cmd nsforloop nsfuncrecurse nsindirect1 nsindirect2 nsprof1 nsprof2 \ - patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge \ - procinfs profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ - profile7 profile8 profile9 profile10 profile11 profile12 profile13 pty1 pty2 \ - rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin \ - rsstart1 rsstart2 rsstart3 rstest6 \ - sandbox1 shadow shadowbuiltin sortfor sortfor2 sortu \ - sourcesplit split_after_fpat \ - splitarg4 strftfld strftime strtonum strtonum1 \ - stupid1 stupid2 stupid3 stupid4 \ + aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ + arraysort2 arraytype backw badargs beginfile1 beginfile2 binmode1 \ + charasbytes colonwarn clos1way clos1way2 clos1way3 clos1way4 \ + clos1way5 clos1way6 commas crlf dbugeval dbugeval2 dbugeval3 \ + dbugtypedre1 dbugtypedre2 delsub devfd devfd1 devfd2 dfacheck1 \ + dumpvars errno exit fieldwdth forcenum fpat1 fpat2 fpat3 fpat4 \ + fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull fsfwfs funlen functab1 \ + functab2 functab3 functab6 fwtest fwtest2 fwtest3 fwtest4 fwtest5 \ + fwtest6 fwtest7 fwtest8 genpot gensub gensub2 gensub3 getlndir \ + gnuops2 gnuops3 gnureops gsubind icasefs icasers id igncdym igncfs \ + ignrcas2 ignrcas4 ignrcase incdupe incdupe2 incdupe3 incdupe4 \ + incdupe5 incdupe6 incdupe7 include include2 indirectbuiltin \ + indirectcall indirectcall2 inf-nan-torture intarray iolint \ + isarrayunset lint lintexp lintindex lintint lintlength lintplus \ + lintold lintset lintwarn manyfiles match1 match2 match3 mbstr1 \ + mbstr2 mixed1 mktime modifiers muldimposix nastyparm negtime \ + next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 nsawk1a nsawk1b \ + nsawk1c nsawk2a nsawk2b nsbad nsbad_cmd nsforloop nsfuncrecurse \ + nsindirect1 nsindirect2 nsprof1 nsprof2 octdec patsplit posix \ + printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ + profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ + profile7 profile8 profile9 profile10 profile11 profile12 profile13 \ + profile14 profile15 profile16 pty1 pty2 rebuf regexsub regnul1 regnul2 \ + regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ + rsstart2 rsstart3 rstest6 sandbox1 shadow shadowbuiltin sortfor \ + sortfor2 sortu sourcesplit split_after_fpat splitarg4 strftfld \ + strftime strtonum strtonum1 stupid1 stupid2 stupid3 stupid4 \ switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 symtab7 \ - symtab8 symtab9 symtab10 symtab11 \ - timeout typedregex1 typedregex2 typedregex3 typedregex4 \ - typedregex5 typedregex6 \ - typeof1 typeof2 typeof3 typeof4 typeof5 \ - watchpoint1 + symtab8 symtab9 symtab10 symtab11 timeout typedregex1 typedregex2 \ + typedregex3 typedregex4 typedregex5 typedregex6 typeof1 typeof2 \ + typeof3 typeof4 typeof5 typeof6 watchpoint1 ARRAYDEBUG_TESTS = arrdbg EXTRA_TESTS = inftest regtest ignrcas3 @@ -1690,7 +1743,7 @@ SHLIB_TESTS = \ apiterm \ - filefuncs fnmatch fork fork2 fts functab4 \ + filefuncs fnmatch fork fork2 fts functab4 functab5 \ getfile \ inplace1 inplace2 inplace2bcomp inplace3 inplace3bcomp \ ordchr ordchr2 \ @@ -1700,32 +1753,36 @@ # List of the tests which should be run with --debug option: -NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 dbugeval3 symtab10 +NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 dbugeval3 # List of the tests which should be run with --lint option: NEED_LINT = \ - defref fmtspcl lintexp lintindex lintint lintlength lintwarn \ - noeffect nofmtch nonl shadow uninit2 uninit3 uninit4 uninit5 uninitialized + defref fmtspcl lintexp lintindex lintint lintlength lintplus \ + lintwarn noeffect nofmtch nonl shadow uninit2 uninit3 uninit4 \ + uninit5 uninitialized # List of the tests which should be run with --lint-old option: NEED_LINT_OLD = lintold # List of tests that must be run with -M -NEED_MPFR = mpfrbigint mpfrbigint2 mpfrexprange mpfrfield mpfrieee mpfrmemok1 \ - mpfrnegzero mpfrnr mpfrrem mpfrrnd mpfrrndeval mpfrsort mpfrsqrt \ - mpfrstrtonum mpgforcenum mpfruplus mpfranswer42 +NEED_MPFR = \ + mpfrbigint mpfrbigint2 mpfrcase mpfrcase2 mpfrexprange mpfrfield \ + mpfrieee mpfrmemok1 mpfrnegzero mpfrnonum mpfrnr mpfrrem mpfrrnd \ + mpfrrndeval mpfrsort mpfrsqrt mpfrstrtonum mpgforcenum mpfruplus \ + mpfranswer42 # List of tests that need --non-decimal-data NEED_NONDEC = mpfrbigint2 nondec2 intarray forcenum # List of tests that need --posix -NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix +NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix posix_compare # List of tests that need --pretty-print NEED_PRETTY = nsprof1 nsprof2 \ - profile4 profile5 profile8 profile9 profile10 profile11 profile13 + profile4 profile5 profile8 profile9 profile10 profile11 profile13 \ + profile14 profile15 profile16 # List of tests that need --re-interval @@ -1738,7 +1795,7 @@ NEED_TRADITIONAL = litoct tradanch rscompat # Lists of tests that run a shell script -RUN_SHELL = exit fflush localenl next randtest rtlen rtlen01 +RUN_SHELL = exit fflush localenl modifiers next randtest rtlen rtlen01 # List of the tests which fail with EXIT CODE 1 FAIL_CODE1 = \ @@ -1748,22 +1805,18 @@ paramdup paramres parseme readbuf synerr1 synerr2 unterm -# List of files which have .ok versions for MPFR -CHECK_MPFR = \ - rand fnarydel fnparydl - - # Lists of tests that need particular locales NEED_LOCALE_C = \ clos1way gsubtst6 range2 NEED_LOCALE_EN = \ - backbigs1 backsmalls1 backsmalls2 concat4 dfamb1 ignrcas2 lc_num1 \ - mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 printhuge reint2 \ - rri1 subamp subi18n wideidx wideidx2 widesub widesub2 widesub3 widesub4 + backbigs1 backsmalls1 backsmalls2 commas concat4 dfamb1 ignrcas2 lc_num1 \ + mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 posix_compare \ + printhuge reint2 rri1 subamp subi18n wideidx wideidx2 \ + widesub widesub2 widesub3 widesub4 -# Unused at the moment, since nlstringtest has additional stufff it does +# Unused at the moment, since nlstringtest has additional stuff it does # NEED_LOCALE_FR = # Same for ignrcas3 # NEED_LOCALE_GR = @@ -1783,22 +1836,23 @@ # List of tests that fail on MinGW EXPECTED_FAIL_MINGW = \ backbigs1 backsmalls1 clos1way6 devfd devfd1 devfd2 \ - errno exitval2 fork fork2 fts getfile getlnhd ignrcas3 inetdayt \ - inetecht mbfw1 mbprintf1 mbprintf4 mbstr1 mbstr2 pid pipeio2 \ - pty1 pty2 readdir rstest4 rstest5 status-close timeout + errno exitval2 fork fork2 fts functab5 \ + getfile getlnhd ignrcas3 inetdayt inetecht inf-nan-torture \ + mbfw1 mbprintf1 mbprintf4 mbstr1 mbstr2 \ + pid pipeio2 pty1 pty2 readdir rstest4 rstest5 status-close timeout # List of tests that fail on z/OS EXPECTED_FAIL_ZOS = \ aasort aasorti arraysort asort asorti backbigs1 backsmalls1 \ - backsmalls2 beginfile1 beginfile2 charasbytes clos1way6 concat4 \ + backsmalls2 beginfile1 beginfile2 charasbytes commas clos1way6 concat4 \ dfamb1 double1 double2 errno fmttest forcenum getlndir gsubtst5 \ - ignrcas2 lc_num1 localenl localenl mbfw1 mbprintf1 mbprintf2 \ - mbprintf3 mbprintf4 mbprintf5 mbstr1 mbstr2 mtchi18n nlstringtest \ - nofile nonfatal2 numrange printhuge profile5 profile5 rebt8b2 \ - regrange reint2 rri1 sigpipe1 sort1 sortfor sortu space sprintfc \ - subamp subi18n symtab1 symtab11 symtab8 timeout wideidx wideidx2 \ - widesub widesub2 widesub3 widesub4 + ignrcas2 inf-nan-torture iolint lc_num1 mbfw1 mbprintf1 \ + mbprintf2 mbprintf3 mbprintf4 mbprintf5 mbstr1 mbstr2 mtchi18n \ + nlstringtest nofile nonfatal2 numrange posix_compare printhuge \ + profile5 rebt8b2 regrange reint2 rri1 sigpipe1 sort1 sortfor \ + sortu space sprintfc subamp subi18n symtab1 symtab11 symtab8 \ + timeout wideidx wideidx2 widesub widesub2 widesub3 widesub4 # List of the files that appear in manual tests or are for reserve testing: @@ -1868,7 +1922,6 @@ cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -2476,8 +2529,8 @@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ profile5: - @echo $@ - @AWKPATH="$(srcdir)" $(AWK) --pretty=_$@ -f $@.awk 2> _$@.err + @echo $@ $(ZOS_FAIL) + @-AWKPATH="$(srcdir)" $(AWK) --pretty=_$@ -f $@.awk 2> _$@.err @cat _$@.err >> _$@ ; rm -f _$@.err @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -2679,7 +2732,9 @@ @echo $@ @$(AWK) ' /^(@load|BEGIN)/,/^}/' "$(top_srcdir)"/extension/testext.c > testext.awk @$(AWK) -f ./testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk testexttmp.txt + @-if echo "$$GAWK_TEST_ARGS" | egrep -e '-M|--bignum' > /dev/null; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ testext.awk testexttmp.txt ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ testext.awk testexttmp.txt ; fi getfile: @echo $@ @@ -2814,8 +2869,10 @@ arrdbg: @echo $@ - @$(AWK) -v "okfile=./$@.ok" -f "$(srcdir)"/$@.awk | grep array_f >_$@ || echo EXIT CODE: $$? >> _$@ - @-$(CMP) ./$@.ok _$@ && rm -f _$@ ./$@.ok + @$(AWK) -v "okfile=./$@.ok" -v "mpfr_okfile=./$@-mpfr.ok" -f "$(srcdir)"/$@.awk | grep array_f >_$@ || echo EXIT CODE: $$? >> _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -e '-M|--bignum' > /dev/null; \ + then $(CMP) "."/$@-mpfr.ok _$@ && rm -f _$@ $@.ok $@-mpfr.ok ; \ + else $(CMP) "."/$@.ok _$@ && rm -f _$@ $@.ok $@-mpfr.ok ; fi sourcesplit: @echo $@ @@ -2840,7 +2897,7 @@ # 4/2018: On first call to $(CMP), send to /dev/null even with -s for MinGW. nlstringtest:: - @echo $@ + @echo $@ $(ZOS_FAIL) @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=fr_FR.UTF-8 ; export GAWKLOCALE ; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-if $(CMP) -s "$(srcdir)"/nlstringtest-nogettext.ok _$@ > /dev/null ; \ @@ -2864,6 +2921,18 @@ @echo $@ @$(AWK) -v x=@/foo/ -f "$(srcdir)"/$@.awk y=@/bar/ /dev/null >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +iolint: + @echo $@ $(ZOS_FAIL) + @echo hello > 'echo hello' + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-$(RM) -f cat 'echo hello' f1 f2 cksum + +argcasfile: + @echo $@ + @$(AWK) -f "$(srcdir)"/$@.awk ARGC=1 ' /no/such/file' < "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: @@ -3122,6 +3191,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +dfacheck2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + dfamb1: @echo $@ $(ZOS_FAIL) @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ @@ -3547,7 +3621,9 @@ numrange: @echo $@ $(ZOS_FAIL) @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi numstr1: @echo $@ @@ -3664,6 +3740,12 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +posix_compare: + @echo $@ $(ZOS_FAIL) + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + posix2008sub: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3716,10 +3798,10 @@ rand: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi randtest: @echo $@ @@ -3818,6 +3900,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +rsnullre: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + rsnulw: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3928,6 +4015,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +strfieldnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + strnum1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4169,7 +4261,9 @@ arraytype: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi backw: @echo $@ @@ -4207,6 +4301,12 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +commas: + @echo $@ $(ZOS_FAIL) + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4297,6 +4397,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat9: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4327,6 +4432,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +functab6: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fwtest: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4468,6 +4578,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +inf-nan-torture: + @echo $@ $(ZOS_FAIL) + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + intarray: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --non-decimal-data >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4503,6 +4618,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +lintplus: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + lintold: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint-old < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4550,6 +4670,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +modifiers: + @echo $@ + @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + muldimposix: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4620,6 +4745,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +octdec: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + patsplit: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4686,6 +4816,26 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile14: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +profile15: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +profile16: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +regexsub: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + regnul1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4844,7 +4994,7 @@ symtab10: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --debug < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ symtab11: @@ -4907,6 +5057,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +typeof6: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + double1: @echo $@ $(ZOS_FAIL) @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -4957,17 +5112,17 @@ fnarydel: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi fnparydl: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi lc_num1: @echo $@ $(ZOS_FAIL) @@ -4989,7 +5144,7 @@ mbprintf2: @echo $@ $(ZOS_FAIL) - @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=; export GAWKLOCALE; \ + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ja_JP.UTF-8; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -5051,6 +5206,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +functab5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ordchr: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -5086,6 +5246,16 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M --non-decimal-data < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrcase: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +mpfrcase2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrfield: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -5096,6 +5266,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrnonum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrnr: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -5137,8 +5312,7 @@ clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ - readdir_test.ok readdir_retest.ok \ - profile1.ok + readdir_test.ok readdir_retest.ok profile1.ok X_* # An attempt to print something that can be grepped for in build logs pass-fail: @@ -5157,9 +5331,9 @@ echo ============== $$i ============= ; \ base=`echo $$i | sed 's/^_//'` ; \ if [ -r $${base}.ok ]; then \ - diff -c $${base}.ok $$i ; \ + diff -u $${base}.ok $$i ; \ else \ - diff -c "$(srcdir)"/$${base}.ok $$i ; \ + diff -u "$(srcdir)"/$${base}.ok $$i ; \ fi ; \ fi ; \ done | more diff -urN gawk-5.1.0/test/Maketests gawk-5.1.1/test/Maketests --- gawk-5.1.0/test/Maketests 2020-04-14 14:44:19.000000000 +0300 +++ gawk-5.1.1/test/Maketests 2021-10-28 20:20:02.000000000 +0300 @@ -256,6 +256,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +dfacheck2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + dfamb1: @echo $@ $(ZOS_FAIL) @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ @@ -681,7 +686,9 @@ numrange: @echo $@ $(ZOS_FAIL) @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi numstr1: @echo $@ @@ -798,6 +805,12 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +posix_compare: + @echo $@ $(ZOS_FAIL) + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + posix2008sub: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -850,10 +863,10 @@ rand: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi randtest: @echo $@ @@ -952,6 +965,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +rsnullre: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + rsnulw: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1062,6 +1080,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +strfieldnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + strnum1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1303,7 +1326,9 @@ arraytype: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi backw: @echo $@ @@ -1341,6 +1366,12 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +commas: + @echo $@ $(ZOS_FAIL) + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1431,6 +1462,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat9: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1461,6 +1497,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +functab6: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fwtest: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1602,6 +1643,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +inf-nan-torture: + @echo $@ $(ZOS_FAIL) + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + intarray: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --non-decimal-data >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1637,6 +1683,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +lintplus: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + lintold: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint-old < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1684,6 +1735,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +modifiers: + @echo $@ + @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + muldimposix: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1754,6 +1810,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +octdec: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + patsplit: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1820,6 +1881,26 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile14: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +profile15: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +profile16: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --pretty-print=_$@ >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +regexsub: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + regnul1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1978,7 +2059,7 @@ symtab10: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --debug < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ symtab11: @@ -2041,6 +2122,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +typeof6: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + double1: @echo $@ $(ZOS_FAIL) @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2091,17 +2177,17 @@ fnarydel: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi fnparydl: @echo $@ - @AWKPATH="$(srcdir)" $(AWK) $(AWKFLAGS) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-if test -z "$$AWKFLAGS" ; then $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; else \ - $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ - fi + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-if echo "$$GAWK_TEST_ARGS" | egrep -q -e '-M|--bignum' > /dev/null ; \ + then $(CMP) "$(srcdir)"/$@-mpfr.ok _$@ && rm -f _$@ ; \ + else $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; fi lc_num1: @echo $@ $(ZOS_FAIL) @@ -2123,7 +2209,7 @@ mbprintf2: @echo $@ $(ZOS_FAIL) - @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=; export GAWKLOCALE; \ + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ja_JP.UTF-8; export GAWKLOCALE; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ @@ -2185,6 +2271,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +functab5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ordchr: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2220,6 +2311,16 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M --non-decimal-data < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrcase: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +mpfrcase2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrfield: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2230,6 +2331,11 @@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrnonum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrnr: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk -M < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff -urN gawk-5.1.0/test/mbstr1.ok gawk-5.1.1/test/mbstr1.ok --- gawk-5.1.0/test/mbstr1.ok 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/test/mbstr1.ok 2020-08-28 14:48:15.000000000 +0300 @@ -1,3 +1,3 @@ -gawk: mbstr1.awk:2: warning: Invalid multibyte data detected. There may be a mismatch between your data and your locale. +gawk: mbstr1.awk:2: warning: Invalid multibyte data detected. There may be a mismatch between your data and your locale 4 1 diff -urN gawk-5.1.0/test/mbstr2.ok gawk-5.1.1/test/mbstr2.ok --- gawk-5.1.0/test/mbstr2.ok 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/test/mbstr2.ok 2020-08-28 14:48:15.000000000 +0300 @@ -1,5 +1,5 @@ 2007 -gawk: mbstr2.awk:1: (FILENAME=- FNR=2) warning: Invalid multibyte data detected. There may be a mismatch between your data and your locale. +gawk: mbstr2.awk:1: (FILENAME=- FNR=2) warning: Invalid multibyte data detected. There may be a mismatch between your data and your locale 2007 2007 2007 diff -urN gawk-5.1.0/test/modifiers.ok gawk-5.1.1/test/modifiers.ok --- gawk-5.1.0/test/modifiers.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/modifiers.ok 2021-01-07 22:27:00.000000000 +0200 @@ -0,0 +1,12 @@ +gawk: cmd. line:1: warning: `h' is meaningless in awk formats; ignored +gawk: cmd. line:1: fatal: `h' is not permitted in POSIX awk formats +gawk: cmd. line:1: warning: `l' is meaningless in awk formats; ignored +gawk: cmd. line:1: fatal: `l' is not permitted in POSIX awk formats +gawk: cmd. line:1: warning: `L' is meaningless in awk formats; ignored +gawk: cmd. line:1: fatal: `L' is not permitted in POSIX awk formats +gawk: cmd. line:1: warning: `j' is meaningless in awk formats; ignored +gawk: cmd. line:1: fatal: `j' is not permitted in POSIX awk formats +gawk: cmd. line:1: warning: `t' is meaningless in awk formats; ignored +gawk: cmd. line:1: fatal: `t' is not permitted in POSIX awk formats +gawk: cmd. line:1: warning: `z' is meaningless in awk formats; ignored +gawk: cmd. line:1: fatal: `z' is not permitted in POSIX awk formats diff -urN gawk-5.1.0/test/modifiers.sh gawk-5.1.1/test/modifiers.sh --- gawk-5.1.0/test/modifiers.sh 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/modifiers.sh 2021-01-07 22:27:00.000000000 +0200 @@ -0,0 +1,8 @@ +#! /bin/sh + +AWK=${AWK:-../gawk} +for modifier in h l L j t z +do + $AWK -v let=$modifier --posix --lint 'BEGIN { printf "%" let "u\n", 12 }' +done +exit 0 diff -urN gawk-5.1.0/test/mpfrcase2.awk gawk-5.1.1/test/mpfrcase2.awk --- gawk-5.1.0/test/mpfrcase2.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrcase2.awk 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,19 @@ +{ + for (i = 1; i <= NF; i++) { + switch ($i) { + case "+" : case "-" : + case "*" : case "/" : + case "%" : case "^" : + printf $i; break + case /[a-z]/ : + printf $i; break + case /[0-9]/ : + printf $i; break + case /[ \t]/ : + printf $i; break + default : + print " wrong character " i " th: " $i + } + } + print "" +} diff -urN gawk-5.1.0/test/mpfrcase2.in gawk-5.1.1/test/mpfrcase2.in --- gawk-5.1.0/test/mpfrcase2.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrcase2.in 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1 @@ +12+45 diff -urN gawk-5.1.0/test/mpfrcase2.ok gawk-5.1.1/test/mpfrcase2.ok --- gawk-5.1.0/test/mpfrcase2.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrcase2.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1 @@ +12+45 diff -urN gawk-5.1.0/test/mpfrcase.awk gawk-5.1.1/test/mpfrcase.awk --- gawk-5.1.0/test/mpfrcase.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrcase.awk 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,4 @@ +{ + switch ($1) { case "A" : arr[1] = $1 } + print "value: " arr[1] +} diff -urN gawk-5.1.0/test/mpfrcase.in gawk-5.1.1/test/mpfrcase.in --- gawk-5.1.0/test/mpfrcase.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrcase.in 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1 @@ +A diff -urN gawk-5.1.0/test/mpfrcase.ok gawk-5.1.1/test/mpfrcase.ok --- gawk-5.1.0/test/mpfrcase.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrcase.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1 @@ +value: A diff -urN gawk-5.1.0/test/mpfrnonum.awk gawk-5.1.1/test/mpfrnonum.awk --- gawk-5.1.0/test/mpfrnonum.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrnonum.awk 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1 @@ +{ if ($1) print "must print " $1 } diff -urN gawk-5.1.0/test/mpfrnonum.in gawk-5.1.1/test/mpfrnonum.in --- gawk-5.1.0/test/mpfrnonum.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrnonum.in 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,3 @@ ++ +- +1 diff -urN gawk-5.1.0/test/mpfrnonum.ok gawk-5.1.1/test/mpfrnonum.ok --- gawk-5.1.0/test/mpfrnonum.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/mpfrnonum.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,3 @@ +must print + +must print - +must print 1 diff -urN gawk-5.1.0/test/noeffect.awk gawk-5.1.1/test/noeffect.awk --- gawk-5.1.0/test/noeffect.awk 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/noeffect.awk 2021-04-28 22:06:54.000000000 +0300 @@ -7,4 +7,22 @@ 42 q = 42 q + + a = b = 42 + + a * b + a != b + # the following should not produce warnings + a++ == a-- + f_without_side_effect(a); + f_with_side_effect(b) == 2 + 1 == 2 && a++ + 1 == 1 || b-- + a = a + a *= 1 + a += 0 + a*a < 0 && b = 1001 } + +function f_without_side_effect(x) { } +function f_with_side_effect(x) { } diff -urN gawk-5.1.0/test/noeffect.ok gawk-5.1.1/test/noeffect.ok --- gawk-5.1.0/test/noeffect.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/noeffect.ok 2021-04-28 22:06:54.000000000 +0300 @@ -1,8 +1,10 @@ -gawk: noeffect.awk:2: warning: statement may have no effect -gawk: noeffect.awk:3: warning: statement may have no effect -gawk: noeffect.awk:5: warning: statement may have no effect -gawk: noeffect.awk:2: warning: reference to uninitialized variable `s' -gawk: noeffect.awk:3: warning: reference to uninitialized variable `s' +gawk: noeffect.awk:2: warning: statement has no effect +gawk: noeffect.awk:3: warning: statement has no effect +gawk: noeffect.awk:5: warning: statement has no effect gawk: noeffect.awk:6: warning: statement has no effect gawk: noeffect.awk:7: warning: statement has no effect gawk: noeffect.awk:9: warning: statement has no effect +gawk: noeffect.awk:13: warning: statement has no effect +gawk: noeffect.awk:14: warning: statement has no effect +gawk: noeffect.awk:2: warning: reference to uninitialized variable `s' +gawk: noeffect.awk:3: warning: reference to uninitialized variable `s' diff -urN gawk-5.1.0/test/nsprof1.ok gawk-5.1.1/test/nsprof1.ok --- gawk-5.1.0/test/nsprof1.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/nsprof1.ok 2020-08-28 14:48:06.000000000 +0300 @@ -1,3 +1,4 @@ + @namespace "foo" BEGIN { @@ -10,6 +11,7 @@ print "bar" } + @namespace "stuff" diff -urN gawk-5.1.0/test/nsprof2.ok gawk-5.1.1/test/nsprof2.ok --- gawk-5.1.0/test/nsprof2.ok 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/test/nsprof2.ok 2020-08-28 14:48:06.000000000 +0300 @@ -5,10 +5,13 @@ # Revised October 2000 # Revised December 2010 # Revised July 2017 + @namespace "foo" # this is foo + @namespace "bar" # this is bar + @namespace "passwd" # move to passwd namespace BEGIN { diff -urN gawk-5.1.0/test/numrange-mpfr.ok gawk-5.1.1/test/numrange-mpfr.ok --- gawk-5.1.0/test/numrange-mpfr.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/numrange-mpfr.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,2 @@ +-1.2e+931 -12000000000000000023869272521829212151376224284038826410491631072247223930898697894494751122199611031696331881198430123310788883489723019223000573640259371063714952207062438085168771640470751425809639568206897248922718204650691199569214339149443994838825335479571578957075566316988609963847861723327109992246837205567235607773890309471137488800374383009068687547118036715452301954858700836601124580336340038617883134449214092245802588446405229331386515660677585038235109701545271243902330575714021315127223571588764628179725351186585908351382110051143587405409927546018060172307656019659275511658624125158517807640363832094340920801581446507863850186984663749124902382044782795512644763497122330988233279646807817789403972164002561612114866682762706548477524115596786591512372612296461584970713050884678735893942581035124339179550774662878726741328519231942448856426396556949721845110345583968012206662741485777689522285472492027904 12000000000000000023869272521829212151376224284038826410491631072247223930898697894494751122199611031696331881198430123310788883489723019223000573640259371063714952207062438085168771640470751425809639568206897248922718204650691199569214339149443994838825335479571578957075566316988609963847861723327109992246837205567235607773890309471137488800374383009068687547118036715452301954858700836601124580336340038617883134449214092245802588446405229331386515660677585038235109701545271243902330575714021315127223571588764628179725351186585908351382110051143587405409927546018060172307656019659275511658624125158517807640363832094340920801581446507863850186984663749124902382044782795512644763497122330988233279646807817789403972164002561612114866682762706548477524115596786591512372612296461584970713050884678735893942581035124339179550774662878726741328519231942448856426396556949721845110345583968012206662741485777689522285472492027904 +1.2e+931 12000000000000000023869272521829212151376224284038826410491631072247223930898697894494751122199611031696331881198430123310788883489723019223000573640259371063714952207062438085168771640470751425809639568206897248922718204650691199569214339149443994838825335479571578957075566316988609963847861723327109992246837205567235607773890309471137488800374383009068687547118036715452301954858700836601124580336340038617883134449214092245802588446405229331386515660677585038235109701545271243902330575714021315127223571588764628179725351186585908351382110051143587405409927546018060172307656019659275511658624125158517807640363832094340920801581446507863850186984663749124902382044782795512644763497122330988233279646807817789403972164002561612114866682762706548477524115596786591512372612296461584970713050884678735893942581035124339179550774662878726741328519231942448856426396556949721845110345583968012206662741485777689522285472492027904 -12000000000000000023869272521829212151376224284038826410491631072247223930898697894494751122199611031696331881198430123310788883489723019223000573640259371063714952207062438085168771640470751425809639568206897248922718204650691199569214339149443994838825335479571578957075566316988609963847861723327109992246837205567235607773890309471137488800374383009068687547118036715452301954858700836601124580336340038617883134449214092245802588446405229331386515660677585038235109701545271243902330575714021315127223571588764628179725351186585908351382110051143587405409927546018060172307656019659275511658624125158517807640363832094340920801581446507863850186984663749124902382044782795512644763497122330988233279646807817789403972164002561612114866682762706548477524115596786591512372612296461584970713050884678735893942581035124339179550774662878726741328519231942448856426396556949721845110345583968012206662741485777689522285472492027904 diff -urN gawk-5.1.0/test/octdec.awk gawk-5.1.1/test/octdec.awk --- gawk-5.1.0/test/octdec.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/octdec.awk 2021-01-09 22:33:56.000000000 +0200 @@ -0,0 +1 @@ +BEGIN { print 021, 018; print 00021, 00018 } diff -urN gawk-5.1.0/test/octdec.ok gawk-5.1.1/test/octdec.ok --- gawk-5.1.0/test/octdec.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/octdec.ok 2021-01-09 22:33:56.000000000 +0200 @@ -0,0 +1,2 @@ +17 18 +17 18 diff -urN gawk-5.1.0/test/ordchr.awk gawk-5.1.1/test/ordchr.awk --- gawk-5.1.0/test/ordchr.awk 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/test/ordchr.awk 2021-10-01 10:22:07.000000000 +0300 @@ -7,4 +7,5 @@ # test if type conversion between strings and numbers is working properly print chr(ord(0)) print ord(chr("65")) + print ord(chr("159")) } diff -urN gawk-5.1.0/test/ordchr.ok gawk-5.1.1/test/ordchr.ok --- gawk-5.1.0/test/ordchr.ok 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/test/ordchr.ok 2021-10-01 10:22:07.000000000 +0300 @@ -3,3 +3,4 @@ 65 0 65 +159 diff -urN gawk-5.1.0/test/posix_compare.awk gawk-5.1.1/test/posix_compare.awk --- gawk-5.1.0/test/posix_compare.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/posix_compare.awk 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,47 @@ +function print_str(str, i, n, chars, result) +{ + n = split(str, chars, "") + result = "" + for (i = 1; i <= n; i++) { + if (chars[i] == "\0") + result = result "\\0" + else + result = result chars[i] + } + + return result +} + +function do_compare(left, comp, right) +{ + if (comp == "<") + return left < right ? "TRUE" : "FALSE" + + return left > right ? "TRUE" : "FALSE" +} + + +BEGIN { + left[1] = "abc\0z1"; compare[1] = "<"; right[1] = "abc\0z2"; expected[1] = "TRUE" + left[2] = "abc\0z2"; compare[2] = "<"; right[2] = "abc\0z2"; expected[2] = "FALSE" + left[3] = "abc\0z3"; compare[3] = "<"; right[3] = "abc\0z2"; expected[3] = "FALSE" + left[4] = "abc\0z1"; compare[4] = ">"; right[4] = "abc\0z2"; expected[4] = "FALSE" + left[5] = "abc\0z2"; compare[5] = ">"; right[5] = "abc\0z2"; expected[5] = "FALSE" + left[6] = "abc\0z3"; compare[6] = ">"; right[6] = "abc\0z2"; expected[6] = "TRUE" + left[7] = "abc\0z1"; compare[7] = "<"; right[7] = "abc\0z21"; expected[7] = "TRUE" + left[8] = "abc\0z2"; compare[8] = "<"; right[8] = "abc\0z21"; expected[8] = "TRUE" + left[9] = "abc\0z3"; compare[9] = "<"; right[9] = "abc\0z21"; expected[9] = "FALSE" + left[10] = "abc\0z11"; compare[10] = ">"; right[10] = "abc\0z2"; expected[10] = "FALSE" + left[11] = "abc\0z21"; compare[11] = ">"; right[11] = "abc\0z2"; expected[11] = "TRUE" + left[12] = "abc\0z31"; compare[12] = ">"; right[12] = "abc\0z2"; expected[12] = "TRUE" + + l = 12 + for (i = 1; i <= l; i++) { + result = do_compare(left[i], compare[i], right[i]) + lstr = print_str(left[i]) + rstr = print_str(right[i]) + + printf("\"%s\" %s \"%s\": Expecting %s: Got %s\n", + lstr, compare[i], rstr, expected[i], result) + } +} diff -urN gawk-5.1.0/test/posix_compare.ok gawk-5.1.1/test/posix_compare.ok --- gawk-5.1.0/test/posix_compare.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/posix_compare.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,12 @@ +"abc\0z1" < "abc\0z2": Expecting TRUE: Got TRUE +"abc\0z2" < "abc\0z2": Expecting FALSE: Got FALSE +"abc\0z3" < "abc\0z2": Expecting FALSE: Got FALSE +"abc\0z1" > "abc\0z2": Expecting FALSE: Got FALSE +"abc\0z2" > "abc\0z2": Expecting FALSE: Got FALSE +"abc\0z3" > "abc\0z2": Expecting TRUE: Got TRUE +"abc\0z1" < "abc\0z21": Expecting TRUE: Got TRUE +"abc\0z2" < "abc\0z21": Expecting TRUE: Got TRUE +"abc\0z3" < "abc\0z21": Expecting FALSE: Got FALSE +"abc\0z11" > "abc\0z2": Expecting FALSE: Got FALSE +"abc\0z21" > "abc\0z2": Expecting TRUE: Got TRUE +"abc\0z31" > "abc\0z2": Expecting TRUE: Got TRUE diff -urN gawk-5.1.0/test/profile14.awk gawk-5.1.1/test/profile14.awk --- gawk-5.1.0/test/profile14.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/profile14.awk 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,21 @@ +#: 200810_ Prettyprint weirdness to show Arnold +BEGIN { + IGNORECASE = 1; + printf("\n"); + printf("test \"%s\"\tin FUNCTAB=%s (good!)\n","masterlib::libfunc","masterlib::libfunc" in FUNCTAB); + exit; +#..1.1.1............... +} # e-o-begin +#..2.2.2............. +@namespace "nlib" +function tstlib(note){ printf("Tstv1=%s; from @namespace nlib\n",Tstv1); +}# e-o-function tstlib() +#..3.3.3............. +@namespace "masterlib" +# masterlib is library of "default" user-defined functions +function libfunc(note){ printf("%s:\tHello World from @namespace masterlib\n",note);} +#..4.4.4............. +@namespace "awk" +# return to program's awk space +function overridefunc(note){ printf("%s:\tHello Lone Star state from @namespace awk\n",note);} +# --5-5-5----------- diff -urN gawk-5.1.0/test/profile14.ok gawk-5.1.1/test/profile14.ok --- gawk-5.1.0/test/profile14.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/profile14.ok 2020-08-28 14:48:15.000000000 +0300 @@ -0,0 +1,38 @@ +#: 200810_ Prettyprint weirdness to show Arnold +BEGIN { + IGNORECASE = 1 + printf ("\n") + printf "test \"%s\"\tin FUNCTAB=%s (good!)\n", "masterlib::libfunc", "masterlib::libfunc" in FUNCTAB + exit + #..1.1.1............... +} + +# --5-5-5----------- + +#..4.4.4............. +function overridefunc(note) +{ + printf "%s:\tHello Lone Star state from @namespace awk\n", note +} + +@namespace "masterlib" # masterlib is library of "default" user-defined functions + + +# e-o-function tstlib() + +#..3.3.3............. +function libfunc(note) +{ + printf "%s:\tHello World from @namespace masterlib\n", note +} + +@namespace "nlib" + + +# e-o-begin + +#..2.2.2............. +function tstlib(note) +{ + printf "Tstv1=%s;\tfrom @namespace nlib\n", Tstv1 +} diff -urN gawk-5.1.0/test/profile15.awk gawk-5.1.1/test/profile15.awk --- gawk-5.1.0/test/profile15.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/profile15.awk 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,24 @@ +# in namespace awk +function zzzz() +{ + return "zzz" +} + +function nnn() +{ + return "nnn" +} + +@namespace "nnn" +function abc() +{ + return "nnn::abc" +} + +@namespace "bbb" + +function zzz() +{ + return "bbb::zzz" +} + diff -urN gawk-5.1.0/test/profile15.ok gawk-5.1.1/test/profile15.ok --- gawk-5.1.0/test/profile15.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/profile15.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,27 @@ +# in namespace awk + +function nnn() +{ + return "nnn" +} + +function zzzz() +{ + return "zzz" +} + +@namespace "bbb" + + +function zzz() +{ + return "bbb::zzz" +} + +@namespace "nnn" + + +function abc() +{ + return "nnn::abc" +} diff -urN gawk-5.1.0/test/profile16.awk gawk-5.1.1/test/profile16.awk --- gawk-5.1.0/test/profile16.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/profile16.awk 2021-10-20 19:52:48.000000000 +0300 @@ -0,0 +1,16 @@ +BEGIN { + foo::foo_bar() + foofoo::xxx() +} + +@namespace "foo" + +function foo_bar() +{ + print "foo::foo_bar" +} + +function foofoo::xxx() +{ + print "foofoo::xxx" +} diff -urN gawk-5.1.0/test/profile16.ok gawk-5.1.1/test/profile16.ok --- gawk-5.1.0/test/profile16.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/profile16.ok 2021-10-20 19:52:48.000000000 +0300 @@ -0,0 +1,18 @@ +BEGIN { + foo::foo_bar() + foofoo::xxx() +} + + +@namespace "foo" + + +function foo_bar() +{ + print "foo::foo_bar" +} + +function foofoo::xxx() +{ + print "foofoo::xxx" +} diff -urN gawk-5.1.0/test/profile2.ok gawk-5.1.1/test/profile2.ok --- gawk-5.1.0/test/profile2.ok 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/test/profile2.ok 2020-10-09 14:41:06.000000000 +0300 @@ -7,29 +7,29 @@ 1 asplit("BEGIN:END:atan2:break:close:continue:cos:delete:" "do:else:exit:exp:for:getline:gsub:if:in:index:int:" "length:log:match:next:print:printf:rand:return:sin:" "split:sprintf:sqrt:srand:sub:substr:system:while", keywords, ":") 1 split("00:00:00:00:00:00:00:00:00:00:" "20:10:10:12:12:11:07:00:00:00:" "08:08:08:08:08:33:08:00:00:00:" "08:44:08:36:08:08:08:00:00:00:" "08:44:45:42:42:41:08", machine, ":") 1 state = 1 - 571 for (;;) { - 571 symb = lex() - 571 nextstate = substr(machine[state symb], 1, 1) - 571 act = substr(machine[state symb], 2, 1) - 571 if (act == "0") { # 12 - 559 } else if (act == "1") { # 8 + 570 for (;;) { + 570 symb = lex() + 570 nextstate = substr(machine[state symb], 1, 1) + 570 act = substr(machine[state symb], 2, 1) + 570 if (act == "0") { # 12 + 558 } else if (act == "1") { # 8 8 if (! inarray(tok, names)) { # 3 3 names[++nnames] = tok } 8 lines[tok, ++xnames[tok]] = NR - 551 } else if (act == "2") { # 426 - 426 if (tok in local) { # 309 + 550 } else if (act == "2") { # 425 + 425 if (tok in local) { # 309 309 tok = tok "(" funcname ")" 309 if (! inarray(tok, names)) { # 22 22 names[++nnames] = tok } 309 lines[tok, ++xnames[tok]] = NR - 117 } else { - 117 tok = tok "()" - 117 if (! inarray(tok, names)) { # 22 - 22 names[++nnames] = tok + 116 } else { + 116 tok = tok "()" + 116 if (! inarray(tok, names)) { # 21 + 21 names[++nnames] = tok } - 117 lines[tok, ++xnames[tok]] = NR + 116 lines[tok, ++xnames[tok]] = NR } 125 } else if (act == "3") { # 4 4 funcname = tok @@ -53,21 +53,21 @@ print("error: xref.awk: line " NR ": aborting") > "/dev/con" exit 1 } - 570 state = nextstate + 569 state = nextstate } - 47 for (i = 1; i <= nnames; i++) { - 47 printf("%d ", xnames[names[i]]) | sortcmd - 47 if (index(names[i], "(") == 0) { # 3 + 46 for (i = 1; i <= nnames; i++) { + 46 printf("%d ", xnames[names[i]]) | sortcmd + 46 if (index(names[i], "(") == 0) { # 3 3 printf("%s(%d)", names[i], flines[names[i]]) | sortcmd - 44 } else { - 44 printf("%s", names[i]) | sortcmd + 43 } else { + 43 printf("%s", names[i]) | sortcmd } - 434 for (j = 1; j <= xnames[names[i]]; j++) { - 434 if (lines[names[i], j] != lines[names[i], j - 1]) { # 390 - 390 printf(" %d", lines[names[i], j]) | sortcmd + 433 for (j = 1; j <= xnames[names[i]]; j++) { + 433 if (lines[names[i], j] != lines[names[i], j - 1]) { # 389 + 389 printf(" %d", lines[names[i], j]) | sortcmd } } - 47 printf("\n") | sortcmd + 46 printf("\n") | sortcmd } 1 close(sortcmd) } @@ -83,18 +83,18 @@ } } - 434 function inarray(val, arr, j, tmp) + 433 function inarray(val, arr, j, tmp) { - 16297 for (j in arr) { - 16297 tmp[arr[j]]++ + 15872 for (j in arr) { + 15872 tmp[arr[j]]++ } - 434 return (val in tmp) + 433 return (val in tmp) } - 571 function lex() + 570 function lex() { - 1702 for (;;) { - 1702 if (tok == "(eof)") { + 1698 for (;;) { + 1698 if (tok == "(eof)") { return 7 } 326 while (length(line) == 0) { @@ -103,37 +103,37 @@ 1 return 7 } } - 1701 sub(/^[ \t]+/, "", line) - 1701 sub(/^"([^"]|\\")*"/, "", line) - 1701 sub(/^\/([^\/]|\\\/)+\//, "", line) - 1701 sub(/^#.*/, "", line) - 1701 if (line ~ /^function/) { # 4 + 1697 sub(/^[ \t]+/, "", line) + 1697 sub(/^"([^"]|\\")*"/, "", line) + 1697 sub(/^\/([^\/]|\\\/)+\//, "", line) + 1697 sub(/^#.*/, "", line) + 1697 if (line ~ /^function/) { # 4 4 tok = "function" 4 line = substr(line, 9) 4 return 1 - 1697 } else if (line ~ /^{/) { # 53 + 1693 } else if (line ~ /^{/) { # 53 53 tok = "{" 53 line = substr(line, 2) 53 return 2 - 1644 } else if (line ~ /^}/) { # 53 + 1640 } else if (line ~ /^}/) { # 53 53 tok = "}" 53 line = substr(line, 2) 53 return 3 - 1591 } else if (match(line, /^[[:alpha:]_][[:alnum:]]*\[/)) { # 43 + 1587 } else if (match(line, /^[[:alpha:]_][[:alnum:]_]*\[/)) { # 43 43 tok = substr(line, 1, RLENGTH - 1) 43 line = substr(line, RLENGTH + 1) 43 return 5 - 1548 } else if (match(line, /^[[:alpha:]_][[:alnum:]]*\(/)) { # 87 + 1544 } else if (match(line, /^[[:alpha:]_][[:alnum:]_]*\(/)) { # 87 87 tok = substr(line, 1, RLENGTH - 1) 87 line = substr(line, RLENGTH + 1) 87 if (! (tok in keywords)) { # 12 12 return 6 } - 1461 } else if (match(line, /^[[:alpha:]_][[:alnum:]]*/)) { # 525 - 525 tok = substr(line, 1, RLENGTH) - 525 line = substr(line, RLENGTH + 1) - 525 if (! (tok in keywords)) { # 405 - 405 return 4 + 1457 } else if (match(line, /^[[:alpha:]_][[:alnum:]_]*/)) { # 521 + 521 tok = substr(line, 1, RLENGTH) + 521 line = substr(line, RLENGTH + 1) + 521 if (! (tok in keywords)) { # 404 + 404 return 4 } 936 } else { 936 match(line, /^[^[:alpha:]_{}]/) diff -urN gawk-5.1.0/test/regexsub.awk gawk-5.1.1/test/regexsub.awk --- gawk-5.1.0/test/regexsub.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/regexsub.awk 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1,48 @@ +BEGIN { + print "Initialize strong regex" + rgx2 = rgx1 = @/[abc]/ + print "Test gsub on strong regex" + printf("rgx%d = '%s'\ttypeof(rgx%d) = '%s'\n", 1, rgx1, 1, typeof(rgx1)) + printf("rgx%d = '%s'\ttypeof(rgx%d) = '%s'\n", 2, rgx2, 2, typeof(rgx2)) + print "Test gsub() a strong regex" + gsub(/b/, "e", rgx2) + printf("rgx%d = '%s'\ttypeof(rgx%d) = '%s'\n", 1, rgx1, 1, typeof(rgx1)) + printf("rgx%d = '%s'\ttypeof(rgx%d) = '%s'\n", 2, rgx2, 2, typeof(rgx2)) + + print "Test value not found in regex" + gsub(/x/, "y", rgx1) # should not change + printf("rgx%d = '%s'\ttypeof(rgx%d) = '%s'\n", 1, rgx1, 1, typeof(rgx1)) + + print "Test gsub on numbers" + v2 = v1 = 12345 + printf("v%d = '%s'\ttypeof(v%d) = '%s'\n", 1, v1, 1, typeof(v1)) + printf("v%d = '%s'\ttypeof(v%d) = '%s'\n", 2, v2, 2, typeof(v2)) + gsub(/3/, "x", v2) + printf("v%d = '%s'\ttypeof(v%d) = '%s'\n", 1, v1, 1, typeof(v1)) + printf("v%d = '%s'\ttypeof(v%d) = '%s'\n", 2, v2, 2, typeof(v2)) + print "Test value not found in number" + gsub(/9/, "x", v1) + printf("v%d = '%s'\ttypeof(v%d) = '%s'\n", 1, v1, 1, typeof(v1)) + + print "Test gensub on regex" + a = b = @/abc/ + c = gensub(/b/, "x", "g", a) + printf("a = @/%s/\ttypeof(a) = '%s'\n", a, typeof(a)) + printf("c = \"%s\"\ttypeof(c) = '%s'\n", c, typeof(c)) + print "Test value not found in regex" + c = gensub(/q/, "x", "g", b) + printf("b = @/%s/\ttypeof(b) = '%s'\n", b, typeof(b)) + printf("c = \"%s\"\ttypeof(c) = '%s'\n", c, typeof(c)) + + print "Test gensub on numbers" + a = b = 12345 + c = gensub(/3/, "x", "g", a) + printf("a = \"%s\"\ttypeof(a) = '%s'\n", a, typeof(a)) + printf("b = \"%s\"\ttypeof(b) = '%s'\n", b, typeof(b)) + printf("c = \"%s\"\ttypeof(c) = '%s'\n", c, typeof(c)) + print "Test value not found in number" + c = gensub(/9/, "x", "g", b) + printf("b = \"%s\"\ttypeof(b) = '%s'\n", b, typeof(b)) + printf("c = \"%s\"\ttypeof(c) = '%s'\n", c, typeof(c)) + print typeof(c), c +} diff -urN gawk-5.1.0/test/regexsub.ok gawk-5.1.1/test/regexsub.ok --- gawk-5.1.0/test/regexsub.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/regexsub.ok 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1,30 @@ +Initialize strong regex +Test gsub on strong regex +rgx1 = '[abc]' typeof(rgx1) = 'regexp' +rgx2 = '[abc]' typeof(rgx2) = 'regexp' +Test gsub() a strong regex +rgx1 = '[abc]' typeof(rgx1) = 'regexp' +rgx2 = '[aec]' typeof(rgx2) = 'regexp' +Test value not found in regex +rgx1 = '[abc]' typeof(rgx1) = 'regexp' +Test gsub on numbers +v1 = '12345' typeof(v1) = 'number' +v2 = '12345' typeof(v2) = 'number' +v1 = '12345' typeof(v1) = 'number' +v2 = '12x45' typeof(v2) = 'string' +Test value not found in number +v1 = '12345' typeof(v1) = 'number' +Test gensub on regex +a = @/abc/ typeof(a) = 'regexp' +c = "axc" typeof(c) = 'string' +Test value not found in regex +b = @/abc/ typeof(b) = 'regexp' +c = "abc" typeof(c) = 'string' +Test gensub on numbers +a = "12345" typeof(a) = 'number' +b = "12345" typeof(b) = 'number' +c = "12x45" typeof(c) = 'string' +Test value not found in number +b = "12345" typeof(b) = 'number' +c = "12345" typeof(c) = 'string' +string 12345 diff -urN gawk-5.1.0/test/rsnullre.awk gawk-5.1.1/test/rsnullre.awk --- gawk-5.1.0/test/rsnullre.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/rsnullre.awk 2021-01-07 22:27:00.000000000 +0200 @@ -0,0 +1,5 @@ +BEGIN { + RS = "()" +} + +{ printf("<<%s>>\n", $0) ; printf("<%s>\n", RT) } diff -urN gawk-5.1.0/test/rsnullre.in gawk-5.1.1/test/rsnullre.in --- gawk-5.1.0/test/rsnullre.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/rsnullre.in 2021-01-07 22:27:00.000000000 +0200 @@ -0,0 +1 @@ +foo diff -urN gawk-5.1.0/test/rsnullre.ok gawk-5.1.1/test/rsnullre.ok --- gawk-5.1.0/test/rsnullre.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/rsnullre.ok 2021-01-07 22:27:00.000000000 +0200 @@ -0,0 +1,3 @@ +<> +<> diff -urN gawk-5.1.0/test/strfieldnum.awk gawk-5.1.1/test/strfieldnum.awk --- gawk-5.1.0/test/strfieldnum.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/strfieldnum.awk 2020-06-08 22:26:01.000000000 +0300 @@ -0,0 +1 @@ +{ print $"2" } diff -urN gawk-5.1.0/test/strfieldnum.in gawk-5.1.1/test/strfieldnum.in --- gawk-5.1.0/test/strfieldnum.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/strfieldnum.in 2020-06-08 22:26:01.000000000 +0300 @@ -0,0 +1 @@ +a b c diff -urN gawk-5.1.0/test/strfieldnum.ok gawk-5.1.1/test/strfieldnum.ok --- gawk-5.1.0/test/strfieldnum.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/strfieldnum.ok 2020-06-08 22:26:01.000000000 +0300 @@ -0,0 +1 @@ +b diff -urN gawk-5.1.0/test/symtab10.in gawk-5.1.1/test/symtab10.in --- gawk-5.1.0/test/symtab10.in 2019-08-28 21:43:58.000000000 +0300 +++ gawk-5.1.1/test/symtab10.in 1970-01-01 02:00:00.000000000 +0200 @@ -1,4 +0,0 @@ -watch y -run -watch x -continue diff -urN gawk-5.1.0/test/symtab10.ok gawk-5.1.1/test/symtab10.ok --- gawk-5.1.0/test/symtab10.ok 2019-08-28 21:43:58.000000000 +0300 +++ gawk-5.1.1/test/symtab10.ok 2021-09-15 14:56:13.000000000 +0300 @@ -1,11 +1,2 @@ -Watchpoint 1: y -Starting program: -Stopping in BEGIN ... -Watchpoint 1: y - Old value: untyped variable - New value: 1 -main() at `symtab10.awk':1 -1 BEGIN { SYMTAB["x"] ; y=1 ; y++ } -no symbol `x' in current context -Program exited normally with exit value: 0 +gawk: symtab10.awk:1: fatal: reference to uninitialized element `SYMTAB["x"] is not allowed' EXIT CODE: 2 diff -urN gawk-5.1.0/test/testext-mpfr.ok gawk-5.1.1/test/testext-mpfr.ok --- gawk-5.1.0/test/testext-mpfr.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/testext-mpfr.ok 2020-08-28 14:48:06.000000000 +0300 @@ -0,0 +1,94 @@ +pets has 5 elements +dump_array_and_delete: sym_lookup of pets passed +dump_array_and_delete: incoming size is 5 + pets["4"] = "raincloud" + pets["5"] = "lucky" + pets["1"] = "blacky" + pets["2"] = "rusty" + pets["3"] = "sophie" +dump_array_and_delete: marking element "3" for deletion +dump_array_and_delete(pets) returned 1 +dump_array_and_delete() did remove index "3"! + +try_modify_environ: sym_lookup of ENVIRON passed +try_modify_environ: set_array_element of ENVIRON failed +try_modify_environ: marking element "testext" for deletion +try_del_environ() could not delete element - pass +try_del_environ() could not add an element - pass +var_test: sym_lookup of PROCINFO passed - got a value! +var_test: sym_lookup of ARGC passed - got a value! +var_test: sym_update of ARGC failed - correctly +var_test: sym_update("testvar") succeeded +var_test() returned 1, test_var = 42 + +test_errno() returned 1, ERRNO = No child processes + +fubar = 9 +rumpus = -5 +uid matches 1 +api_major matches 1 +test_deferred returns 1 + +length of test_array is 10, should be 10 +test_array_size: incoming size is 10 +test_array_size() returned 1, length is now 0 + +test_array_elem: a["3"] = "three" +test_array_elem() returned 1, test_array2[3] = 42 +test_array_elem() did remove element "5" +test_array_elem() added element "7" --> seven +test_array2["subarray"]["hello"] = world +test_array2["subarray"]["answer"] = 42 + +test_array_param() returned 1 +isarray(a_new_array) = 1 +a_new_array["hello"] = world +a_new_array["answer"] = 42 +test_array_param: argument is not undefined (1) +test_array_param() returned 0 +isarray(a_scalar) = 0 + +Initial value of LINT is 0 +print_do_lint: lint = 0 +print_do_lint() returned 1 +Changed value of LINT is 1 +print_do_lint: lint = 1 +print_do_lint() returned 1 + +test_scalar(7) returned 1, the_scalar is 7 +test_scalar(9) returned 1, the_scalar is 9 +test_scalar(11) returned 1, the_scalar is 11 +test_scalar(1) returned 1, the_scalar is 1 +test_scalar(3) returned 1, the_scalar is 3 +test_scalar(5) returned 1, the_scalar is 5 +test_scalar(fox) returned 1, the_scalar is fox +test_scalar(jumps) returned 1, the_scalar is jumps +test_scalar(over) returned 1, the_scalar is over +test_scalar(the) returned 1, the_scalar is the +test_scalar(lazy) returned 1, the_scalar is lazy +test_scalar(dog) returned 1, the_scalar is dog +test_scalar(the) returned 1, the_scalar is the +test_scalar(quick) returned 1, the_scalar is quick +test_scalar(brown) returned 1, the_scalar is brown +test_scalar_reserved: sym_lookup of ARGC passed - got a value! +test_scalar_reserved: could not update new_value2 for ARGC - pass +test_indirect_var: sym_lookup of NR passed +test_indirect_var: value of NR is 3 +test_indirect_var() return 1 + +test_get_file returned 0 +File [.test.alias] nr [1]: line 1 +File [.test.alias] nr [2]: line 2 +File [.test.alias] nr [3]: line 3 + +answer_num = 42 +message_string = hello, world +new_array["hello"] = "world" +new_array["answer"] = "42" + +test::testval = in namespace test +test::test_function() called. + +at_exit2 called (should be first): data = NULL, exit_status = 0 +at_exit1 called (should be second): (data is & data_for_1), data value = 0xdeadbeef, exit_status = 0 +at_exit0 called (should be third): data = NULL, exit_status = 0 diff -urN gawk-5.1.0/test/typeof6.awk gawk-5.1.1/test/typeof6.awk --- gawk-5.1.0/test/typeof6.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/typeof6.awk 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1,46 @@ + +BEGIN{ + + A[ "any index" ] = 1 # any number + + for ( i in A ) { + + v = A[ i ] + + gensub( /^/, "1", 1, v ) + + #gsub( /^dfsdfs/, "1", v ) + + #sub( /^/, "1", v ) + + if ( typeof( A[ i ] ) == "unknown" ) + + print "ERROR: A[ " i " ] == " A[ i ] "'" } + + v = A[ "any index" ] + + print typeof( v ) + + } + + + +# GNU Awk 5.1.0, API: 3.0 (GNU MPFR 3.1.5, GNU MP 6.1.2) +# Copyright (C) 1989, 1991-2020 Free Software Foundation. +# +# Windows 10x64 +# +# here is the typeof() error reproducing script +# it is actual for: gensub(), gsub() and sub() built-ins +# +# please pay attention that: v = A[ i ] is doesn't matter +# you may apply built-ins at A[ i ] directly with the same +# result +# +# with Respect +# +# Denis Shirokov (2021.9.5) + + + + diff -urN gawk-5.1.0/test/typeof6.ok gawk-5.1.1/test/typeof6.ok --- gawk-5.1.0/test/typeof6.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-5.1.1/test/typeof6.ok 2021-09-15 14:56:13.000000000 +0300 @@ -0,0 +1 @@ +number diff -urN gawk-5.1.0/test/watchpoint1.ok gawk-5.1.1/test/watchpoint1.ok --- gawk-5.1.0/test/watchpoint1.ok 2019-08-28 21:43:07.000000000 +0300 +++ gawk-5.1.1/test/watchpoint1.ok 2020-08-28 14:48:06.000000000 +0300 @@ -17,7 +17,7 @@ 2: nr = untyped variable 3: NR = 0 Breakpoint 2 set at file `watchpoint1.awk', line 6 -Starting program: +Starting program: Stopping in Rule ... Watchpoint 1: c Old value: untyped variable diff -urN gawk-5.1.0/test/xref.awk gawk-5.1.1/test/xref.awk --- gawk-5.1.0/test/xref.awk 2017-12-14 19:53:45.000000000 +0200 +++ gawk-5.1.1/test/xref.awk 2020-10-09 14:41:06.000000000 +0300 @@ -3,6 +3,8 @@ # 12/2010: Modified for gawk test suite to use a variable # for the sort command and to use `sort -k1' instead of `sort +1' + # 10/2020: Bug fix applied to code. + BEGIN { if (sortcmd == "") sortcmd = "sort" # "sort -k1" @@ -121,15 +123,15 @@ else if ( line ~ /^}/ ) { tok = "}"; line = substr(line,2); return 3 } # change regexes to use posix character classes - else if ( match(line,/^[[:alpha:]_][[:alnum:]]*\[/) ) { + else if ( match(line,/^[[:alpha:]_][[:alnum:]_]*\[/) ) { tok = substr(line,1,RLENGTH-1) line = substr(line,RLENGTH+1) return 5 } - else if ( match(line,/^[[:alpha:]_][[:alnum:]]*\(/) ) { + else if ( match(line,/^[[:alpha:]_][[:alnum:]_]*\(/) ) { tok = substr(line,1,RLENGTH-1) line = substr(line,RLENGTH+1) if ( ! ( tok in keywords ) ) return 6 } - else if ( match(line,/^[[:alpha:]_][[:alnum:]]*/) ) { + else if ( match(line,/^[[:alpha:]_][[:alnum:]_]*/) ) { tok = substr(line,1,RLENGTH) line = substr(line,RLENGTH+1) if ( ! ( tok in keywords ) ) return 4 } diff -urN gawk-5.1.0/TODO gawk-5.1.1/TODO --- gawk-5.1.0/TODO 2020-03-18 22:23:28.000000000 +0200 +++ gawk-5.1.1/TODO 2020-08-28 14:48:15.000000000 +0300 @@ -1,4 +1,4 @@ -Wed Mar 18 22:05:22 IST 2020 +Thu Aug 20 12:18:22 IDT 2020 ============================ There were too many files tracking different thoughts and ideas for @@ -15,9 +15,6 @@ Minor Cleanups and Code Improvements ------------------------------------ - Allow SYMTAB and FUNCTAB as arguments to asort/asorti if a - destination array is provided. - API: ??? #if !defined(GAWK) && !defined(GAWK_OMIT_CONVENIENCE_MACROS) @@ -30,14 +27,10 @@ Fully synchronize whitespace tests (for \s, \S in Unicode environment) with those of GNU grep. - See if something like b = a "" can be optimized to not do - a concatenation, but instead just set STRCUR on a. - - Message cleanup: - * Messages in debug.c start with capital letters, but not in - other files. + Lint option which would allow extensions and only complain + about genuine errors. - * Messages are inconsistent about final punctuation (periods etc.) + Go through the FIXMEs in the manual and fix as many as possible. Minor New Features ------------------ @@ -127,6 +120,10 @@ Things That We Decided We Will Never Do ======================================= + See if something like b = a "" can be optimized to not do + a concatenation, but instead just set STRCUR on a. + (Tried this; the type of b doesn't come out correctly.) + Consider moving var_value info into Node_var itself to reduce memory usage. This would break all uses of get_lhs in the code. It's too sweeping a change. diff -urN gawk-5.1.0/vms/ChangeLog gawk-5.1.1/vms/ChangeLog --- gawk-5.1.0/vms/ChangeLog 2020-04-14 14:42:21.000000000 +0300 +++ gawk-5.1.1/vms/ChangeLog 2021-10-27 07:53:49.000000000 +0300 @@ -1,3 +1,20 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + +2021-07-26 John E. Malmberg + + * descrip.mms: Add dynarray_resize to build. + * vmsbuild.com: Add dynarray_resize to build. + +2021-01-08 Arnold D. Robbins + + * gawkmisc.vms (quote): Make const char *. + (defpath): Make const char *. + (deflibpath): Make const char *. + (envsep): Make const char *. + (gawk_name): Now returns const char *. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/vms/descrip.mms gawk-5.1.1/vms/descrip.mms --- gawk-5.1.0/vms/descrip.mms 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/vms/descrip.mms 2021-07-28 22:07:24.000000000 +0300 @@ -38,10 +38,11 @@ # # location of various source files, relative to the 'main' directory -SUPPORT = [.support] -VMSDIR = [.vms] -DOCDIR = [.doc] -MISSNGD = [.missing_d] +MALLOC = sys$disk:[.support.malloc] +SUPPORT = sys$disk:[.support] +VMSDIR = sys$disk:[.vms] +DOCDIR = sys$disk:[.doc] +MISSNGD = sys$disk:[.missing_d] MAKEFILE = $(VMSDIR)Descrip.MMS # debugging &c !'ccflags' is an escape to allow external compile flags @@ -53,6 +54,11 @@ .ifdef GNUC # assumes VAX +# GCC has not been tested for decades. +# GCC/VAX since OpenVMS 5.5 can use the AACRTL060 redistributable +# kit instead of vaxcrtl.olb for much better results. +# This will likely need a lot of changes if GCC is re-implemented +# for OpenVMS. CC = gcc CFLAGS = /Incl=([],$(VMSDIR))/Obj=[]/Def=($(CDEFS)) $(CCFLAGS) LIBS = gnu_cc:[000000]gcclib.olb/Library,sys$library:vaxcrtl.olb/Library @@ -64,6 +70,10 @@ .else !!GNUC .ifdef VAXC # always VAX; versions of VAX C older than V3.2 won't work +# VAXC SUPPORT will likely be removed in a future release +# VAXC should not be used past OpenVMS/VAX 5.4 +# Before VAX 5.4 consider using GCC/VAX +# Obviously this has also not been tested for decades CC = cc CFLAGS = /Incl=[]/Obj=[]/Opt=noInline/Def=($(CDEFS)) $(CCFLAGS) LIBS = sys$share:vaxcrtl.exe/Shareable @@ -76,7 +86,7 @@ .endif CNAME = /NAME=(AS_IS,SHORT) CC = cc/DECC/Prefix=All/NESTED_INCLUDE=NONE$(CFLOAT) -CINC1 = [],[.VMS],$(SUPPORT) +CINC1 = sys$disk:[],sys$disk:[.VMS],$(SUPPORT) CFLAGS = /Incl=($(CINC1))/Obj=[]/Def=($(CDEFS))$(CNAME) $(CCFLAGS) CEFLAGS = /Incl=($(CINC1),[.missing_d],[.extension])$(CNAME) $(CCFLAGS) LIBS = # DECC$SHR instead of VAXCRTL, no special link option needed @@ -104,7 +114,7 @@ # object files GAWKOBJ = eval.obj,profile.obj AWKOBJ1 = array.obj,awkgram.obj,builtin.obj,cint_array.obj,\ - command.obj,debug.obj,dfa.obj,ext.obj,field.obj,\ + command.obj,debug.obj,dfa.obj,dynarrray_resize.obj,ext.obj,field.obj,\ floatcomp.obj,gawkapi.obj,gawkmisc.obj,getopt.obj,getopt1.obj AWKOBJ2 = int_array.obj,io.obj,localeinfo.obj,main.obj,mpfr.obj,msg.obj,\ @@ -171,6 +181,11 @@ command.obj : command.c cmd.h debug.obj : debug.c cmd.h dfa.obj : $(SUPPORT)dfa.c $(SUPPORT)dfa.h + +dynarrray_resize.obj : $(MALLOC)dynarray_resize.c $(MALLOC)dynarray.h + $define/user malloc $(MALLOC) + $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE) + ext.obj : ext.c eval.obj : eval.c field.obj : field.c @@ -189,9 +204,14 @@ profile.obj : profile.c random.obj : $(SUPPORT)random.c $(SUPPORT)random.h re.obj : re.c + regex.obj : $(SUPPORT)regex.c $(SUPPORT)regcomp.c \ $(SUPPORT)regex_internal.c $(SUPPORT)regexec.c \ - $(SUPPORT)regex.h $(SUPPORT)regex_internal.h + $(SUPPORT)regex.h $(SUPPORT)regex_internal.h \ + $(MALLOC)dynarray.h + $define/user malloc $(MALLOC) + $(CC)$(CEFLAGS)/define=(HAVE_CONFIG_H)/object=$(MMS$TARGET) $(MMS$SOURCE) + str_array.obj : str_array.c symbol.obj : symbol.c version.obj : version.c diff -urN gawk-5.1.0/vms/gawkmisc.vms gawk-5.1.1/vms/gawkmisc.vms --- gawk-5.1.0/vms/gawkmisc.vms 2017-12-14 19:53:46.000000000 +0200 +++ gawk-5.1.1/vms/gawkmisc.vms 2021-10-27 07:51:03.000000000 +0300 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-1996, 2003, 2011, 2014 + * Copyright (C) 1986, 1988, 1989, 1991-1996, 2003, 2011, 2014, 2021, * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -79,10 +79,10 @@ const unsigned char * acmode, const struct item_list_3 * item_list); -char quote = '\''; -char *defpath = DEFPATH; -char *deflibpath = DEFLIBPATH; -char envsep = ','; +const char quote = '\''; +const char *defpath = DEFPATH; +const char *deflibpath = DEFLIBPATH; +const char envsep = ','; #define VMS_NAME_LEN 255 static char vms_name[VMS_NAME_LEN+1]; @@ -132,7 +132,7 @@ * passed exec() argv[0] and handle both cases. */ -char * +const char * gawk_name(filespec) const char *filespec; { diff -urN gawk-5.1.0/vms/vax/ChangeLog gawk-5.1.1/vms/vax/ChangeLog --- gawk-5.1.0/vms/vax/ChangeLog 2020-04-14 14:42:24.000000000 +0300 +++ gawk-5.1.1/vms/vax/ChangeLog 2021-10-27 07:53:52.000000000 +0300 @@ -1,3 +1,7 @@ +2021-10-27 Arnold D. Robbins + + * 5.1.1: Release tar ball made. + 2020-04-14 Arnold D. Robbins * 5.1.0: Release tar ball made. diff -urN gawk-5.1.0/vms/vmsbuild.com gawk-5.1.1/vms/vmsbuild.com --- gawk-5.1.0/vms/vmsbuild.com 2019-08-28 21:54:15.000000000 +0300 +++ gawk-5.1.1/vms/vmsbuild.com 2021-07-28 22:07:24.000000000 +0300 @@ -19,7 +19,8 @@ $! assumes VAX $ CC = "gcc" $ if f$type(gcc).eqs."STRING" then CC = gcc -$ CFLAGS = "/Incl=([],[.vms],[.SUPPORT])/Obj=[]/Def=(''CDEFS')''CCFLAGS'" +$ CFLAGS = "/Incl=([],[.vms],[.SUPPORT],[.SUPPORT.MALLOC])" +$ CFLAGS = CFLAGS + "/Obj=[]/Def=(''CDEFS')''CCFLAGS'" $ LIBS = "gnu_cc:[000000]gcclib.olb/Library,sys$library:vaxcrtl.olb/Library" $ if p2.eqs."DO_GNUC_SETUP" then set command gnu_cc:[000000]gcc $ else !!GNUC @@ -41,7 +42,7 @@ $ CC = "cc/DECC/Prefix=All" $ CNAME = "/NAME=(AS_IS,SHORT) $ CINC = "/NESTED_INCLUDE=NONE" -$ CINC1 = "[],[.vms],[.support]" +$ CINC1 = "[],[.vms],[.support],[.support.malloc]" $ CFLAGS = "/Incl=(''CINC1')/Obj=[]/Def=(''CDEFS')''CINC'''CCFLAGS'" $ CFLAGS = CNAME + CFLOAT + CFLAGS $ LIBS = "" ! DECC$SHR instead of VAXCRTL, no special link option needed @@ -82,6 +83,8 @@ $ cc awkgram.c $ cc builtin.c $ cc [.support]dfa.c +$ define/user malloc sys$disk:[.support.malloc] +$ cc [.support.malloc]dynarray_resize.c $ cc ext.c $ cc field.c $ cc floatcomp.c @@ -95,6 +98,7 @@ $ cc node.c $ cc [.support]random.c $ cc re.c +$ define/user malloc sys$disk:[.support.malloc] $ cc [.support]regex.c $ cc replace.c $ cc version.c @@ -121,7 +125,8 @@ $ close/noLog Fopt $ create gawk.opt ! GAWK -- GNU awk -array.obj,awkgram.obj,builtin.obj,dfa.obj,ext.obj,field.obj,floatcomp.obj +array.obj,awkgram.obj,builtin.obj,dfa.obj,dynarray_resize.obj +ext.obj,field.obj,floatcomp.obj gawkmisc.obj,getopt.obj,getopt1.obj,io.obj,localeinfo.obj main.obj,msg.obj,node.obj random.obj,re.obj,regex.obj,replace.obj,version.obj,eval.obj,profile.obj EOF # Final cleanup echo Sleeping and touching files to update timestamps. # touch list of zero length files sleep 2 touch aclocal.m4 extension/aclocal.m4 configh.in extension/configh.in touch test/Makefile.in touch awklib/Makefile.in doc/Makefile.in extension/Makefile.in Makefile.in sleep 2 touch configure extension/configure sleep 2 touch version.c echo Remove any .orig or "'~'" files that may remain. echo Use '"configure && make"' to rebuild any dependent files. echo Use "'make distclean'" to clean up.